Imported Upstream version 2.7.1 upstream/2.7.1
authorKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Tue, 4 Nov 2014 08:49:31 +0000 (09:49 +0100)
committerKévin THIERRY <kevin.thierry@open.eurogiciel.org>
Tue, 4 Nov 2014 08:49:31 +0000 (09:49 +0100)
795 files changed:
._GNUmakefile [deleted file]
._INSTALL [deleted file]
.prev-version
.tarball-version
.version
AUTHORS
ChangeLog
ChangeLog-2012
GNUmakefile
INSTALL
Makefile.am
Makefile.in
NEWS
PACKAGING
README
README-alpha [deleted file]
README-release
THANKS
TODO
aclocal.m4
build-aux/Makefile.am
build-aux/Makefile.in
build-aux/announce-gen
build-aux/compile
build-aux/config.guess
build-aux/config.rpath
build-aux/config.sub
build-aux/darwin11.4.0.valgrind
build-aux/depcomp
build-aux/do-release-commit-and-tag
build-aux/gendocs.sh
build-aux/git-version-gen
build-aux/gitlog-to-changelog
build-aux/gnu-web-doc-update
build-aux/gnupload
build-aux/javacomp.sh.in
build-aux/javaexec.sh.in
build-aux/mdate-sh
build-aux/missing
build-aux/snippet/arg-nonnull.h
build-aux/snippet/c++defs.h
build-aux/snippet/warn-on-use.h
build-aux/test-driver [new file with mode: 0755]
build-aux/texinfo.tex
build-aux/update-b4-copyright
build-aux/update-copyright
build-aux/useless-if-before-free
build-aux/vc-list-files
build-aux/ylwrap
cfg.mk
configure
configure.ac
data/Makefile.am
data/Makefile.in
data/README
data/bison.m4
data/c++-skel.m4
data/c++.m4
data/c-like.m4
data/c-skel.m4
data/c.m4
data/glr.c
data/glr.cc
data/java-skel.m4
data/java.m4
data/lalr1.cc
data/lalr1.java
data/location.cc
data/m4sugar/m4sugar.m4
data/stack.hh
data/xslt/bison.xsl
data/xslt/xml2dot.xsl
data/xslt/xml2text.xsl
data/xslt/xml2xhtml.xsl
data/yacc.c
djgpp/Makefile.maint
djgpp/README.in
djgpp/config.bat
djgpp/config.sed
djgpp/config.site
djgpp/config_h.sed
djgpp/djunpack.bat
djgpp/subpipe.c
djgpp/subpipe.h
djgpp/testsuite.sed
doc/Doxyfile.in
doc/Makefile.am
doc/Makefile.in
doc/bison.1
doc/bison.info
doc/bison.info-1 [deleted file]
doc/bison.info-2 [deleted file]
doc/bison.texi
doc/cross-options.texi
doc/figs/example-reduce.dot [new file with mode: 0644]
doc/figs/example-reduce.eps [new file with mode: 0644]
doc/figs/example-reduce.pdf [new file with mode: 0644]
doc/figs/example-reduce.png [new file with mode: 0644]
doc/figs/example-shift.dot [new file with mode: 0644]
doc/figs/example-shift.eps [new file with mode: 0644]
doc/figs/example-shift.pdf [new file with mode: 0644]
doc/figs/example-shift.png [new file with mode: 0644]
doc/figs/example.dot [new file with mode: 0644]
doc/figs/example.eps [new file with mode: 0644]
doc/figs/example.pdf [new file with mode: 0644]
doc/figs/example.png [new file with mode: 0644]
doc/figs/example.y [new file with mode: 0644]
doc/gpl-3.0.texi
doc/refcard.tex
doc/stamp-vti
doc/version.texi
etc/Makefile.am
etc/Makefile.in
etc/README
etc/bench.pl.in
examples/Makefile.am
examples/Makefile.in
examples/calc++/Makefile.am
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++-scanner.ll
examples/calc++/calc++.cc
examples/calc++/location.hh
examples/calc++/position.hh
examples/calc++/stack.hh
examples/calc++/test
examples/extexi
lib/Makefile.am
lib/Makefile.in
lib/abitset.c
lib/abitset.h
lib/alloca.in.h
lib/argmatch.c
lib/argmatch.h
lib/asnprintf.c
lib/basename-lgpl.c
lib/basename.c
lib/bbitset.h
lib/binary-io.c [new file with mode: 0644]
lib/binary-io.h
lib/bitrotate.c [new file with mode: 0644]
lib/bitrotate.h
lib/bitset.c
lib/bitset.h
lib/bitset_stats.c
lib/bitset_stats.h
lib/bitsetv-print.c
lib/bitsetv-print.h
lib/bitsetv.c
lib/bitsetv.h
lib/c-ctype.c
lib/c-ctype.h
lib/c-strcase.h
lib/c-strcasecmp.c
lib/c-strcaseeq.h
lib/c-strncasecmp.c
lib/calloc.c
lib/cloexec.c
lib/cloexec.h
lib/close-stream.c
lib/close.c
lib/closeout.c
lib/closeout.h
lib/config.charset
lib/config.in.h
lib/dirname-lgpl.c
lib/dirname.c
lib/dirname.h
lib/dosname.h
lib/dup-safer-flag.c
lib/dup-safer.c
lib/dup2.c
lib/ebitset.c
lib/ebitset.h
lib/errno.in.h
lib/error.c
lib/error.h
lib/exitfail.c
lib/exitfail.h
lib/fatal-signal.c
lib/fatal-signal.h
lib/fcntl.c
lib/fcntl.in.h
lib/fd-hook.c
lib/fd-hook.h
lib/fd-safer-flag.c
lib/fd-safer.c
lib/float+.h
lib/float.c
lib/float.in.h
lib/fopen-safer.c
lib/fopen.c
lib/fpending.c
lib/fpending.h
lib/fprintf.c
lib/fpucw.h
lib/frexp.c
lib/frexpl.c
lib/fseterr.c
lib/fseterr.h
lib/fstat.c
lib/get-errno.c
lib/get-errno.h
lib/getdelim.c [new file with mode: 0644]
lib/getdtablesize.c
lib/getline.c [new file with mode: 0644]
lib/getopt.c
lib/getopt.in.h
lib/getopt1.c
lib/getopt_int.h
lib/gettext.h
lib/glthread/lock.c
lib/glthread/lock.h
lib/glthread/threadlib.c
lib/gnulib.mk
lib/hash.c
lib/hash.h
lib/intprops.h
lib/inttypes.in.h
lib/isnan.c
lib/isnand-nolibm.h
lib/isnand.c
lib/isnanf-nolibm.h
lib/isnanf.c
lib/isnanl-nolibm.h
lib/isnanl.c
lib/iswblank.c
lib/itold.c
lib/lbitset.c
lib/lbitset.h
lib/ldexpl.c
lib/libiberty.h
lib/localcharset.c
lib/localcharset.h
lib/main.c
lib/malloc.c
lib/math.c [new file with mode: 0644]
lib/math.in.h
lib/mbchar.c
lib/mbchar.h
lib/mbrtowc.c
lib/mbschr.c
lib/mbsinit.c
lib/mbsrchr.c
lib/mbswidth.c
lib/mbswidth.h
lib/mbuiter.c [new file with mode: 0644]
lib/mbuiter.h
lib/memchr.c
lib/msvc-inval.c
lib/msvc-inval.h
lib/msvc-nothrow.c
lib/msvc-nothrow.h
lib/obstack.c
lib/obstack.h
lib/obstack_printf.c
lib/open.c
lib/pathmax.h
lib/perror.c
lib/pipe-safer.c
lib/pipe2-safer.c
lib/pipe2.c
lib/printf-args.c
lib/printf-args.h
lib/printf-frexp.c
lib/printf-frexp.h
lib/printf-frexpl.c
lib/printf-frexpl.h
lib/printf-parse.c
lib/printf-parse.h
lib/printf.c
lib/progname.c
lib/progname.h
lib/quote.h
lib/quotearg.c
lib/quotearg.h
lib/raise.c
lib/rawmemchr.c
lib/realloc.c
lib/ref-add.sin
lib/ref-del.sin
lib/sched.in.h
lib/sig-handler.c [new file with mode: 0644]
lib/sig-handler.h
lib/sigaction.c
lib/signal.in.h
lib/signbitd.c
lib/signbitf.c
lib/signbitl.c
lib/sigprocmask.c
lib/size_max.h
lib/snprintf.c
lib/spawn-pipe.c
lib/spawn-pipe.h
lib/spawn.in.h
lib/spawn_faction_addclose.c
lib/spawn_faction_adddup2.c
lib/spawn_faction_addopen.c
lib/spawn_faction_destroy.c
lib/spawn_faction_init.c
lib/spawn_int.h
lib/spawnattr_destroy.c
lib/spawnattr_init.c
lib/spawnattr_setflags.c
lib/spawnattr_setsigmask.c
lib/spawni.c
lib/spawnp.c
lib/sprintf.c
lib/stat.c
lib/stdbool.in.h
lib/stddef.in.h
lib/stdint.in.h
lib/stdio--.h
lib/stdio-impl.h
lib/stdio-safer.h
lib/stdio.in.h
lib/stdlib.in.h
lib/stpcpy.c
lib/strchrnul.c
lib/strdup.c
lib/streq.h
lib/strerror-override.c
lib/strerror-override.h
lib/strerror.c
lib/strerror_r.c
lib/string.in.h
lib/stripslash.c
lib/strndup.c
lib/strnlen.c
lib/strnlen1.c
lib/strnlen1.h
lib/strtol.c
lib/strtoul.c
lib/strverscmp.c
lib/sys_stat.in.h
lib/sys_types.in.h
lib/sys_wait.in.h
lib/time.in.h
lib/timevar.c
lib/timevar.def
lib/timevar.h
lib/unistd--.h
lib/unistd-safer.h
lib/unistd.c [new file with mode: 0644]
lib/unistd.in.h
lib/unitypes.in.h
lib/uniwidth.in.h
lib/uniwidth/cjk.h
lib/uniwidth/width.c
lib/unlocked-io.h
lib/unsetenv.c
lib/vasnprintf.c
lib/vasnprintf.h
lib/vbitset.c
lib/vbitset.h
lib/verify.h
lib/vfprintf.c
lib/vsnprintf.c
lib/vsprintf.c
lib/w32spawn.h
lib/wait-process.c
lib/wait-process.h
lib/waitpid.c
lib/wchar.in.h
lib/wctype-h.c [new file with mode: 0644]
lib/wctype.in.h
lib/wcwidth.c
lib/xalloc-die.c
lib/xalloc-oversized.h
lib/xalloc.h
lib/xmalloc.c
lib/xmemdup0.c
lib/xmemdup0.h
lib/xsize.c [new file with mode: 0644]
lib/xsize.h
lib/xstrndup.c
lib/xstrndup.h
lib/yyerror.c
m4/00gnulib.m4
m4/alloca.m4
m4/asm-underscore.m4
m4/assert.m4
m4/bison-i18n.m4
m4/c-working.m4
m4/calloc.m4
m4/close-stream.m4
m4/close.m4
m4/closeout.m4
m4/codeset.m4
m4/config-h.m4
m4/configmake.m4
m4/cxx.m4
m4/dirname.m4
m4/double-slash-root.m4
m4/dup2.m4
m4/environ.m4
m4/errno_h.m4
m4/error.m4
m4/exponentd.m4
m4/exponentf.m4
m4/exponentl.m4
m4/extensions.m4
m4/extern-inline.m4 [new file with mode: 0644]
m4/fatal-signal.m4
m4/fcntl-o.m4
m4/fcntl.m4
m4/fcntl_h.m4
m4/flex.m4
m4/float_h.m4
m4/fopen.m4
m4/fpending.m4
m4/fpieee.m4
m4/fprintf-posix.m4
m4/frexp.m4
m4/frexpl.m4
m4/fseterr.m4
m4/fstat.m4
m4/getdelim.m4 [new file with mode: 0644]
m4/getdtablesize.m4
m4/getline.m4 [new file with mode: 0644]
m4/getopt.m4
m4/gettext.m4
m4/glibc21.m4
m4/gnulib-common.m4
m4/gnulib-comp.m4
m4/iconv.m4
m4/include_next.m4
m4/inline.m4 [deleted file]
m4/intlmacosx.m4
m4/intmax_t.m4
m4/inttypes-pri.m4
m4/inttypes.m4
m4/inttypes_h.m4
m4/isnan.m4
m4/isnand.m4
m4/isnanf.m4
m4/isnanl.m4
m4/iswblank.m4
m4/javacomp.m4
m4/javaexec.m4
m4/largefile.m4
m4/ldexp.m4
m4/ldexpl.m4
m4/lib-ld.m4
m4/lib-link.m4
m4/lib-prefix.m4
m4/libunistring-base.m4
m4/localcharset.m4
m4/locale-fr.m4
m4/locale-ja.m4
m4/locale-zh.m4
m4/lock.m4
m4/longlong.m4
m4/m4.m4
m4/malloc.m4
m4/math_h.m4
m4/mbchar.m4
m4/mbiter.m4
m4/mbrtowc.m4
m4/mbsinit.m4
m4/mbstate_t.m4
m4/mbswidth.m4
m4/memchr.m4
m4/mmap-anon.m4
m4/mode_t.m4
m4/msvc-inval.m4
m4/msvc-nothrow.m4
m4/multiarch.m4
m4/nls.m4
m4/nocrash.m4
m4/obstack-printf.m4
m4/off_t.m4
m4/open.m4
m4/pathmax.m4
m4/perror.m4
m4/pipe2.m4
m4/po.m4
m4/posix_spawn.m4
m4/printf-frexp.m4
m4/printf-frexpl.m4
m4/printf-posix-rpl.m4
m4/printf.m4
m4/progtest.m4
m4/quote.m4
m4/quotearg.m4
m4/raise.m4
m4/rawmemchr.m4
m4/realloc.m4
m4/sched_h.m4
m4/setenv.m4
m4/sig_atomic_t.m4
m4/sigaction.m4
m4/signal_h.m4
m4/signalblocking.m4
m4/signbit.m4
m4/size_max.m4
m4/snprintf-posix.m4
m4/snprintf.m4
m4/spawn-pipe.m4
m4/spawn_h.m4
m4/sprintf-posix.m4
m4/ssize_t.m4
m4/stat.m4
m4/stdbool.m4
m4/stddef_h.m4
m4/stdint.m4
m4/stdint_h.m4
m4/stdio_h.m4
m4/stdlib_h.m4
m4/stpcpy.m4
m4/strchrnul.m4
m4/strdup.m4
m4/strerror.m4
m4/strerror_r.m4
m4/string_h.m4
m4/strndup.m4
m4/strnlen.m4
m4/strtoul.m4
m4/strverscmp.m4
m4/sys_socket_h.m4
m4/sys_stat_h.m4
m4/sys_types_h.m4
m4/sys_wait_h.m4
m4/threadlib.m4
m4/time_h.m4
m4/timevar.m4
m4/unistd-safer.m4
m4/unistd_h.m4
m4/unlocked-io.m4
m4/vasnprintf.m4
m4/vfprintf-posix.m4
m4/vsnprintf-posix.m4
m4/vsnprintf.m4
m4/vsprintf-posix.m4
m4/wait-process.m4
m4/waitpid.m4
m4/warn-on-use.m4
m4/warnings.m4
m4/wchar_h.m4
m4/wchar_t.m4
m4/wctype_h.m4
m4/wcwidth.m4
m4/wint_t.m4
m4/xalloc.m4
m4/xsize.m4
m4/xstrndup.m4
maint.mk
po/LINGUAS
po/Makefile.in.in
po/POTFILES.in
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/sr.gmo [new file with mode: 0644]
po/sr.po [new file with mode: 0644]
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/LINGUAS
runtime-po/Makefile.in.in
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/sq.gmo [new file with mode: 0644]
runtime-po/sq.po [new file with mode: 0644]
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/AnnotationList.c
src/AnnotationList.h
src/InadequacyList.c
src/InadequacyList.h
src/LR0.c
src/LR0.h
src/Makefile.am
src/Makefile.in
src/Sbitset.c
src/Sbitset.h
src/assoc.c
src/assoc.h
src/closure.c
src/closure.h
src/complain.c
src/complain.h
src/conflicts.c
src/conflicts.h
src/derives.c
src/derives.h
src/files.c
src/files.h
src/flex-scanner.h
src/getargs.c
src/getargs.h
src/gram.c
src/gram.h
src/graphviz.c
src/graphviz.h
src/ielr.c
src/ielr.h
src/lalr.c
src/lalr.h
src/location.c
src/location.h
src/main.c
src/muscle-tab.c
src/muscle-tab.h
src/named-ref.c
src/named-ref.h
src/nullable.c
src/nullable.h
src/output.c
src/output.h
src/parse-gram.c
src/parse-gram.h
src/parse-gram.y
src/print-xml.c
src/print-xml.h
src/print.c
src/print.h
src/print_graph.c
src/print_graph.h
src/reader.c
src/reader.h
src/reduce.c
src/reduce.h
src/relation.c
src/relation.h
src/scan-code.c
src/scan-code.h
src/scan-code.l
src/scan-gram.c
src/scan-gram.h
src/scan-gram.l
src/scan-skel.c
src/scan-skel.h
src/scan-skel.l
src/state.c
src/state.h
src/symlist.c
src/symlist.h
src/symtab.c
src/symtab.h
src/system.h
src/tables.c
src/tables.h
src/uniqstr.c
src/uniqstr.h
tests/Makefile.am
tests/Makefile.in
tests/actions.at
tests/atlocal.in
tests/bison.in
tests/c++.at
tests/calc.at
tests/conflicts.at
tests/cxx-type.at
tests/existing.at
tests/glr-regression.at
tests/headers.at
tests/input.at
tests/java.at
tests/local.at
tests/named-refs.at
tests/output.at
tests/package.m4
tests/push.at
tests/reduce.at
tests/regression.at
tests/sets.at
tests/skeletons.at
tests/synclines.at
tests/testsuite
tests/testsuite.at
tests/torture.at

diff --git a/._GNUmakefile b/._GNUmakefile
deleted file mode 100644 (file)
index 407412f..0000000
Binary files a/._GNUmakefile and /dev/null differ
diff --git a/._INSTALL b/._INSTALL
deleted file mode 100644 (file)
index 407412f..0000000
Binary files a/._INSTALL and /dev/null differ
index 6a6a3d8..1effb00 100644 (file)
@@ -1 +1 @@
-2.6.1
+2.7
index 097a15a..860487c 100644 (file)
@@ -1 +1 @@
-2.6.2
+2.7.1
index 097a15a..bf868c6 100644 (file)
--- a/.version
+++ b/.version
@@ -1 +1 @@
-2.6.2
+2.7.12-4996
diff --git a/AUTHORS b/AUTHORS
index 806b144..fa4b171 100644 (file)
--- a/AUTHORS
+++ b/AUTHORS
@@ -24,7 +24,7 @@ and nasty bugs.
 
 -----
 
-Copyright (C) 1998-2012 Free Software Foundation, Inc.
+Copyright (C) 1998-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
index c958207..e2093bd 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
+2013-04-15  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.7.1
+       * NEWS: Record release date.
+
+2013-04-15  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       glr.cc: fix a clang warning
+       * data/glr.cc (b4_epilogue): Be sure to end with an end-of-line,
+       so that the file does end with one.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: update copyright years
+       Run "make update-copyright".
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: fix VPATH issue
+       * Makefile.am (update-b4-copyright, update-package-copyright-year): Fix
+       path to build-aux.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: avoid clang's colored diagnostics in the test suite
+       The syncline tests, which try to recognize compiler diagnostics,
+       are confused by escapes for colors.
+
+       * configure.ac (warn_tests): New, to factor the warnings for both
+       C and C++ tests.
+       Add -fno-color-diagnostics to it.
+       * tests/local.at (AT_TEST_TABLES_AND_PARSE): Do not remove glue
+       together compiler flags.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: please clang and use ".cc", not ".c", for C++ input
+       When fed with foo.c, clang++ 3.2 answers:
+
+         clang: error: treating 'c' input as 'c++' when in C++ mode,
+                       this behavior is deprecated
+
+       * tests/output.at (AT_CHECK_OUTPUT_FILE_NAME): Use *.cc and *.hh
+       for C++.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       skeletons: avoid empty switch constructs
+       Reported by Rob Conde.
+       http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html
+
+       * data/c.m4 (b4_symbol_actions): Rename as...
+       (_b4_symbol_actions): this.
+       (b4_symbol_actions): New wrapper.
+       Do not emit empty switches.
+       Adjust all b4_symbol_actions callers.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: fix compiler warnings
+       Reported by Rob Conde.
+       http://lists.gnu.org/archive/html/bug-bison/2013-03/msg00003.html
+
+       * data/stack.hh (operator=, stack(const stack&)): Make this class
+       uncopyable, i.e., "undefine" these operators: make them private and
+       don't implement them.
+       (clear): New.
+       * data/lalr1.cc: Use it instead of an assignment.
+       (parser): Make this class uncopyable.
+
+2013-04-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: do not use __attribute__ unprotected
+       Reported by Victor Khomenko.
+       http://lists.gnu.org/archive/html/bug-bison/2013-04/msg00001.html
+
+       * data/glr.c (YYUSE, __attribute__): Fuse their definition into...
+       * data/c.m4 (b4_attribute_define): this new macro.
+       * data/yacc.c, data/glr.c: Use it.
+
+2012-12-15  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: style changes
+       * tests/glr-regression.at: Issue yyerror before yylex.
+
+2012-12-13  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: credit Wojciech Polak
+       * NEWS, THANKS: He is the author of XML support (including XSLTs).
+
+2012-12-12  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-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.7
+       * NEWS: Record release date.
+
+2012-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: scope reduction
+       * data/yacc.c (yysyntax_error): here.
+
+2012-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: C90 compliance
+       * tests/synclines.at: here.
+
+2012-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       fix C90 compliance
+       * data/glr.c, src/graphviz.h, src/ielr.c, src/scan-gram.l,
+       * src/system.h, tests/actions.at, tests/glr-regression.at: Do not
+       use // comments.
+       Do not introduce variables after statements.
+       Provide "main" with a return value.
+
+2012-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       glr.c: scope reduction
+       * data/glr.c (yyreportSyntaxError): Reduce the scope of yysize1 (now
+       yysz).
+
+2012-12-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       news: prepare for forthcoming release
+       * NEWS: Fill paragraph.
+       Reorder.
+       Update examples.
+       Remove line for 2.6.90.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: explain how mid-rule actions are translated
+       * doc/bison.texi (Actions in Mid-Rule): Mention and use named references.
+       Split into three subsections, among which...
+       (Mid-Rule Action Translation): this new section.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       error: use better locations for unused midrule values
+       On
+
+         %%
+         exp: {;} {$$;} { $$ = $1; }
+
+       instead of reporting (with -fcaret -Wmidrule-value)
+
+         midrule.y:2.6-8: warning: unset value: $$ [-Wmidrule-values]
+          exp: {;} {$$;} { $$ = $1; }
+               ^^^
+         midrule.y:2.6-27: warning: unused value: $2 [-Wmidrule-values]
+          exp: {;} {$$;} { $$ = $1; }
+               ^^^^^^^^^^^^^^^^^^^^^^
+
+       report
+
+         midrule.y:2.6-8: warning: unset value: $$
+          exp: {;} {$$;} { $$ = $1; }
+               ^^^
+         midrule.y:2.10-14: warning: unused value: $2
+          exp: {;} {$$;} { $$ = $1; }
+                   ^^^^^
+
+       * src/reader.c (grammar_rule_check): When warning about the value of a
+       midrule action, use the location of the midrule action instead of the
+       location of the rule.
+       the location of the part of the rule.
+       * tests/actions.at (Default %printer and %destructor for mid-rule values):
+       Adjust expectations
+       * tests/input.at (Unused values with default %destructor): Ditto.
+       (AT_CHECK_UNUSED_VALUES): Ditto.
+       And use -fcaret.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: various minor improvements and fixes
+       * doc/figs/example.dot, doc/figs/example.y: New.
+       * doc/bison.texi: Prefer "token" to TOKEN.
+       Use @group where appropriate.
+       Adjust with style changes in the output (State 0, not state 0).
+       Fix some @ref that were missing the third argument.
+       Fix some incorrect line numbers.
+       Use "nonterminal", not "non-terminal".
+       Fix overfull and underfull TeX hboxes.
+       Put the comments in the index.
+       Remove duplicate index entries.
+       Fuse glossary entries where appropriate.
+       (Understanding): Improve the continuity between sections.
+       Use example.dot to show the whole graph.
+       * doc/Makefile.am: Adjust.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: ignore more useless compiler warnings
+       * tests/synclines.at (AT_SYNCLINES_COMPILE): Ignore complains about
+       using c++ to compile C.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: be robust to C being compiled with a C++11 compiler
+       * tests/glr-regression.at: Use YY_NULL instead of NULL.
+       Comment changes.
+
+2012-12-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: beware of Clang++ not supporting POSIXLY_CORRECT
+       * m4/c-working.m4 (BISON_LANG_COMPILER_POSIXLY_CORRECT): New.
+       (BISON_C_COMPILER_POSIXLY_CORRECT): Use it.
+       For consistency with C++, also define BISON_C_WORKS.
+       * m4/cxx.m4 (BISON_CXX_COMPILER_POSIXLY_CORRECT): New.
+       * configure.ac: Use it.
+       * tests/atlocal.in: Get its result.
+       Propagate properly CXX values when used to compile C.
+       When POSIXLY_CORRECT, adjust BISON_C_WORKS and BISON_CXX_WORKS.
+       * tests/local.at (AT_COMPILE): Use BISON_C_WORKS.
+
+2012-12-07  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-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.90
+       * NEWS: Record release date.
+
+2012-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: fix syntax-check error.
+       * cfg.mk: Exclude names-refs, it includes a "double" if (end of first
+       line, first of second line below).
+
+       test.y:43.12-44.59:  symbol not found in production: if
+        if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+
+2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       cpp: simplify the Flex version checking macro
+       * src/flex-scanner,h (FLEX_VERSION): Consider YY_FLEX_SUBMINOR_VERSION
+       defined.
+
+2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       news: improve the carets example and fix a typo
+       * NEWS: Here.
+
+2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       cpp: improve the Flex version checking macro
+       * src/flex-scanner.h (FLEX_VERSION): Here.
+
+2012-12-07  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       carets: improve the code
+       * src/location.c: Remove duplicate documentations.
+       (caret_info): Stylistic change.
+       (location_caret): Many reworks.
+
+2012-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: update news
+       * NEWS: There is no 2.6.6, remove its stub.
+
+2012-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: keep -Wmissing-declarations and -Wmissing-prototypes for modern GCCs
+       Fixes a -Werror failure of xalloc.h used in src.
+       From Eric Blake.
+       http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00006.html
+
+       * configure.ac: Check whether GCC pragma diagnostic push/pop works.
+       Enable these warnings for bison if it does.
+       Enable these warnings for the test suite anyway.
+
+2012-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: drop -Wcast-qual
+       Suggested by Jim Meyering.
+       http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00017.html
+       * configure.ac (warn_common): Remove -Wcast-qual.
+
+2012-12-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-12-06  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       misc: pacify the Tiny C Compiler
+       * src/graphviz.c (conclude_red): Remove a useless return.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       cpp: make the check of Flex version portable
+       This was problematic with tcc 0.9.25
+
+       * src/flex-scanner.h (FLEX_VERSION_GT): Rewrite and rename as...
+       (FLEX_VERSION): This.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       misc: require getline
+       * bootstrap.conf: Here, used by src/location.c.
+       * src/getargs.c (long_options): Rename --flags to --feature.
+
+2012-12-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       c++: support wide strings for file names
+       Reported by Mark Boyall.
+       http://lists.gnu.org/archive/html/help-bison/2011-08/msg00002.html
+
+       * data/location.cc (operator<<): Be templated on the type of
+       output stream.
+       * tests/headers.at (Several parsers): Adjust.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       doc: document carets
+       * NEWS: Announce it.
+       * doc/bison.texi (Bison Options):  Here.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       tests: enhance existing tests with carets
+       * tests/actions.at: Unset value.
+       * tests/conflicts.at: Rule useless due to conflicts.
+       * tests/input.at: Missing terminator, unexpected end of file, command line
+       redefinition of variable.
+       * tests/named-refs.at: Many errors.
+       * tests/reduce.at: Useless nonterminals and rules.
+       * tests/regression.at: Large token.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: show carets
+       * src/locations.c (caret_info): New, persistant information useful
+       for...
+       (location_caret): New, print a caret.
+       (cleanup_caret): Release caret_info cleanly, call it...
+       * src/main.c (main): Here.
+       * src/complain.c (error_message): Call location_caret here.
+
+2012-12-05  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       getargs: add support for --feature/-f
+       Introduce -fdiagnostics-show-caret
+
+       * src/getargs.c (feature_flag): New global.
+       * src/getargs.h (feature): New enum.
+
+2012-12-04  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       getargs: don't label --language/-l as experimental
+       * NEWS: Announce it.
+       * doc/bison.texi, src/getargs.c (usage): Here.
+
+2012-12-03  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       getargs: fix the locations of command-line input
+       * src/getargs.c (command_line_location): Here.
+       * tests/input.at: Adjust.
+
+2012-12-03  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: indent missing action code semicolon warning
+       Also, remove a duplicate #define.
+
+       * src/scan-code.l (SC_RULE_ACTION): Here.
+       * tests/actions.at: Adjust.
+
+2012-12-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       parser: accept #line NUM
+       * src/scan-gram.l (scanner): Accept '#line NUM'.
+       (handle_syncline): Adjust to the possible missing file name.
+
+2012-12-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       m4: use a safer pattern to enable/disable output
+       Work on some other areas of Bison revealed that some macros expanded
+       to be expanded only once were actually expanded several times.  This
+       was due to the fact that changecom was not properly restored each
+       time, and macro names appearing in comments were then expanded.
+
+       Introduce begin/end macros which are easier to match that
+       changecom()/changecom(#).
+
+       * data/bison.m4 (b4_output_begin, b4_output_end): New.
+       * data/glr.c, data/glr.cc, data/lalr1.cc, data/lalr1.java,
+       * data/location.cc, data/stack.hh, data/yacc.c:
+       Use them.
+
+2012-12-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: beware of gnulib's need for config.h
+       * tests/skeletons.at, tests/torture.at: Be sure to include config.h
+       where appropriate.
+
+2012-11-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+       * lib/yyerror.c: Include config.h since the following stdio.h might be
+       from gnulib.
+
+2012-11-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c, glr.c: check and fix the display of locations
+       In some case, negative column number could be displayed.
+       Make YY_LOCATION_PRINT similar to bison's own implementation of
+       locations.  Since the macro is getting fat, make it a static
+       function.
+       Reported by Jonathan Fabrizio.
+
+       * data/c.m4 (yy_location_print_define): Improve the implementation,
+       and generate the yy_location_print_ function.
+       Adjust YY_LOCATION_PRINT.
+       * tests/actions.at (Location Print): New tests.
+
+2012-11-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       formatting changes
+       * data/c.m4: Fix comments, put macros in a more natural order.
+       Space changes (from M-x whitespace-cleanup).
+       * src/location.c: Fix spaces.
+       * tests/actions.at: Space changes.
+
+2012-11-30  Akim Demaille  <akim@lrde.epita.fr>
+
+       glr.c: remove stray macro
+       * data/glr.c (YYOPTIONAL_LOC): Remove, unused since commit
+       769a8ef9bcb5e14d0be9d0869f5dca20ab093930.
+
+2012-11-29  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: minor fixes
+       * doc/bison.texi: Use stderr for error messages.
+       Meta-variables are usually spelled in lower case.
+       Use @code for function names.
+
+2012-11-29  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: improve the index
+       * doc/bison.texi: Fix uses of "deffn" so that the arguments of the
+       directives do not show in the index.
+       Remove a duplicate entry for api.pure.
+
+2012-11-29  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       doc: introduce api.pure full, rearrange some examples
+       * NEWS: Add entry.
+       * doc/bison.texi (%define Summary): Show the old Yacc behaviour.
+       (Parser Function): Move parse-param examples here.
+       (Pure Calling): Remove parse-param examples.
+       (Error Reporting): Don't show the old behavior, stick to 'full'.
+
+2012-11-29  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       yacc.c: support "%define api.pure full"
+       This makes the interface for yyerror() pure without the need for a spurious
+       parse_param.
+
+       * data/yacc.c (b4_pure_if, b4_pure_flag): New definition, accept three states.
+       (b4_yacc_pure_if): Rename as...
+       (b4_yyerror_arg_loc_if): This, and use b4_pure_flag.
+       * tests/actions.at (%define api.pure): Modernize.
+       * test/calc.at (Simple LALR Calculator): Modernize.
+       * tests/local.at (AT_YYERROR_ARG_LOC_IF): Adjust.
+
+2012-11-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       local.at: improvements
+       * tests/local.at (AT_YYERROR_FORMALS): Make llocp const.
+       (AT_PURE_AND_LOC_IF, AT_GLR_OR_PARAM_IF): Remove, expand...
+       (AT_YYERROR_ARG_LOC_IF): Here, and use m4_join for readability.
+
+2012-11-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge remote-tracking branch 'origin/branch-2.6' into maint
+       * origin/branch-2.6:
+         yacc.c: always initialize yylloc
+         doc: one of the fixes for an ambiguous grammar was ambiguous too
+         doc: fix the dangling else with precedence directives
+         doc: prefer "token" to TOKEN
+         doc: formatting changes
+
+2012-11-23  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       yacc.c: always initialize yylloc
+       The initial location might be used if the parser starts by an empty
+       reduction, so really ensure proper initialization of the initial
+       location.  The previous approach fails for PostgreSQL, which uses
+       Reported by Peter Eisentraut.
+       http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00023.html
+       With help from Théophile Ranquet.
+
+       * data/yacc.c (b4_declare_scanner_communication_variables): Be sure
+       to initialize yylloc, even when its structure is unknown.
+       (yyparse): Simplify the call to b4_dollar_pushdef.
+       * tests/actions.at (Initial location): Check of similar pattern
+       as in the case of PostgreSQL.
+
+2012-11-23  Akim Demaille  <akim@lrde.epita.fr>
+
+       scanner: issue a single error for groups of invalid characters
+       * src/scan-gram.l: Scan groups of invalid characters together.
+       * tests/input.at, tests/named-refs.at: Adjust.
+
+2012-11-23  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: formatting changes
+       * tests/named-refs.at: Here.
+
+2012-11-23  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: one of the fixes for an ambiguous grammar was ambiguous too
+       Reported by Аскар Сафин.
+       http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00024.html
+
+       * doc/bison.texi (Reduce/Reduce): Fix the resulting ambiguity using
+       precedence/associativity directives.
+
+2012-11-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: fix the dangling else with precedence directives
+       * doc/bison.texi (Non Operators): New node.
+       (Shift/Reduce): Point to it.
+       Don't promote "%expect n" too much.
+
+2012-11-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: prefer "token" to TOKEN
+       This is more readable in short examples.
+
+       * doc/bison.texi (Shift/Reduce): here.
+       Make "win" and "lose" action more alike.
+
+2012-11-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: formatting changes
+       * doc/bison.texi: Use @group.
+
+2012-11-14  Akim Demaille  <akim@lrde.epita.fr>
+
+       scanner: use explicit "ignore" statements
+       * src/scan-gram.l: here.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       tests: close files in glr-regression
+       * tests/glr-regression.at: Here.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       xml: match DOT output and xml2dot.xsl processing
+       Make the DOT produced by XSLT processing equivalent to the one made with the
+       --graph option.
+
+       * data/xslt/xml2dot.xsl: Stylistic changes, and add support for reductions.
+       * doc/bison.texi (Xml): Update.
+       * src/graphviz.c (conclude_red): Minor stylistic changes to DOT internals.
+       (output_red): Swap enabled and disabled reductions output, for coherence
+       with XSLT output.
+       * src/print_graph.c (print_core): Minor stylistic change to States' output.
+       (print_actions): Swap order of output for reductions and transitions.
+       * tests/local.at (AT_BISON_CHECK_XML): Ignore differences in order.
+       * tests/output.at: Adjust to changes in DOT internals.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       xml: factor xslt space template
+       * data/xslt/bison.xsl (space): New, import from...
+       * data/xslt/xml2text.xsl: Here.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       graph: fix a memory leak
+       * src/graphviz.c (output_red): Here.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       xml: documentation
+       The XML output combined with the XSL Transformations provided in data/ are
+       incredibly useful, they should be documented.
+
+       * doc/bison.texi (Xml): New node.
+
+2012-11-12  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       output: capitalize State
+       * src/print.c (print_state): Here.
+       * tests/conflicts.at, tests/existing.at, tests/local.at, tests/reduce.at,
+       tests/regression.at, tests/sets.at: Adjust.
+
+2012-11-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: address syntax-check errors.
+       * cfg.mk: Ignore the "error" call in tests/c++.at, it is not to be
+       translated.
+       * doc/bison.texi: Fix incorrect @pxref use.
+       * po/POTFILES.in: Add missing file.
+       * src/print_graph.c: Remove useless include.
+
+2012-11-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: use valgrind where appropriate
+       Reported by Théophile Ranquet.
+
+       * cfg.mk (sc_at_parser_check): New.
+       * tests/c++.at: Fix use of AT_CHECK vs. AT_PARSER_CHECK.
+
+2012-11-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge remote-tracking branch 'origin/branch-2.6' into maint
+       * origin/branch-2.6:
+         tests: use valgrind where appropriate
+         tests: don't expect $EGREP to support -w
+
+2012-11-10  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: use valgrind where appropriate
+       Reported by Théophile Ranquet.
+
+       * tests/glr-regression.at: Rewrite some test cases so that AT_PARSER_CHECK,
+       which runs valgrind, is exposed with the parser, not with "echo".
+       * tests/local.at, tests/regression.at, tests/headers.at:
+       Use AT_PARSER_CHECK for generated parsers.
+
+2012-11-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: don't expect $EGREP to support -w
+       Does not work on Solaris 10.  Reported by Dennis Clarke.
+       http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00009.html
+       * tests/headers.at (Several parsers): Use Perl instead.
+       While at it, run it only once, on all the generated headers.
+       Adjust to YY_NULL be defined in position.hh.
+
+2012-11-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: more possible error compiler messages for "#error"
+       * tests/synclines.at (AT_SYNCLINES_COMPILE): Adjust for Clang.
+       Verified with GCC 4.0, 4.2 to 4.8, and Clang 2.9, 3.2: none skip.
+
+2012-11-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-11-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge branch 'branch-2.6' into maint
+       * origin/branch-2.6:
+         maint: post-release administrivia
+         version 2.6.5
+         regen
+         tests: syntax-check
+         tests: beware of compilers that do not support POSIXLY_CORRECT
+         gnulib: update
+
+2012-11-07  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-11-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.5
+       * NEWS: Record release date.
+
+2012-11-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-11-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: syntax-check
+       * tests/actions.at: Fix typo.
+
+2012-11-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: beware of compilers that do not support POSIXLY_CORRECT
+       Running "maintainer-release-check" on OS X with Clang 2.9 fails,
+       because "clang-mp-2.9 -o test -g test.c" launches "/usr/bin/dsymutil
+       test -o test.dSYM" which fails with "error: unable to open executable
+       '-o'".
+
+       * m4/c-working.m4 (BISON_CHECK_WITH_POSIXLY_CORRECT)
+       (BISON_C_COMPILER_POSIXLY_CORRECT): New.
+       * configure.ac: Use the latter.
+       * tests/atlocal.in (POSIXLY_CORRECT_IS_EXPORTED): New.
+       * tests/local.at (AT_BISON_CHECK_WARNINGS_): Use it instead of computing its
+       value each time.
+       (AT_QUELL_VALGRIND): Skip tests that cannot work because of compilers
+       that do not support POSIXLY_CORRECT.
+
+2012-11-07  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge branch 'branch-2.6' into maint
+       * origin/branch-2.6: (24 commits)
+         tests: calc: modernize the use of locations
+         tests: remove useless location initializations
+         lalr1.cc: always initialize yylval.
+         tests: check that C and C++ objects can be linked together.
+         yacc.c: also disable -Wuninitialized.
+         glr.cc, yacc.c: initialize yylloc properly
+         yacc.c, glr.c: a better YY_LOCATION_PRINT
+         yacc.c: simplify initialization
+         doc: formatting changes
+         c++: fix position operator signatures
+         tests: remove useless location initialization.
+         tests: fix locations in C
+         tests: handle %parse-param in the generated yyerror
+         tests: simplifications
+         grammars: fix display of nul character in error message
+         tests: sort
+         tests: cosmetic changes
+         comment changes
+         autoconf: update
+         gnulib: update
+         ...
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: calc: modernize the use of locations
+       * tests/calc.at: Don't initialize the location, let the parser
+       do it.
+       Use a $printer.
+       Change some testing input to be easier to distinguish (instead of always
+       "0 0" for instance).
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: remove useless location initializations
+       * tests/actions.at, tests/calc.at: here.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: always initialize yylval.
+       * data/lalr1.cc: here.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: check that C and C++ objects can be linked together.
+       * tests/local.at (AT_SKIP_IF_CANNOT_LINK_C_AND_CXX): New.
+       * tests/headers.at (Several parsers): Use it.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: also disable -Wuninitialized.
+       * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN): For some versions
+       of GCC, -Wmaybe-uninitialized alone does not suffice.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       glr.cc, yacc.c: initialize yylloc properly
+       There are several issues to address here.  One is that yylloc should
+       be initialized when possible.  Another is that the push parser needs
+       to update yypushed_loc when the user modified it.  And if the parser
+       starts by a reduction of an empty, it uses the first location on the
+       stack, which, therefore, must also be initialized to this initial
+       location.
+
+       This is getting complex, especially since because initializing a
+       global (impure interface) is different from initializing a local
+       variable.  To simplify, the local yylloc is not initialized during its
+       definition.
+
+       * data/c.m4 (b4_yyloc_default_define): Replace by...
+       (b4_yyloc_default): this.
+       Adjust dependencies.
+       * data/glr.cc: Initialize yylloc.
+       * data/yacc.c (b4_declare_scanner_communication_variables):
+       Initialize yylloc during its definition.
+       Don't define yyloc_default.
+       (yypush_parse): The location formal is not const, as we might
+       initialize it.
+       (yyparse): Define yyloc_default.
+       Use it before running the user initial action.
+       Possibly update the first location on the stack, and the pushed
+       location after the user initial action.
+       * tests/actions.at (Initial locations): Check that the initial
+       location is correct.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c, glr.c: a better YY_LOCATION_PRINT
+       * data/c.m4 (b4_yy_location_print_define): New.
+       Now issues "short" locations, e.g., "1.1" instead of "1.1-1.1".
+       Was initially a function, but then we face "static but unused"
+       warnings.
+       Simpler as a macro.
+       * tests/local.at, data/glr.c, data/yacc.c: Use it instead of duplicating.
+       * tests/actions.at: Adjust expectations.
+
+2012-11-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: simplify initialization
+       * data/yacc.c: Fuse the initializations of yyssp, yyss and the like.
+       Remove an obsolete comment: we do initialize these initial stack
+       members (in some cases).
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: formatting changes
+       * doc/bison.texi: In a pointer type.
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       c++: fix position operator signatures
+       * data/location.cc (operator+=, operator-=): Remove const from return
+       type.
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: remove useless location initialization.
+       * tests/glr-regression.at: here.
+       glr.c does initialize yylloc.
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: fix locations in C
+       * tests/local.at (AT_YYERROR_DEFINE): Don't display the end of the location
+       if it is not after its beginning.
+       * tests/actions.at, tests/cxx-type.at: Adjust the expected output.
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: handle %parse-param in the generated yyerror
+       * tests/local.at (AT_PARSE_PARAMS): New.
+       (AT_YYERROR_FORMALS, AT_YYERROR_DEFINE): Use it to add the parse-param
+       to yyerror.
+       * tests/calc.at, tests/regression.at: Use AT_YYERROR_DEFINE and
+       AT_YYERROR_DECLARE, now that they handle properly the parse-params.
+       Be sure to let AT_BISON_OPTION_PUSHDEFS now what parse-params are used.
+
+2012-11-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: simplifications
+       * tests/actions.at (Exotic Dollars): Formatting changes.
+       Use AT_FULL_COMPILE.
+       (AT_CHECK_PRINTER_AND_DESTRUCTOR): Remove useless initialization of @$.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       grammars: fix display of nul character in error message
+       Reported by Marc Mendiola.
+       http://lists.gnu.org/archive/html/help-bison/2012-10/msg00017.html
+
+       * gnulib: Update to get quote_mem.
+       * src/scan-gram.l: Use it.
+       * tests/input.at (Invalid inputs): Additional checks.
+       * tests/named-refs.at: Likewise.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: sort
+       * tests/regression.at (Invalid inputs, Invalid inputs with {}): Move to...
+       * tests/input.at: here, for consistency.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: cosmetic changes
+       * tests/actions.at (AT_CHECK_PRINTER_AND_DESTRUCTOR): Improve the
+       displayed title.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       comment changes
+       * data/lalr1.cc: here.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       autoconf: update
+       There are comment changes only in the files we use.
+
+2012-11-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-10-28  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-10-28  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: initialize yylval and yylloc.
+       When generating a pure push parser, the initialization of yylval and
+       yylloc may not be visible to the compiler.  With warnings enabled, GCC
+       4.3.6, 4.4.7, 4.5.4, and 4.6.3 report uninitialized uses of
+       yylval/yylloc.  Using local pragmas to disable these warnings is not
+       supported before 4.6, and 4.6 does not support it properly.  So
+       initialize yylval and yylloc at their definition.  Reported by Peter
+       Simons.  See
+       http://lists.gnu.org/archive/html/bison-patches/2012-10/msg00133.html
+
+       * data/c.m4 (b4_yyloc_default_define): New.
+       * data/yacc.c: Use it when locations are requested.
+       (YYLVAL_INITIALIZE): Replace by...
+       (YY_INITIAL_VALUE): this.
+       (yyparse): Initialize yylloc and yylval.
+       Therefore, remove the initialization of yylloc's field.
+       * data/glr.c: Likewise.
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge branch 'branch-2.6' into maint
+       * origin/branch-2.6:
+         regen
+         yacc.c: do not define location support when not using locations
+         maint: be compilable with GCC 4.0
+         tests: address a warning from GCC 4.4
+         tests: don't use options that Clang does not support
+         tests: restore the tests on -Werror
+         regen
+         parse-gram: update the Bison interface
+         fix comment
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: minor style change
+       * doc/figs/example-reduce.txt: here.
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: use gendocs's new -I option
+       * gnulib: Update gendocs.
+       * cfg.mk (gendocs_options_): New.
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: don't use _Pragma GCC diagnostic with 4.6
+       Reported by Peter Simons.
+       http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00033.html
+
+       * data/yacc.c (b4_declare_scanner_communication_variables): 4.7
+       seems fine though.
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: do not define location support when not using locations
+       * data/yacc.c (YYLLOC_DEFAULT, YYRHSLOC): Don't define when not
+       using locations.
+
+2012-10-26  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: be compilable with GCC 4.0
+       The "shadows a global declaration" warning in GCC 4.0 was a bit
+       annoying.  It does not like that a type name be used in a prototype of
+       a function (not the implementation, just the declaration):
+
+         In file included from src/LR0.c:38:
+         src/reader.h:56: warning: declaration of 'named_ref' shadows a
+                                   global declaration
+         src/named-ref.h:35: warning: shadowed declaration is here
+
+       It does not like either when a global variable name is used in a
+       prototype.  Flex 2.5.37 generates this prototype:
+
+         void gram_set_debug (int debug_flag  );
+
+       * src/getargs.h, src/getargs.c (debug_flag): Rename as...
+       (debug): this.
+       Adjust dependencies.
+       * src/reader.h: Don't use "named_ref" as a formal argument name.
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: address a warning from GCC 4.4
+       236. torture.at:465: testing Exploding the Stack Size with Alloca ...
+       ../../../tests/torture.at:474: bison -o input.c input.y
+       ../../../tests/torture.at:474: $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+       stderr:
+       cc1: warnings being treated as errors
+       input.y: In function 'main':
+       input.y:60: error: 'status' may be used uninitialized in this function
+
+       * tests/torture.at (AT_DATA_STACK_TORTURE): Initial status to avoid
+       the previous error.
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: don't use options that Clang does not support
+       * configure.ac (WARN_CFLAGS, WARN_CXXFLAGS): Do not include options
+       that Clang does not support.
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: restore the tests on -Werror
+       When run as /bin/sh, Bash sets the shell variable POSIXLY_CORRECT to
+       y.  The test suite checks for the envvar POSIXLY_CORRECT to turn of
+       some tests not supported in POSIX mode.  Restore these tests.
+
+       Reported by the Hydra build farm, from Rob Vermaas.
+
+       * tests/local.at (AT_BISON_CHECK_WARNINGS_): Check the envvar
+       POSIXLY_CORRECT, not the shell variable.
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       parse-gram: update the Bison interface
+       * src/parse-gram.y (%pure-parser, %name-prefix): Replace with...
+       (%define api.pure, %define api.prefix)
+       * src/location.h, src/scan-gram.h: Adjust to api.prefix.
+
+2012-10-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       fix comment
+       * data/c.m4 (b4_YYDEBUG_define): here.
+
+2012-10-23  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge branch 'branch-2.6' into maint
+       * origin/branch-2.6:
+         maint: post-release administrivia
+         version 2.6.4
+         regen
+         2.6.4: botched 2.6.3
+
+2012-10-23  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-10-23  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.4
+       * NEWS: Record release date.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       2.6.4: botched 2.6.3
+       * NEWS: here.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       Merge branch '2.6.3' into maint
+       * 2.6.3: (22 commits)
+         maint: post-release administrivia
+         version 2.6.3
+         gnulib: update
+         tests: check %no-lines
+         NEWS: warnings with clang
+         warnings: avoid warnings from clang
+         tests: no longer disable -O compiler options
+         yacc.c: initialize yylval in pure-parser mode
+         skeletons: style changes
+         tests: minor improvements
+         tests: use $PERL instead of perl
+         build: look for Perl in configure.
+         tests: fix sed portability issues
+         tests: diff -u is not portable
+         maint: word changes
+         lalr1.cc: fix test suite portability
+         maint: fix an erroneous include
+         tests: check that headers are self contained
+         doc: add missing documentation for --report
+         headers: move CPP guards into YY_*_INCLUDED to avoid collisions
+         ...
+
+2012-10-22  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-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       version 2.6.3
+       * NEWS: Record release date.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: check %no-lines
+       * tests/synclines.at: here.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       NEWS: warnings with clang
+       * NEWS: here.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       warnings: avoid warnings from clang
+       Fix the following warning
+
+         parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
+                               [-Werror,-Wparentheses-equality]
+           if (((yyn) == (-91)))
+                ~~~~~~^~~~~~~~
+         parse-gram.c:2078:14: note: remove extraneous parentheses around the
+                               comparison to silence this warning
+           if (((yyn) == (-91)))
+               ~      ^       ~
+         parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
+                               an assignment
+           if (((yyn) == (-91)))
+                      ^~
+                      =
+         1 error generated.
+
+       and the following one:
+
+         input.cc:740:1: error: function declared 'noreturn' should not return
+                                [-Werror,-Winvalid-noreturn]
+         static void yyMemoryExhausted (yyGLRStack* yystackp)
+           __attribute__ ((__noreturn__));
+         static void
+         yyMemoryExhausted (yyGLRStack* yystackp)
+         {
+           YYLONGJMP (yystackp->yyexception_buffer, 2);
+         }
+         ^
+         1 warning and 1 error generated.
+
+       This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).
+
+       * data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
+       to avoid this warning.
+       Any reasonable compiler should generate the same code.
+       * src/uniqstr.h (UNIQSTR_EQ): Likewise.
+       * data/glr.c (LONGJMP): abort after longjmp to pacify clang.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: no longer disable -O compiler options
+       Tests are running without -O since
+       f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about
+       yylval not being initialized) show only when GCC is given -O2.  The
+       previous patch fixes the warnings. Run the test suite with compiler
+       options unmodified.
+
+       * tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and
+       CXXFLAGS.
+
+2012-10-22  Paul Eggert  <eggert@cs.ucla.edu>
+
+       yacc.c: initialize yylval in pure-parser mode
+       See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html
+       (spreading over September and October).
+
+       * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN)
+       (YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE):
+       New macros.  Use them to suppress an unwanted GCC diagnostic.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       skeletons: style changes
+       * data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: minor improvements
+       * tests/c++.at: Space changes.
+       Use AT_YYERROR_DEFINE.
+       * tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: use $PERL instead of perl
+       * tests/atlocal.in (PERL): New.
+       Sort.
+       * tests/calc.at, tests/input.at, tests/local.at, tests/regression.at,
+       * tests/skeletons.at, tests/synclines.at, tests/torture.at: here.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: look for Perl in configure.
+       Bison uses "/usr/bin/perl" or "perl" in several places, and it does
+       not appear to be a problem.  But, at least to make it simpler to
+       change PERL on the make command line, check for perl in configure.
+
+       * configure.ac (PERL): New.
+       * doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: fix sed portability issues
+       Reported by Didier Godefroy,
+       <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>.
+
+       * tests/calc.at (AT_CHECK_SPACES): Use Perl.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: diff -u is not portable
+       Reported by Didier Godefroy
+       <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>.
+
+       * tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not
+       work.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: word changes
+       * README-hacking (Typical errors): Improve wording.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: fix test suite portability
+       Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with
+       G++ 4.6.3.
+
+       * tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE
+       in the files to compile.
+       * data/location.cc: Do not include twice string and iostream (once
+       by position.hh, and then by location.hh).
+       * README-hacking (Typical errors): Some hints for other maintainers.
+
+2012-10-22  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       maint: fix an erroneous include
+       This fixes test 130 (Several parsers).
+
+       * data/location.cc: Include <iostream> rather than <iosfwd> since
+       we really need << on strings for instance.
+       * NEWS: Document this.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: check that headers are self contained
+       Reported by Alexandre Duret-Lutz.
+
+       * tests/headers.at (Several parsers): here.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: add missing documentation for --report
+       * doc/bison.texi (Bison Options): Document --report's "solved", "all",
+       and "none".
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       headers: move CPP guards into YY_*_INCLUDED to avoid collisions
+       See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>.
+
+       * data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED.
+       * tests/headers.at: Adjust.
+       * NEWS, doc/bison.texi: Document.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       minor changes.
+       * NEWS: Word changes.
+       * doc/bison.texi: Spell check.
+       Fix minor issues.
+       * tests/headers.at: Comment and formatting changes.
+
+2012-10-22  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-10-19  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-10-19  Akim Demaille  <akim@lrde.epita.fr>
+
+       xml: slight improvement of the DOT output
+       This was completely forgotten...  Nothing about XML is actually
+       documented...
+
+       * data/xslt/xml2dot.xsl: Use boxes, and Courier font.
+
+2012-10-19  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: check for dot before using it
+       * configure.ac: here.
+       * doc/Makefile.am: Use $(DOT).
+       Ship the generated files, to spare the user the need for Graphviz.
+
+2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: documentation
+       Note that 'make web-manual' fails.
+
+       * NEWS: Document these changes.
+       * doc/Makefile.am: Adjust to generate example files.
+       * doc/bison.texi: Add a Graphviz section after "Understanding::", the section
+       describing the .output file, because these are similar.
+       * doc/figs/example-reduce.dot, doc/figs/example-reduce.txt,
+       doc/figs/example-shift.dot, doc/figs/example-shift.txt: New, minimal
+       examples to illustrate the documentation.
+
+2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: add tests, introducing -k graph
+       * tests/output.at (AT_TEST): New.
+       Use it to add 6 --graph tests.
+
+2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: change the output format of the rules
+       Use something similar to the report file.
+
+       * src/print_graph.c (print_lhs): New, obstack equivalent of rule_lhs_print.
+       (print_core): Use here.
+
+2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: style changes
+       * src/graphviz.c (start_graph): Use courier font.
+       (conclude_red): Use commas to separate attributes. Show the acceptation
+       as a special reduction, with a blue color and an "Acc" label. Show the
+       lookahead tokens between square brackets.
+       (output_red): No longer label default reductions.
+       * src/print_graph.c (print_core): Refactor spacing, and print an
+       additional space between a rule's rhs and its lookahead tokens. Also,
+       capitalize "State".
+       (print_actions): Style, move a declaration.
+
+2012-10-18  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: address an issue with R/R conflicts
+       All disabled reductions should now be shown as such.
+
+       * src/graphviz.c (output_red): Here.
+       (conclude_red): New.
+
+2012-10-16  Akim Demaille  <akim@lrde.epita.fr>
+
+       java: fixes
+       * data/java.m4: Remove stray M4 characters.
+
+2012-10-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       java: use api.location.type and api.position.type
+       * data/java.m4: here.
+       * NEWS, doc/bison.texi, tests/java.at: Adjust.
+
+2012-10-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: check %no-lines
+       * tests/synclines.at: here.
+
+2012-10-12  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: minor simplification
+       * tests/headers.at (Several parsers): Use *.y even for C++.
+
+2012-10-11  Akim Demaille  <akim@lrde.epita.fr>
+
+       graphs: stylistic changes.
+       * src/graphviz.c (output_red): Comment and formatting changes.
+
+2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       graphs: minor style changes
+       * src/graphviz.c (output_red): Fix C90 issues.
+       Reduce variable scopes.
+
+2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       graphs: show reductions
+       * src/graphviz.c (output_red): New, show reductions on the graph.
+       (no_reduce_bitset_init): New, initialize a bitset.
+       (print_token): New, print a lookahead token.
+       (escape): New, print "foo" as \"foo\" because Dot doesn't like quotes within
+       a label.
+
+       * src/graphviz.h : Adjust.
+       * src/print_graph.c (print_actions): Call output_red here.
+
+2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: style: prefix state number with "state"
+       * src/print_graph.c (print_core): Here.
+
+2012-10-11  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       graphs: style: use left justification for states
+       The label text of nodes is centered "by default" (by the use of '\n' as
+       a line feed). This gives bad readability to the grammar rules shown in
+       state nodes, a left justification is much nicer. This is done by using '\l'
+       as the line feed.
+
+       In order to allow \l in the DOT file, changes to the quoting system seem
+       necessary.
+
+       * src/print_graph.c (print_core): Escape tokens here, instead of...
+       * src/graphviz.c (output_node): Here...
+       (escape): Using this, new.
+
+2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       graphs: style: prefix rules and change shapes
+       * src/graphviz.c (start_graph): Use box rather than ellipsis.
+       * src/print_graph.c (print_core): Prefix rules with their number.
+
+2012-10-11  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       obstack: import obstack_finish0 from master
+       * src/system.h (obstack_finish0): New.
+
+2012-10-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       c++: api.location.type
+       This feature was introduced in 95a2de5695670ae0df98cb3c42141cad549f0204
+       (which is part of 2.5), but not documented.  Give it a proper name, and
+       make it public.
+
+       * data/c++.m4, data/lalr1.cc, data/glr.cc, data/java.m4: Use
+       api.location.type instead of location_type.
+       * src/muscle-tab.c (muscle_percent_variable_update): Map the latter to
+       the former.
+       * tests/local.at: Adjust.
+       * tests/calc.at: Use api.location.type.
+       Leave tests/java.at with location_type, at least for the time being,
+       to cover both names.
+       * doc/bison.texi: Document api.location.type.
+       (User Defined Location Type): New.
+       * NEWS: Update.
+
+2012-10-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       muscles: a function for backward compatibility
+       Based on commit 171ad99d6421935a278656be6dc7161591835d00 from master.
+
+       * src/muscle-tab.c (muscle_percent_variable_update): New.
+       (muscle_percent_define_insert): Use it.
+       Define the variables with their initial value.
+
+2012-10-09  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: more macros
+       * src/output.c (ARRAY_CARDINALITY): Move to...
+       * src/system.h: here.
+       (STREQ, STRNEQ): new.
+
+2012-10-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       NEWS: warnings with clang
+       * NEWS: here.
+
+2012-10-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       warnings: avoid warnings from clang
+       Fix the following warning
+
+         parse-gram.c:2078:14: error: equality comparison with extraneous parentheses
+                               [-Werror,-Wparentheses-equality]
+           if (((yyn) == (-91)))
+                ~~~~~~^~~~~~~~
+         parse-gram.c:2078:14: note: remove extraneous parentheses around the
+                               comparison to silence this warning
+           if (((yyn) == (-91)))
+               ~      ^       ~
+         parse-gram.c:2078:14: note: use '=' to turn this equality comparison into
+                               an assignment
+           if (((yyn) == (-91)))
+                      ^~
+                      =
+         1 error generated.
+
+       and the following one:
+
+         input.cc:740:1: error: function declared 'noreturn' should not return
+                                [-Werror,-Winvalid-noreturn]
+         static void yyMemoryExhausted (yyGLRStack* yystackp)
+           __attribute__ ((__noreturn__));
+         static void
+         yyMemoryExhausted (yyGLRStack* yystackp)
+         {
+           YYLONGJMP (yystackp->yyexception_buffer, 2);
+         }
+         ^
+         1 warning and 1 error generated.
+
+       This is Apple clang version 3.1 (tags/Apple/clang-318.0.61).
+
+       * data/c.m4 (b4_table_value_equals): Use (!!(A == B)) instead of (A == B)
+       to avoid this warning.
+       Any reasonable compiler should generate the same code.
+       * src/uniqstr.h (UNIQSTR_EQ): Likewise.
+       * data/glr.c (LONGJMP): abort after longjmp to pacify clang.
+
+2012-10-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: no longer disable -O compiler options
+       Tests are running without -O since
+       f377f69fec28013c79db4efe12bbb9d48987fb2c because some warnings (about
+       yylval not being initialized) show only when GCC is given -O2.  The
+       previous patch fixes the warnings. Run the test suite with compiler
+       options unmodified.
+
+       * tests/atlocal.in (O0CFLAGS, O0CXXFLAGS): Remove, use CFLAGS and
+       CXXFLAGS.
+
+2012-10-08  Paul Eggert  <eggert@cs.ucla.edu>
+
+       yacc.c: initialize yylval in pure-parser mode
+       See http://lists.gnu.org/archive/html/bison-patches/2012-08/msg00024.html
+       (spreading over September and October).
+
+       * data/yacc.c (YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN)
+       (YY_IGNORE_MAYBE_UNINITIALIZED_END, YYLVAL_INITIALIZE):
+       New macros.  Use them to suppress an unwanted GCC diagnostic.
+
+2012-10-08  Akim Demaille  <akim@lrde.epita.fr>
+
+       skeletons: style changes
+       * data/yacc.c, data/glr.c: Prefer Title case for (CPP) macro arguments.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: document exception safety
+       * NEWS: here.
+       * doc/bison.texi (Destructor Decl, C++ Parser Interface): and there.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: check exception safety of error handling
+       * tests/c++.at (Exception safety): Don't use swap here, it
+       is useless.
+       Cover more test cases: yyerror, YYERROR, YYABORT, and
+       error recovery.
+       (Object): Instead of just keeping a counter of instances, keep
+       a list of them.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: check (and fix) %printer exception safety
+       * tests/c++.at (Exception safety): Let the parser support the --debug
+       option.
+       On 'p', throw an exception from the %printer.
+       * data/lalr1.cc (yyparse): Do not display the values we discard, as it
+       uses %printer, which might have thrown the exception.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: check (and fix) %initial-action exception safety
+       * data/lalr1.cc: Check size > 1, rather than size != 1, when cleaning
+       the stack, as at the beginning, size is 0.
+       * tests/c++.at (Exception safety): Check exception safety in
+       %initial-action.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: fix exception safety
+       lalr1.cc does not reclaim its memory when ended by an exception.
+
+       Reported by Oleksii Taran:
+       http://lists.gnu.org/archive/html/help-bison/2012-09/msg00000.html
+
+       * data/lalr1.cc (yyparse): Protect the whole yyparse by a try-catch
+       block that cleans the stack and the lookahead.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: check exception safety.
+       * tests/c++.at (Exception safety): New.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: indentation fixes.
+       * data/lalr1.cc (yyparse): here.
+       Untabify a block of code.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: don't leave macros define to nothing
+       * data/lalr1.cc (YY_SYMBOL_PRINT, YY_REDUCE_PRINT, YY_STACK_PRINT):
+       Define to something so that, for instance, "if (foo) YY_SYMBOL_PRINT"
+       is valid even when !YYDEBUG.
+
+2012-10-06  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: minor improvements
+       * tests/c++.at: Space changes.
+       Use AT_YYERROR_DEFINE.
+       * tests/local.at (AT_YYERROR_DEFINE): Issue errors on unknown languages.
+
+2012-10-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: use $PERL instead of perl
+       * tests/atlocal.in (PERL): New.
+       Sort.
+       * tests/calc.at, tests/input.at, tests/local.at, tests/regression.at,
+       * tests/skeletons.at, tests/synclines.at, tests/torture.at: here.
+
+2012-10-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       build: look for Perl in configure.
+       Bison uses "/usr/bin/perl" or "perl" in several places, and it does
+       not appear to be a problem.  But, at least to make it simpler to
+       change PERL on the make command line, check for perl in configure.
+
+       * configure.ac (PERL): New.
+       * doc/Doxyfile.in, doc/Makefile.am, tests/bison.in: Use it.
+
+2012-10-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: fix sed portability issues
+       Reported by Didier Godefroy,
+       <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00005.html>.
+
+       * tests/calc.at (AT_CHECK_SPACES): Use Perl.
+
+2012-10-05  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: diff -u is not portable
+       Reported by Didier Godefroy
+       <http://lists.gnu.org/archive/html/bug-bison/2012-10/msg00006.html>.
+
+       * tests/existing.at (AT_LALR1_DIFF_CHECK): Skip if diff -u does not
+       work.
+
+2012-10-04  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: word changes
+       * README-hacking (Typical errors): Improve wording.
+
+2012-10-04  Akim Demaille  <akim@lrde.epita.fr>
+
+       lalr1.cc: fix test suite portability
+       Reported by Rob Vermaas' Hydra build farm on x86_64-darwin 10.2.0 with
+       G++ 4.6.3.
+
+       * tests/headers.at (Several parsers): Include AT_DATA_SOURCE_PROLOGUE
+       in the files to compile.
+       * data/location.cc: Do not include twice string and iostream (once
+       by position.hh, and then by location.hh).
+       * README-hacking (Typical errors): Some hints for other maintainers.
+
+2012-10-03  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       maint: fix an erroneous include
+       This fixes test 130 (Several parsers).
+
+       * data/location.cc: Include <iostream> rather than <iosfwd> since
+       we really need << on strings for instance.
+       * NEWS: Document this.
+
+2012-10-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: check that headers are self contained
+       Reported by Alexandre Duret-Lutz.
+
+       * tests/headers.at (Several parsers): here.
+
+2012-10-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       doc: add missing documentation for --report
+       * doc/bison.texi (Bison Options): Document --report's "solved", "all",
+       and "none".
+
+2012-10-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       headers: move CPP guards into YY_*_INCLUDED to avoid collisions
+       See <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00016.html>.
+
+       * data/c.m4 (b4_cpp_guard): Prepend YY_ and append _INCLUDED.
+       * tests/headers.at: Adjust.
+       * NEWS, doc/bison.texi: Document.
+
+2012-10-01  Akim Demaille  <akim@lrde.epita.fr>
+
+       minor changes.
+       * NEWS: Word changes.
+       * doc/bison.texi: Spell check.
+       Fix minor issues.
+       * tests/headers.at: Comment and formatting changes.
+
+2012-09-28  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-09-28  Theophile Ranquet  <theophile.ranquet@gmail.com>
+
+       errors: indent "user token number redeclaration" context
+       This is the continuation of the work on the readability of errors
+       context.
+
+       * src/symtab.c (user_token_number_redeclaration): Use
+       complain_at_indent to output with increased indentation level.
+       * tests/input:at: Apply this change.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       warnings: introduce -Wdeprecated in the usage info
+       The deprecated warning, introduced some time ago, was not displayed in
+       the usage message. This patch addresses the issue.
+
+       * src/getargs.c (usage): Insert here.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: prefix the output with "error: "
+       This improves readability. This is also what gcc does.
+
+       * NEWS: Document this change.
+       * src/complain.c (complain_at): Prefix all errors with "error: ".
+       (complain_at_indent, warn_at_indent): Do not prefix the context
+       information of errors, which are basically just indented errors.
+       * tests/conflicts.at, tests/glr-regression.at, tests/input.at,
+       tests/named-refs.at, tests/output.at, tests/push.at,
+       tests/regression.at, tests/skeletons.at: Apply this change.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: indent "invalid value for %define" context
+       This is the continuation of the work on the readability of errors
+           context.
+
+       For example, what used to be:
+         input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
+         input.y:1.9-29: accepted value: 'most'
+
+       is now:
+         input.y:1.9-29: invalid value for %define variable 'foo' : 'bar'
+         input.y:1.9-29:     accepted value: 'most'
+
+       * src/muscle-tab.c (muscle_percent_define_check_values): Use
+       complain_at_indent to output with increased indentation level.
+       * tests/input:at: Apply this change.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: indent "%define var" redefinition context
+       This is the continuation of the work on the readability of errors
+       context.
+
+       For example, what used to be:
+         input.y:2.9-11: %define variable 'var' redefined
+         input.y:1.9-11: previous definition
+
+       is now:
+         input.y:2.9-11: %define variable 'var' redefined
+         input.y:1.9-11:     previous definition
+
+       * src/muscle-tab.c (muscle_percent_define_insert): Use
+       complain_at_indent to output with increased indentation level.
+       * tests/input.at: Apply this change.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: indent "symbol redeclaration" context
+       This is the continuation of the work on the readability of errors
+       context.
+
+       For example, what used to be:
+         input.y:5.10-24: %printer redeclaration for <field2>
+         input.y:3.11-25: previous declaration
+
+       is now:
+         input.y:5.10-24: %printer redeclaration for <field2>
+         input.y:3.11-25:     previous declaration
+
+       * NEWS: Document this change.
+       * src/symtab.c (symbol_redeclaration, semantic_type_redeclaration,
+       user_token_number_redeclaration, default_tagged_destructor_set,
+       default_tagless_destructor_set, default_tagged_printer_set,
+       default_tagless_printer_set): Use complain_at_indent to
+       output with increased indentation level.
+       * tests/input.at: Apply this change.
+
+2012-09-26  Theophile Ranquet  <ranquet@lrde.epita.fr>
+
+       errors: indent "result type clash" error context
+       This used to be the format of the error report:
+
+         input.y:6.5-10: result type clash on merge function 'merge': [...]
+         input.y:2.4-9: previous declaration
+
+       In order to distinguish the actual error from the context provided, we
+       rather this new output:
+
+         input.y:6.5-10: result type clash on merge function 'merge': [...]
+         input.y:2.4-9:     previous declaration
+
+       Another patch will introduce an "error: " prefix to all non-indented
+       lines, giving yet better readability to the reports.
+
+       * src/complain.h (SUB_INDENT): Move to here.
+       * src/reader.c (record_merge_function_type): Use complain_at_indent to
+       output with increased indentation level.
+       * src/scan-code.l (SUB_INDENT): Remove from here.
+       * tests/glr-regression.at: Apply this change.
+
+2012-09-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       regen
+
+2012-09-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc: fix handling of CPP guards when no header is generated
+       When no header was to be generated, Bison would issue:
+
+         /* In a future release of Bison, this section will be replaced
+            by #include "".  */
+         #ifndef YY_
+         # define YY_
+
+       It now properly generates nothing.
+
+       * data/c.m4 (b4_cpp_guard_open, b4_cpp_guard_close): Issue nothing when
+       the file name is empty.
+       * data/yacc.c: Do not generate the above comment when there is no header
+       to generate.
+       * NEWS: Update.
+
+2012-09-25  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-09-04  Akim Demaille  <akim@lrde.epita.fr>
+
+       maint: remove useless file
+       * externals/bootstrap.cfg: Remove.
+       This file was used by a specific build system.
+       It was added to the master repository by accident.
+
+2012-09-04  Akim Demaille  <akim@lrde.epita.fr>
+
+       update files to ignore
+       * doc/.gitignore: Don't ignore split info files as we don't split our
+       info file.
+       See <http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00006.html>.
+
+2012-09-04  Akim Demaille  <akim@lrde.epita.fr>
+
+       remove useless include
+       * src/system.h: Don't include sys/types.h.
+       Reported by Eric Blake,
+       <http://lists.gnu.org/archive/html/bug-bison/2012-09/msg00002.html>.
+       (FUNCTION_PRINT): Remove, unused.
+
+2012-09-03  Jim Meyering  <meyering@redhat.com>
+
+       use locale-indep. c_is* functions for parsing, not isspace, isprint etc
+       * src/parse-gram.y: Include "c-ctype.h".
+       (add_param): Parse with c_isspace, not isspace.
+       * src/parse-gram.c: Likewise.
+       * src/scan-gram.l: Include c-ctype.h, not ctype.h.
+       (SC_ESCAPED_STRING,SC_ESCAPED_CHARACTER): Use c_isspace and c_isprint,
+       not ctype.h's locale-dependent functions.
+
+2012-09-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       gnulib: update
+
+2012-09-03  Akim Demaille  <akim@lrde.epita.fr>
+
+       --help: include a place to report translation issues
+       http://lists.gnu.org/archive/html/bug-bison/2012-08/msg00007.html
+       shows that it is useful to help users report translation issues.
+       While at it, include other informative bits that the coreutils shows.
+
+       * src/getargs.c (usage): Report more URLs where the user can
+       refer to.
+       Mostly copied/pasted from coreutils' emit_ancillary_info function.
+
+2012-08-31  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: style changes
+       * tests/torture.at (AT_DATA_STACK_TORTURE): M4 style changes to
+       improve readability.
+       Fix an assertion which, because of a <= instead of ==, did not check
+       new_status as visibly meant.
+       (get_args): New.
+
+2012-08-31  Akim Demaille  <akim@lrde.epita.fr>
+
+       tests: fix push-pull test
+       * tests/torture.at: %push-pull-parser is no longer supported.
+
+2012-08-31  Akim Demaille  <akim@lrde.epita.fr>
+
+       yacc.c: style changes
+       * data/yacc.c: (yytoken): Define with initial value.
+
+2012-08-03  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-08-03  Akim Demaille  <akim@lrde.epita.fr>
 
        version 2.6.2
index 789e760..6981c55 100644 (file)
 
        -----
 
-       Copyright (C) 1987-1988, 1991-2012 Free Software Foundation,
+       Copyright (C) 1987-1988, 1991-2013 Free Software Foundation,
        Inc.
 
        Copying and distribution of this file, with or without
index 58f2ead..8759034 100644 (file)
@@ -5,7 +5,7 @@
 # It is necessary if you want to build targets usually of interest
 # only to the maintainer.
 
-# Copyright (C) 2001, 2003, 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001, 2003, 2006-2013 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
diff --git a/INSTALL b/INSTALL
index 6e90e07..007e939 100644 (file)
--- a/INSTALL
+++ b/INSTALL
@@ -1,7 +1,7 @@
 Installation Instructions
 *************************
 
-Copyright (C) 1994-1996, 1999-2002, 2004-2012 Free Software Foundation,
+Copyright (C) 1994-1996, 1999-2002, 2004-2013 Free Software Foundation,
 Inc.
 
    Copying and distribution of this file, with or without modification,
index aed166e..798704d 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 
-## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+## Copyright (C) 2001-2013 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
@@ -56,12 +56,11 @@ dist-hook: gen-ChangeLog
 
 .PHONY: update-b4-copyright update-package-copyright-year
 update-b4-copyright:
-       $(AM_V_GEN) find data -type f           \
-         | grep -v -E '^data/bison.m4$$'       \
-         | xargs $(build_aux)/$@
+       $(AM_V_GEN)find $(srcdir)/data -type f          \
+         | xargs $(srcdir)/build-aux/$@
        @echo 'warning: src/parse-gram.[hc] may need to be regenerated.'
 update-package-copyright-year:
-       $(AM_V_GEN)$(build_aux)/$@ configure.ac
+       $(AM_V_GEN)$(srcdir)/build-aux/$@ $(srcdir)/configure.ac
 
 gen_start_date = 2012-01-16
 .PHONY: gen-ChangeLog
index d138a58..cf98845 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -63,17 +63,17 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = .
-DIST_COMMON = README $(am__configure_deps) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(top_srcdir)/build-aux/compile \
+DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
+       $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(top_srcdir)/configure $(am__configure_deps) \
+       $(top_srcdir)/build-aux/javacomp.sh.in \
+       $(top_srcdir)/build-aux/javaexec.sh.in ABOUT-NLS COPYING \
+       THANKS TODO $(top_srcdir)/build-aux/compile \
        $(top_srcdir)/build-aux/config.guess \
        $(top_srcdir)/build-aux/config.rpath \
        $(top_srcdir)/build-aux/config.sub \
        $(top_srcdir)/build-aux/install-sh \
-       $(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 README-alpha \
-       THANKS TODO
+       $(top_srcdir)/build-aux/missing
 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 \
@@ -89,6 +89,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -96,11 +97,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -189,13 +191,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-       html-recursive info-recursive install-data-recursive \
-       install-dvi-recursive install-exec-recursive \
-       install-html-recursive install-info-recursive \
-       install-pdf-recursive install-ps-recursive install-recursive \
-       installcheck-recursive installdirs-recursive pdf-recursive \
-       ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -232,9 +235,29 @@ am__installdirs = "$(DESTDIR)$(aclocaldir)"
 DATA = $(aclocal_DATA)
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
        cscope distdir dist dist-all distcheck
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 CSCOPE = cscope
@@ -297,6 +320,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -316,9 +340,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -590,6 +617,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -929,6 +957,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1115,6 +1144,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1125,6 +1155,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1255,6 +1286,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1349,6 +1381,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1461,15 +1494,15 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
            *$$dep*) \
-             echo ' cd $(srcdir) && $(AUTOMAKE) --gnits'; \
-             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnits \
+             echo ' cd $(srcdir) && $(AUTOMAKE) --gnu'; \
+             $(am__cd) $(srcdir) && $(AUTOMAKE) --gnu \
                && exit 0; \
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits Makefile
+         $(AUTOMAKE) --gnu Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1521,7 +1554,7 @@ uninstall-aclocalDATA:
 # (1) if the variable is set in 'config.status', edit 'config.status'
 #     (which will cause the Makefiles to be regenerated when you run 'make');
 # (2) otherwise, pass the desired values on the 'make' command line.
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+$(am__recursive_targets):
        @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
@@ -1549,31 +1582,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-tags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-       done
-ctags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-       done
-cscopelist-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
-       done
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -1589,12 +1604,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1606,15 +1616,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1623,18 +1629,16 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
-
 cscope: cscope.files
        test ! -s cscope.files \
          || $(CSCOPE) -b -q $(AM_CSCOPEFLAGS) $(CSCOPEFLAGS) -i cscope.files $(CSCOPE_ARGS)
-
 clean-cscope:
        -rm -f cscope.files
+cscope.files: clean-cscope cscopelist
+cscopelist: cscopelist-recursive
 
-cscope.files: clean-cscope cscopelist-recursive cscopelist
-
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
        case "$(srcdir)" in \
          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
          *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1652,12 +1656,6 @@ distclean-tags:
        -rm -f cscope.out cscope.in.out cscope.po.out cscope.files
 
 distdir: $(DISTFILES)
-       @case `sed 15q $(srcdir)/NEWS` in \
-       *"$(VERSION)"*) : ;; \
-       *) \
-         echo "NEWS not updated; not releasing" 1>&2; \
-         exit 1;; \
-       esac
        $(am__remove_distdir)
        test -d "$(distdir)" || mkdir "$(distdir)"
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1776,9 +1774,9 @@ distcheck: dist
        *.zip*) \
          unzip $(distdir).zip ;;\
        esac
-       chmod -R a-w $(distdir); chmod u+w $(distdir)
-       mkdir $(distdir)/_build
-       mkdir $(distdir)/_inst
+       chmod -R a-w $(distdir)
+       chmod u+w $(distdir)
+       mkdir $(distdir)/_build $(distdir)/_inst
        chmod a-w $(distdir)
        test -d $(distdir)/_build || exit 0; \
        dc_install_base=`$(am__cd) $(distdir)/_inst && pwd | sed -e 's,^[^:\\/]:[\\/],/,'` \
@@ -1950,25 +1948,23 @@ ps-am:
 
 uninstall-am: uninstall-aclocalDATA
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) all check \
-       cscopelist-recursive ctags-recursive install install-am \
-       install-strip tags-recursive
-
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am am--refresh check check-am clean clean-cscope \
-       clean-generic cscope cscopelist cscopelist-recursive ctags \
-       ctags-recursive dist dist-all dist-bzip2 dist-gzip dist-hook \
-       dist-lzip dist-shar dist-tarZ dist-xz dist-zip distcheck \
-       distclean distclean-generic distclean-tags distcleancheck \
-       distdir distuninstallcheck dvi dvi-am html html-am info \
-       info-am install install-aclocalDATA install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs installdirs-am maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am tags tags-recursive uninstall \
+.MAKE: $(am__recursive_targets) all check install install-am \
+       install-strip
+
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am \
+       am--refresh check check-am clean clean-cscope clean-generic \
+       cscope cscopelist-am ctags ctags-am dist dist-all dist-bzip2 \
+       dist-gzip dist-hook dist-lzip dist-shar dist-tarZ dist-xz \
+       dist-zip distcheck distclean distclean-generic distclean-tags \
+       distcleancheck distdir distuninstallcheck dvi dvi-am html \
+       html-am info info-am install install-aclocalDATA install-am \
+       install-data install-data-am install-dvi install-dvi-am \
+       install-exec install-exec-am install-html install-html-am \
+       install-info install-info-am install-man install-pdf \
+       install-pdf-am install-ps install-ps-am install-strip \
+       installcheck installcheck-am installdirs installdirs-am \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
        uninstall-aclocalDATA uninstall-am
 
 .PHONY: $(MAINTAINER_CHECKS)
@@ -1981,12 +1977,11 @@ dist-hook: gen-ChangeLog
 
 .PHONY: update-b4-copyright update-package-copyright-year
 update-b4-copyright:
-       $(AM_V_GEN) find data -type f           \
-         | grep -v -E '^data/bison.m4$$'       \
-         | xargs $(build_aux)/$@
+       $(AM_V_GEN)find $(srcdir)/data -type f          \
+         | xargs $(srcdir)/build-aux/$@
        @echo 'warning: src/parse-gram.[hc] may need to be regenerated.'
 update-package-copyright-year:
-       $(AM_V_GEN)$(build_aux)/$@ configure.ac
+       $(AM_V_GEN)$(srcdir)/build-aux/$@ $(srcdir)/configure.ac
 .PHONY: gen-ChangeLog
 gen-ChangeLog:
        $(AM_V_GEN)if test -d $(srcdir)/.git; then      \
diff --git a/NEWS b/NEWS
index 9742570..d445ce7 100644 (file)
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,202 @@
 GNU Bison NEWS
 
+* Noteworthy changes in release 2.7.1 (2013-04-15) [stable]
+
+** Bug fixes
+
+*** Fix compiler attribute portability (yacc.c)
+
+  With locations enabled, __attribute__ was used unprotected.
+
+*** Fix some compiler warnings (lalr1.cc)
+
+* Noteworthy changes in release 2.7 (2012-12-12) [stable]
+
+** Bug fixes
+
+  Warnings about uninitialized yylloc in yyparse have been fixed.
+
+  Restored C90 compliance (yet no report was ever made).
+
+** Diagnostics are improved
+
+*** Changes in the format of error messages
+
+  This used to be the format of many error reports:
+
+    input.y:2.7-12: %type redeclaration for exp
+    input.y:1.7-12: previous declaration
+
+  It is now:
+
+    input.y:2.7-12: error: %type redeclaration for exp
+    input.y:1.7-12:     previous declaration
+
+*** New format for error reports: carets
+
+  Caret errors have been added to Bison:
+
+    input.y:2.7-12: error: %type redeclaration for exp
+     %type <sval> exp
+           ^^^^^^
+    input.y:1.7-12:     previous declaration
+     %type <ival> exp
+           ^^^^^^
+
+  or
+
+    input.y:3.20-23: error: ambiguous reference: '$exp'
+     exp: exp '+' exp { $exp = $1 + $3; };
+                        ^^^^
+    input.y:3.1-3:       refers to: $exp at $$
+     exp: exp '+' exp { $exp = $1 + $3; };
+     ^^^
+    input.y:3.6-8:       refers to: $exp at $1
+     exp: exp '+' exp { $exp = $1 + $3; };
+          ^^^
+    input.y:3.14-16:     refers to: $exp at $3
+     exp: exp '+' exp { $exp = $1 + $3; };
+                  ^^^
+
+  The default behaviour for now is still not to display these unless
+  explictly asked with -fcaret (or -fall). However, in a later release, it
+  will be made the default behavior (but may still be deactivated with
+  -fno-caret).
+
+** New value for %define variable: api.pure full
+
+  The %define variable api.pure requests a pure (reentrant) parser. However,
+  for historical reasons, using it in a location-tracking Yacc parser
+  resulted in a yyerror function that did not take a location as a
+  parameter. With this new value, the user may request a better pure parser,
+  where yyerror does take a location as a parameter (in location-tracking
+  parsers).
+
+  The use of "%define api.pure true" is deprecated in favor of this new
+  "%define api.pure full".
+
+** New %define variable: api.location.type (glr.cc, lalr1.cc, lalr1.java)
+
+  The %define variable api.location.type defines the name of the type to use
+  for locations.  When defined, Bison no longer generates the position.hh
+  and location.hh files, nor does the parser will include them: the user is
+  then responsible to define her type.
+
+  This can be used in programs with several parsers to factor their location
+  and position files: let one of them generate them, and the others just use
+  them.
+
+  This feature was actually introduced, but not documented, in Bison 2.5,
+  under the name "location_type" (which is maintained for backward
+  compatibility).
+
+  For consistency, lalr1.java's %define variables location_type and
+  position_type are deprecated in favor of api.location.type and
+  api.position.type.
+
+** Exception safety (lalr1.cc)
+
+  The parse function now catches exceptions, uses the %destructors to
+  release memory (the lookahead symbol and the symbols pushed on the stack)
+  before re-throwing the exception.
+
+  This feature is somewhat experimental.  User feedback would be
+  appreciated.
+
+** Graph improvements in DOT and XSLT
+
+  The graphical presentation of the states is more readable: their shape is
+  now rectangular, the state number is clearly displayed, and the items are
+  numbered and left-justified.
+
+  The reductions are now explicitly represented as transitions to other
+  diamond shaped nodes.
+
+  These changes are present in both --graph output and xml2dot.xsl XSLT
+  processing, with minor (documented) differences.
+
+** %language is no longer an experimental feature.
+
+  The introduction of this feature, in 2.4, was four years ago. The
+  --language option and the %language directive are no longer experimental.
+
+** Documentation
+
+  The sections about shift/reduce and reduce/reduce conflicts resolution
+  have been fixed and extended.
+
+  Although introduced more than four years ago, XML and Graphviz reports
+  were not properly documented.
+
+  The translation of mid-rule actions is now described.
+
+* Noteworthy changes in release 2.6.5 (2012-11-07) [stable]
+
+  We consider compiler warnings about Bison generated parsers to be bugs.
+  Rather than working around them in your own project, please consider
+  reporting them to us.
+
+** Bug fixes
+
+  Warnings about uninitialized yylval and/or yylloc for push parsers with a
+  pure interface have been fixed for GCC 4.0 up to 4.8, and Clang 2.9 to
+  3.2.
+
+  Other issues in the test suite have been addressed.
+
+  Nul characters are correctly displayed in error messages.
+
+  When possible, yylloc is correctly initialized before calling yylex.  It
+  is no longer necessary to initialize it in the %initial-action.
+
+* Noteworthy changes in release 2.6.4 (2012-10-23) [stable]
+
+  Bison 2.6.3's --version was incorrect.  This release fixes this issue.
+
+* Noteworthy changes in release 2.6.3 (2012-10-22) [stable]
+
+** Bug fixes
+
+  Bugs and portability issues in the test suite have been fixed.
+
+  Some errors in translations have been addressed, and --help now directs
+  users to the appropriate place to report them.
+
+  Stray Info files shipped by accident are removed.
+
+  Incorrect definitions of YY_, issued by yacc.c when no parser header is
+  generated, are removed.
+
+  All the generated headers are self-contained.
+
+** Header guards (yacc.c, glr.c, glr.cc)
+
+  In order to avoid collisions, the header guards are now
+  YY_<PREFIX>_<FILE>_INCLUDED, instead of merely <PREFIX>_<FILE>.
+  For instance the header generated from
+
+    %define api.prefix "calc"
+    %defines "lib/parse.h"
+
+  will use YY_CALC_LIB_PARSE_H_INCLUDED as guard.
+
+** Fix compiler warnings in the generated parser (yacc.c, glr.c)
+
+  The compilation of pure parsers (%define api.pure) can trigger GCC
+  warnings such as:
+
+    input.c: In function 'yyparse':
+    input.c:1503:12: warning: 'yylval' may be used uninitialized in this
+                              function [-Wmaybe-uninitialized]
+       *++yyvsp = yylval;
+                ^
+
+  This is now fixed; pragmas to avoid these warnings are no longer needed.
+
+  Warnings from clang ("equality comparison with extraneous parentheses" and
+  "function declared 'noreturn' should not return") have also been
+  addressed.
+
 * Noteworthy changes in release 2.6.2 (2012-08-03) [stable]
 
 ** Bug fixes
@@ -18,7 +215,7 @@ GNU Bison NEWS
 
 * Noteworthy changes in release 2.6.1 (2012-07-30) [stable]
 
- Bison no longer executes user-specified M4 code when processing a grammar.
 Bison no longer executes user-specified M4 code when processing a grammar.
 
 ** Future Changes
 
@@ -318,6 +515,7 @@ GNU Bison NEWS
 
   These features are experimental in this version.  More user feedback
   will help to stabilize them.
+  Contributed by Alex Rozenman.
 
 ** IELR(1) and canonical LR(1):
 
@@ -834,6 +1032,7 @@ GNU Bison NEWS
 
   The current Java interface is experimental and may evolve.  More user
   feedback will help to stabilize it.
+  Contributed by Paolo Bonzini.
 
 ** %language
 
@@ -847,6 +1046,7 @@ GNU Bison NEWS
   Bison can now generate an XML report of the LALR(1) automaton using the new
   "--xml" option.  The current XML schema is experimental and may evolve.  More
   user feedback will help to stabilize it.
+  Contributed by Wojciech Polak.
 
 ** The grammar file may now specify the name of the parser header file using
   %defines.  For example:
@@ -1823,7 +2023,7 @@ Output file does not redefine const for C++.
 
 -----
 
-Copyright (C) 1995-2012 Free Software Foundation, Inc.
+Copyright (C) 1995-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Parser Generator.
 
@@ -1857,7 +2057,8 @@ along with this program.  If not, see <http://www.gnu.org/licenses/>.
  LocalWords:  namespaces strerror const autoconfiguration Dconst Autoconf's FDL
  LocalWords:  Automake TMPDIR LESSEQ ylwrap endif yydebug YYTOKEN YYLSP ival hh
  LocalWords:  extern YYTOKENTYPE TOKENTYPE yytokentype tokentype STYPE lval pdf
- LocalWords:  lang yyoutput dvi html ps POSIX lvalp llocp
+ LocalWords:  lang yyoutput dvi html ps POSIX lvalp llocp calc yyo fval Wmaybe
+ LocalWords:  yyvsp pragmas noreturn java's
 
 Local Variables:
 mode: outline
index c890eed..c8bbbf6 100644 (file)
--- a/PACKAGING
+++ b/PACKAGING
@@ -36,7 +36,7 @@ to the bison package.
 
 -----
 
-Copyright (C) 2002, 2005, 2009-2012 Free Software Foundation, Inc.
+Copyright (C) 2002, 2005, 2009-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
diff --git a/README b/README
index 04bf510..ad667a2 100644 (file)
--- a/README
+++ b/README
@@ -44,7 +44,7 @@ End:
 
 -----
 
-Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2012 Free Software
+Copyright (C) 1992, 1998-1999, 2003-2005, 2008-2013 Free Software
 Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
diff --git a/README-alpha b/README-alpha
deleted file mode 100644 (file)
index a137c39..0000000
+++ /dev/null
@@ -1,30 +0,0 @@
--*- 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 af718ed..4d9423a 100644 (file)
@@ -31,18 +31,18 @@ Here are most of the steps we (maintainers) follow when making a release.
 
     make check syntax-check distcheck
 
-* 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
+* To (i) set the date, version number, and release TYPE on line 3 of
+  NEWS, (ii) commit that, and (iii) tag the release, run
 
-    make release-commit RELEASE='X.Y stable'
+    # "TYPE" must be stable, beta or alpha
+    make release-commit RELEASE='X.Y TYPE'
 
 * Run the following to create release tarballs.  Your choice selects the
   corresponding upload-to destination in the emitted gnupload command.
   The different destinations are specified in cfg.mk.  See the definitions
   of gnu_ftp_host-{alpha,beta,stable}.
 
-    # "TYPE" must be stable, beta or alpha
-    make TYPE
+    make release RELEASE='X.Y TYPE'
 
 * Test the tarball.  Copy it to a few odd-ball systems and ensure that
   it builds and passes all tests.
@@ -53,7 +53,10 @@ Here are most of the steps we (maintainers) follow when making a release.
 
 Once all the builds and tests have passed,
 
-* Run the gnupload command that was suggested by your "make TYPE" run above.
+* Run the gnupload command that was suggested by your "make release"
+  run above, or run
+
+    make upload RELEASE='X.Y TYPE'
 
 * Wait a few minutes (maybe up to 30?) and then use the release URLs to
   download all tarball/signature pairs and use gpg --verify to ensure
diff --git a/THANKS b/THANKS
index 95acb1e..a2d3ea2 100644 (file)
--- a/THANKS
+++ b/THANKS
@@ -1,11 +1,12 @@
 Bison was originally written by Robert Corbett.  It would not be what
 it is today without the invaluable help of these people:
 
+Аскар Сафин              safinaskar@mail.ru
 Airy Andre                Airy.Andre@edf.fr
-Akim Demaille             akim@freefriends.org
+Akim Demaille             akim@lrde.epita.fr
 Albert Chin-A-Young       china@thewrittenword.com
 Alexander Belopolsky      alexb@rentec.com
-Alexandre Duret-Lutz      adl@src.lip6.fr
+Alexandre Duret-Lutz      adl@lrde.epita.fr
 Andreas Schwab            schwab@suse.de
 Andrew Suffield           asuffield@users.sourceforge.net
 Angelo Borsotti           angelo.borsotti@gmail.com
@@ -31,6 +32,7 @@ Dagobert Michelsen        dam@baltic-online.de
 Daniel Hagerty            hag@gnu.org
 David J. MacKenzie        djm@gnu.org
 David Kastrup             dak@gnu.org
+Dennis Clarke             dclarke@blastwave.org
 Derek M. Jones            derek@knosof.co.uk
 Di-an Jan                 dianj@freeshell.org
 Dick Streefland           dick.streefland@altium.nl
@@ -56,6 +58,7 @@ Jim Kent                  jkent@arch.sel.sony.com
 Jim Meyering              jim@meyering.net
 Joel E. Denny             joeldenny@joeldenny.org
 Johan van Selst           johans@stack.nl
+Jonathan Fabrizio         jonathan.fabrizio@lrde.epita.fr
 Jonathan Nieder           jrnieder@gmail.com
 Juan Manuel Guerrero      juan.guerrero@gmx.de
 Kees Zeelenberg           kzlg@users.sourceforge.net
@@ -64,6 +67,8 @@ Laurent Mascherpa         laurent.mascherpa@epita.fr
 Lie Yan                   lie.yan@kaust.edu.sa
 Magnus Fromreide          magfr@lysator.liu.se
 Marc Autret               autret_m@epita.fr
+Marc Mendiola             mmendiol@usc.edu
+Mark Boyall               wolfeinstein@gmail.com
 Martin Jacobs             martin.jacobs@arcor.de
 Martin Mokrejs            mmokrejs@natur.cuni.cz
 Martin Nylin              martin.nylin@linuxmail.org
@@ -80,20 +85,25 @@ Nicolas Tisserand         nicolas.tisserand@epita.fr
 Noah Friedman             friedman@gnu.org
 Odd Arild Olsen           oao@fibula.no
 Oleg Smolsky              oleg.smolsky@pacific-simulators.co.nz
+Oleksii Taran             oleksii.taran@gmail.com
 Paolo Bonzini             bonzini@gnu.org
 Pascal Bart               pascal.bart@epita.fr
 Paul Eggert               eggert@cs.ucla.edu
 Paul Hilfinger            Hilfinger@CS.Berkeley.EDU
 Per Allansson             per@appgate.com
+Peter Eisentraut          peter_e@gmx.net
 Peter Fales               psfales@lucent.com
 Peter Hamorsky            hamo@upjs.sk
+Peter Simons              simons@cryp.to
 Piotr Gackiewicz          gacek@intertel.com.pl
 Quoc Peyrot               chojin@lrde.epita.fr
 R Blake                   blakers@mac.com
 Raja R Harinath           harinath@cs.umn.edu
 Ralf Wildenhues           Ralf.Wildenhues@gmx.de
 Richard Stallman          rms@gnu.org
+Rob Vermaas               rob.vermaas@gmail.com
 Robert Anisko             anisko_r@epita.fr
+Rob Conde                 rob.conde@ai-solutions.com
 Satya Kiran Popuri        satyakiran@gmail.com
 Sebastian Setzer          sebastian.setzer.ext@siemens.com
 Sebastien Fricker         sebastien.fricker@gmail.com
@@ -102,6 +112,7 @@ Shura                     debil_urod@ngs.ru
 Stefano Lattarini         stefano.lattarini@gmail.com
 Steve Murphy              murf@parsetree.com
 Sum Wu                    sum@geekhouse.org
+Théophile Ranquet         theophile.ranquet@gmail.com
 Thiru Ramakrishnan        thiru.ramakrishnan@gmail.com
 Tim Josling               tej@melbpc.org.au
 Tim Landscheidt           tim@tim-landscheidt.de
@@ -111,10 +122,12 @@ Tom Tromey                tromey@cygnus.com
 Tommy Nordgren            tommy.nordgren@chello.se
 Troy A. Johnson           troyj@ecn.purdue.edu
 Tys Lefering              gccbison@gmail.com
+Victor Khomenko           victor.khomenko@newcastle.ac.uk
 Vin Shelton               acs@alumni.princeton.edu
 W.C.A. Wijngaards         wouter@NLnetLabs.nl
 Wayne Green               wayne@infosavvy.com
 Wei Song                  wsong83@gmail.com
+Wojciech Polak            polak@gnu.org
 Wolfgang S. Kechel        wolfgang.kechel@prs.de
 Wolfram Wagner            ww@mpi-sb.mpg.de
 Wwp                       subscript@free.fr
@@ -125,11 +138,12 @@ thank them!  Please, help us keeping this list up to date.
 
 Local Variables:
 mode: text
+coding: utf-8
 End:
 
 -----
 
-Copyright (C) 2000-2012 Free Software Foundation, Inc.
+Copyright (C) 2000-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Parser Generator.
 
diff --git a/TODO b/TODO
index 4f628a2..45307ce 100644 (file)
--- a/TODO
+++ b/TODO
@@ -1,4 +1,17 @@
 * Short term
+** Graphviz display code thoughts
+The code for the --graph option is over two files: print_graph, and
+graphviz. I believe this is because Bison used to also produce VCG graphs,
+but since this is no longer true, maybe we could consider these files for
+fusion.
+
+Little effort factoring seems to have been given to factoring in these files,
+and their print-xml and print counterpart. We would very much like to re-use
+the pretty format of states from .output in the .dot
+
+Also, the underscore in print_graph.[ch] isn't very fitting considering
+the dashes in the other filenames.
+
 ** Variable names.
 What should we name `variant' and `lex_symbol'?
 
@@ -338,7 +351,7 @@ End:
 
 -----
 
-Copyright (C) 2001-2004, 2006, 2008-2012 Free Software Foundation, Inc.
+Copyright (C) 2001-2004, 2006, 2008-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
index 42cd2c3..1566b0b 100644 (file)
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.12.2 -*- Autoconf -*-
+# generated automatically by aclocal 1.13.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2012 Free Software Foundation, Inc.
 
@@ -11,6 +11,7 @@
 # even the implied warranty of MERCHANTABILITY or FITNESS FOR A
 # PARTICULAR PURPOSE.
 
+m4_ifndef([AC_CONFIG_MACRO_DIRS], [m4_defun([_AM_CONFIG_MACRO_DIRS], [])m4_defun([AC_CONFIG_MACRO_DIRS], [_AM_CONFIG_MACRO_DIRS($@)])])
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 m4_if(m4_defn([AC_AUTOCONF_VERSION]), [2.69],,
@@ -19,24 +20,22 @@ You have another version of autoconf.  It may work, but is not guaranteed to.
 If you have problems, you may need to regenerate the build system entirely.
 To do so, use the procedure documented by the package, typically 'autoreconf'.])])
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 8
-
 # AM_AUTOMAKE_VERSION(VERSION)
 # ----------------------------
 # Automake X.Y traces this macro to ensure aclocal.m4 has been
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.12'
+[am__api_version='1.13'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.12.2], [],
+m4_if([$1], [1.13.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -52,21 +51,19 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.12.2])dnl
+[AM_AUTOMAKE_VERSION([1.13.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 
 # AM_AUX_DIR_EXPAND                                         -*- Autoconf -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # For projects using AC_CONFIG_AUX_DIR([foo]), Autoconf sets
 # $ac_aux_dir to '$srcdir/foo'.  In other projects, it is set to
 # '$srcdir', '$srcdir/..', or '$srcdir/../..'.
@@ -114,14 +111,12 @@ am_aux_dir=`cd $ac_aux_dir && pwd`
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
 
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 10
-
 # AM_CONDITIONAL(NAME, SHELL-CONDITION)
 # -------------------------------------
 # Define a conditional.
@@ -147,13 +142,12 @@ AC_CONFIG_COMMANDS_PRE(
 Usually this means the macro was only invoked conditionally.]])
 fi])])
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 17
 
 # There are a few dirty hacks below to avoid letting 'AC_PROG_CC' be
 # written in clear, in which case automake, when reading aclocal.m4,
@@ -339,19 +333,18 @@ _AM_SUBST_NOTMAKE([am__nodep])dnl
 
 # Generate code to set up dependency tracking.              -*- Autoconf -*-
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
 
 # _AM_OUTPUT_DEPENDENCY_COMMANDS
 # ------------------------------
 AC_DEFUN([_AM_OUTPUT_DEPENDENCY_COMMANDS],
 [{
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -416,14 +409,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 
 # Do all the work for Automake.                             -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 19
-
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
@@ -439,7 +430,7 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # arguments mandatory, and then we can depend on a new Autoconf
 # release and drop the old call support.
 AC_DEFUN([AM_INIT_AUTOMAKE],
-[AC_PREREQ([2.62])dnl
+[AC_PREREQ([2.65])dnl
 dnl Autoconf wants to disallow AM_ names.  We explicitly allow
 dnl the ones we care about.
 m4_pattern_allow([^AM_[A-Z]+FLAGS$])dnl
@@ -469,8 +460,7 @@ AC_SUBST([CYGPATH_W])
 dnl Distinguish between old-style and new-style calls.
 m4_ifval([$2],
 [AC_DIAGNOSE([obsolete],
-[$0: two- and three-arguments forms are deprecated.  For more info, see:
-http://www.gnu.org/software/automake/manual/automake.html#Modernize-AM_INIT_AUTOMAKE-invocation])
+             [$0: two- and three-arguments forms are deprecated.])
 m4_ifval([$3], [_AM_SET_OPTION([no-define])])dnl
  AC_SUBST([PACKAGE], [$1])dnl
  AC_SUBST([VERSION], [$2])],
@@ -524,18 +514,15 @@ AC_PROVIDE_IFELSE([AC_PROG_OBJC],
                  [_AM_DEPENDENCIES([OBJC])],
                  [m4_define([AC_PROG_OBJC],
                             m4_defn([AC_PROG_OBJC])[_AM_DEPENDENCIES([OBJC])])])dnl
-dnl Support for Objective C++ was only introduced in Autoconf 2.65,
-dnl but we still cater to Autoconf 2.62.
-m4_ifdef([AC_PROG_OBJCXX],
-[AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
+AC_PROVIDE_IFELSE([AC_PROG_OBJCXX],
                  [_AM_DEPENDENCIES([OBJCXX])],
                  [m4_define([AC_PROG_OBJCXX],
-                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])])dnl
+                            m4_defn([AC_PROG_OBJCXX])[_AM_DEPENDENCIES([OBJCXX])])])dnl
 ])
-_AM_IF_OPTION([silent-rules], [AC_REQUIRE([AM_SILENT_RULES])])dnl
-dnl The 'parallel-tests' driver may need to know about EXEEXT, so add the
-dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This macro
-dnl is hooked onto _AC_COMPILER_EXEEXT early, see below.
+AC_REQUIRE([AM_SILENT_RULES])dnl
+dnl The testsuite driver may need to know about EXEEXT, so add the
+dnl 'am__EXEEXT' conditional if _AM_COMPILER_EXEEXT was seen.  This
+dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
@@ -569,14 +556,12 @@ for _am_header in $config_headers :; do
 done
 echo "timestamp for $_am_arg" >`AS_DIRNAME(["$_am_arg"])`/stamp-h[]$_am_stamp_count])
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 8
-
 # AM_PROG_INSTALL_SH
 # ------------------
 # Define $install_sh.
@@ -592,14 +577,12 @@ if test x"${install_sh}" != xset; then
 fi
 AC_SUBST([install_sh])])
 
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # Check whether the underlying file-system supports filenames
 # with a leading dot.  For instance MS-DOS doesn't.
 AC_DEFUN([AM_SET_LEADING_DOT],
@@ -615,14 +598,12 @@ AC_SUBST([am__leading_dot])])
 
 # Check to see how 'make' treats includes.                 -*- Autoconf -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 5
-
 # AM_MAKE_INCLUDE()
 # -----------------
 # Check to see how make treats includes.
@@ -665,14 +646,12 @@ AC_MSG_RESULT([$_am_result])
 rm -f confinc confmf
 ])
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # AM_PROG_CC_C_O
 # --------------
 # Like AC_PROG_CC_C_O, but changed for automake.
@@ -701,14 +680,12 @@ m4_define([AC_PROG_CC],
 
 # Fake the existence of programs that GNU maintainers use.  -*- Autoconf -*-
 
-# Copyright (C) 1997-2012 Free Software Foundation, Inc.
+# Copyright (C) 1997-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 7
-
 # AM_MISSING_PROG(NAME, PROGRAM)
 # ------------------------------
 AC_DEFUN([AM_MISSING_PROG],
@@ -716,11 +693,10 @@ AC_DEFUN([AM_MISSING_PROG],
 $1=${$1-"${am_missing_run}$2"}
 AC_SUBST($1)])
 
-
 # AM_MISSING_HAS_RUN
 # ------------------
-# Define MISSING if not defined so far and test if it supports --run.
-# If it does, set am_missing_run to use it, otherwise, to nothing.
+# Define MISSING if not defined so far and test if it is modern enough.
+# If it is, set am_missing_run to use it, otherwise, to nothing.
 AC_DEFUN([AM_MISSING_HAS_RUN],
 [AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
 AC_REQUIRE_AUX_FILE([missing])dnl
@@ -733,57 +709,22 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
   AC_MSG_WARN(['missing' script is too old or missing])
 fi
 ])
 
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
-#
-# This file is free software; the Free Software Foundation
-# gives unlimited permission to copy and/or distribute it,
-# with or without modifications, as long as this notice is preserved.
-
-# serial 3
-
-# AM_PROG_MKDIR_P
-# ---------------
-# Check for 'mkdir -p'.
-AC_DEFUN([AM_PROG_MKDIR_P],
-[AC_PREREQ([2.60])dnl
-AC_REQUIRE([AC_PROG_MKDIR_P])dnl
-dnl FIXME to be removed in Automake 1.13.
-AC_DIAGNOSE([obsolete],
-[$0: this macro is deprecated, and will soon be removed.
-You should use the Autoconf-provided 'AC][_PROG_MKDIR_P' macro instead,
-and use '$(MKDIR_P)' instead of '$(mkdir_p)'in your Makefile.am files.])
-dnl Automake 1.8 to 1.9.6 used to define mkdir_p.  We now use MKDIR_P,
-dnl while keeping a definition of mkdir_p for backward compatibility.
-dnl @MKDIR_P@ is magic: AC_OUTPUT adjusts its value for each Makefile.
-dnl However we cannot define mkdir_p as $(MKDIR_P) for the sake of
-dnl Makefile.ins that do not define MKDIR_P, so we do our own
-dnl adjustment using top_builddir (which is defined more often than
-dnl MKDIR_P).
-AC_SUBST([mkdir_p], ["$MKDIR_P"])dnl
-case $mkdir_p in
-  [[\\/$]]* | ?:[[\\/]]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-])
-
 # Helper functions for option handling.                     -*- Autoconf -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 6
-
 # _AM_MANGLE_OPTION(NAME)
 # -----------------------
 AC_DEFUN([_AM_MANGLE_OPTION],
@@ -809,14 +750,12 @@ AC_DEFUN([_AM_IF_OPTION],
 
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 9
-
 # AM_SANITY_CHECK
 # ---------------
 AC_DEFUN([AM_SANITY_CHECK],
@@ -892,14 +831,12 @@ AC_CONFIG_COMMANDS_PRE(
 rm -f conftest.file
 ])
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
-
 # AM_SILENT_RULES([DEFAULT])
 # --------------------------
 # Enable less verbose build rules; with the default set to DEFAULT
@@ -954,14 +891,12 @@ AC_SUBST([AM_BACKSLASH])dnl
 _AM_SUBST_NOTMAKE([AM_BACKSLASH])dnl
 ])
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 2
-
 # AM_PROG_INSTALL_STRIP
 # ---------------------
 # One issue with vendor 'install' (even GNU) is that you can't
@@ -984,14 +919,12 @@ fi
 INSTALL_STRIP_PROGRAM="\$(install_sh) -c -s"
 AC_SUBST([INSTALL_STRIP_PROGRAM])])
 
-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
-
 # _AM_SUBST_NOTMAKE(VARIABLE)
 # ---------------------------
 # Prevent Automake from outputting VARIABLE = @VARIABLE@ in Makefile.in.
@@ -1005,14 +938,12 @@ AC_DEFUN([AM_SUBST_NOTMAKE], [_AM_SUBST_NOTMAKE($@)])
 
 # Check how to create a tarball.                            -*- Autoconf -*-
 
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# serial 3
-
 # _AM_PROG_TAR(FORMAT)
 # --------------------
 # Check how to create a tarball in format FORMAT.
@@ -1125,6 +1056,7 @@ m4_include([m4/exponentd.m4])
 m4_include([m4/exponentf.m4])
 m4_include([m4/exponentl.m4])
 m4_include([m4/extensions.m4])
+m4_include([m4/extern-inline.m4])
 m4_include([m4/fatal-signal.m4])
 m4_include([m4/fcntl-o.m4])
 m4_include([m4/fcntl.m4])
@@ -1139,7 +1071,9 @@ m4_include([m4/frexp.m4])
 m4_include([m4/frexpl.m4])
 m4_include([m4/fseterr.m4])
 m4_include([m4/fstat.m4])
+m4_include([m4/getdelim.m4])
 m4_include([m4/getdtablesize.m4])
+m4_include([m4/getline.m4])
 m4_include([m4/getopt.m4])
 m4_include([m4/gettext.m4])
 m4_include([m4/glibc21.m4])
@@ -1147,7 +1081,6 @@ m4_include([m4/gnulib-common.m4])
 m4_include([m4/gnulib-comp.m4])
 m4_include([m4/iconv.m4])
 m4_include([m4/include_next.m4])
-m4_include([m4/inline.m4])
 m4_include([m4/intlmacosx.m4])
 m4_include([m4/intmax_t.m4])
 m4_include([m4/inttypes-pri.m4])
index 5b077b8..d307de4 100644 (file)
@@ -1,4 +1,4 @@
-## Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+## Copyright (C) 2006, 2009-2013 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
index 58e48bd..9c5fe94 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -62,7 +62,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = build-aux
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in compile \
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am compile \
        config.guess config.rpath config.sub depcomp install-sh \
        mdate-sh missing texinfo.tex ylwrap
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
@@ -80,6 +80,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -87,11 +88,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -183,6 +185,7 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -200,6 +203,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -219,9 +223,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -493,6 +500,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -832,6 +840,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1018,6 +1027,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1028,6 +1038,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1158,6 +1169,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1252,6 +1264,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1342,9 +1355,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits build-aux/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu build-aux/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits build-aux/Makefile
+         $(AUTOMAKE) --gnu build-aux/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1363,11 +1376,9 @@ $(top_srcdir)/configure:  $(am__configure_deps)
 $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
        cd $(top_builddir) && $(MAKE) $(AM_MAKEFLAGS) am--refresh
 $(am__aclocal_m4_deps):
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
@@ -1504,15 +1515,16 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic distclean \
-       distclean-generic distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+       ctags-am distclean distclean-generic distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+       pdf-am ps ps-am tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index ec7c22a..3a64ec6 100755 (executable)
@@ -9,7 +9,7 @@ my $VERSION = '2012-06-08 06:53'; # UTC
 # If you change this file with Emacs, please let the write hook
 # do its job.  Otherwise, update this string manually.
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
index bac481c..531136b 100755 (executable)
@@ -1,10 +1,9 @@
 #! /bin/sh
-# Wrapper for compilers which do not understand `-c -o'.
+# Wrapper for compilers which do not understand '-c -o'.
 
-scriptversion=2010-11-15.09; # UTC
+scriptversion=2012-10-14.11; # UTC
 
-# Copyright (C) 1999, 2000, 2003, 2004, 2005, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
 # This program is free software; you can redistribute it and/or modify
@@ -40,7 +39,7 @@ file_conv=
 
 # func_file_conv build_file lazy
 # Convert a $build file to $host form and store it in $file
-# Currently only supports Win32 hosts. If the determined conversion
+# Currently only supports Windows hosts. If the determined conversion
 # type is listed in (the comma separated) LAZY, no conversion will
 # take place.
 func_file_conv ()
@@ -79,6 +78,53 @@ func_file_conv ()
   esac
 }
 
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
 # func_cl_wrapper cl arg...
 # Adjust compile command to suit cl
 func_cl_wrapper ()
@@ -94,7 +140,7 @@ func_cl_wrapper ()
     else
       case $1 in
        -o)
-         # configure might choose to run compile as `compile cc -o foo foo.c'.
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
          eat=1
          case $2 in
            *.o | *.[oO][bB][jJ])
@@ -109,43 +155,34 @@ func_cl_wrapper ()
              ;;
          esac
          ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
        -I*)
          func_file_conv "${1#-I}" mingw
          set x "$@" -I"$file"
          shift
          ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
        -l*)
-         lib=${1#-l}
-         found=no
-         save_IFS=$IFS
-         IFS=';'
-         for dir in $lib_path $LIB
-         do
-           IFS=$save_IFS
-           if $shared && test -f "$dir/$lib.dll.lib"; then
-             found=yes
-             set x "$@" "$dir/$lib.dll.lib"
-             break
-           fi
-           if test -f "$dir/$lib.lib"; then
-             found=yes
-             set x "$@" "$dir/$lib.lib"
-             break
-           fi
-         done
-         IFS=$save_IFS
-
-         test "$found" != yes && set x "$@" "$lib.lib"
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
          shift
          ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
        -L*)
-         func_file_conv "${1#-L}"
-         if test -z "$lib_path"; then
-           lib_path=$file
-         else
-           lib_path="$lib_path;$file"
-         fi
-         linker_opts="$linker_opts -LIBPATH:$file"
+         func_cl_dashL "${1#-L}"
          ;;
        -static)
          shared=false
@@ -196,19 +233,19 @@ eat=
 
 case $1 in
   '')
-     echo "$0: No command.  Try \`$0 --help' for more information." 1>&2
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
      exit 1;
      ;;
   -h | --h*)
     cat <<\EOF
 Usage: compile [--help] [--version] PROGRAM [ARGS]
 
-Wrapper for compilers which do not understand `-c -o'.
-Remove `-o dest.o' from ARGS, run PROGRAM with the remaining
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
 arguments, and rename the output as expected.
 
 If you are trying to build a whole package this is not the
-right script to run: please start by reading the file `INSTALL'.
+right script to run: please start by reading the file 'INSTALL'.
 
 Report bugs to <bug-automake@gnu.org>.
 EOF
@@ -233,8 +270,8 @@ do
   else
     case $1 in
       -o)
-       # configure might choose to run compile as `compile cc -o foo foo.c'.
-       # So we strip `-o arg' only if arg is an object.
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
        eat=1
        case $2 in
          *.o | *.obj)
@@ -261,10 +298,10 @@ do
 done
 
 if test -z "$ofile" || test -z "$cfile"; then
-  # If no `-o' option was seen then we might have been invoked from a
+  # If no '-o' option was seen then we might have been invoked from a
   # pattern rule where we don't need one.  That is ok -- this is a
   # normal compilation that the losing compiler can handle.  If no
-  # `.c' file was seen then we are probably linking.  That is also
+  # '.c' file was seen then we are probably linking.  That is also
   # ok.
   exec "$@"
 fi
@@ -273,7 +310,7 @@ fi
 cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
 
 # Create the lock directory.
-# Note: use `[/\\:.-]' here to ensure that we don't use the same name
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
 # that we are using for the .o file.  Also, base the name on the expected
 # object file name, since that is what matters with a parallel build.
 lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
index ad5f74a..f475ceb 100755 (executable)
@@ -1,14 +1,12 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2012-07-31'
+timestamp='2013-02-12'
 
 # 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
-# the Free Software Foundation; either version 2 of the License, or
+# 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
@@ -22,19 +20,17 @@ timestamp='2012-07-31'
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
-
-
-# Originally written by Per Bothner.  Please send patches (context
-# diff format) to <config-patches@gnu.org> and include a ChangeLog
-# entry.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 #
-# This script attempts to guess a canonical system name similar to
-# config.sub.  If it succeeds, it prints the system name on stdout, and
-# exits with 0.  Otherwise, it exits with 1.
+# Originally written by Per Bothner.
 #
 # You can get the latest version of this script from:
 # http://git.savannah.gnu.org/gitweb/?p=config.git;a=blob_plain;f=config.guess;hb=HEAD
+#
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
+
 
 me=`echo "$0" | sed -e 's,.*/,,'`
 
@@ -54,9 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -306,7 +300,7 @@ case "${UNAME_MACHINE}:${UNAME_SYSTEM}:${UNAME_RELEASE}:${UNAME_VERSION}" in
     arm:RISC*:1.[012]*:*|arm:riscix:1.[012]*:*)
        echo arm-acorn-riscix${UNAME_RELEASE}
        exit ;;
-    arm:riscos:*:*|arm:RISCOS:*:*)
+    arm*:riscos:*:*|arm*:RISCOS:*:*)
        echo arm-unknown-riscos
        exit ;;
     SR2?01:HI-UX/MPP:*:* | SR8000:HI-UX/MPP:*:*)
@@ -959,6 +953,9 @@ EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-gnu"; exit; }
        ;;
+    or1k:Linux:*:*)
+       echo ${UNAME_MACHINE}-unknown-linux-gnu
+       exit ;;
     or32:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-gnu
        exit ;;
@@ -1208,6 +1205,9 @@ EOF
     BePC:Haiku:*:*)    # Haiku running on Intel PC compatible.
        echo i586-pc-haiku
        exit ;;
+    x86_64:Haiku:*:*)
+       echo x86_64-unknown-haiku
+       exit ;;
     SX-4:SUPER-UX:*:*)
        echo sx4-nec-superux${UNAME_RELEASE}
        exit ;;
index 1a07018..c38b914 100755 (executable)
@@ -2,7 +2,7 @@
 # Output a system dependent set of variables, describing how to set the
 # run time search path of shared libraries in an executable.
 #
-#   Copyright 1996-2012 Free Software Foundation, Inc.
+#   Copyright 1996-2013 Free Software Foundation, Inc.
 #   Taken from GNU libtool, 2001
 #   Originally by Gordon Matzigkeit <gord@gnu.ai.mit.edu>, 1996
 #
index b15df57..872199a 100755 (executable)
@@ -1,24 +1,18 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999,
-#   2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010,
-#   2011, 2012 Free Software Foundation, Inc.
+#   Copyright 1992-2013 Free Software Foundation, Inc.
 
-timestamp='2012-07-31'
+timestamp='2013-02-12'
 
-# This file is (in principle) common to ALL GNU software.
-# The presence of a machine in this file suggests that SOME GNU software
-# can handle that machine.  It does not imply ALL GNU software can.
-#
-# 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
-# the Free Software Foundation; either version 2 of the License, or
+# 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
+# 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.
+# 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/>.
@@ -26,11 +20,12 @@ timestamp='2012-07-31'
 # As a special exception to the GNU General Public License, if you
 # distribute this file as part of a program that contains a
 # configuration script generated by Autoconf, you may include it under
-# the same distribution terms that you use for the rest of that program.
+# the same distribution terms that you use for the rest of that
+# program.  This Exception is an additional permission under section 7
+# of the GNU General Public License, version 3 ("GPLv3").
 
 
-# Please send patches to <config-patches@gnu.org>.  Submit a context
-# diff and a properly formatted GNU ChangeLog entry.
+# Please send patches with a ChangeLog entry to config-patches@gnu.org.
 #
 # Configuration subroutine to validate and canonicalize a configuration type.
 # Supply the specified configuration type as an argument.
@@ -73,9 +68,7 @@ Report bugs and patches to <config-patches@gnu.org>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright (C) 1992, 1993, 1994, 1995, 1996, 1997, 1998, 1999, 2000,
-2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012
-Free Software Foundation, Inc.
+Copyright 1992-2013 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -123,7 +116,7 @@ esac
 maybe_os=`echo $1 | sed 's/^\(.*\)-\([^-]*-[^-]*\)$/\2/'`
 case $maybe_os in
   nto-qnx* | linux-gnu* | linux-android* | linux-dietlibc | linux-newlib* | \
-  linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
+  linux-musl* | linux-uclibc* | uclinux-uclibc* | uclinux-gnu* | kfreebsd*-gnu* | \
   knetbsd*-gnu* | netbsd*-gnu* | \
   kopensolaris*-gnu* | \
   storm-chaos* | os2-emx* | rtmk-nova*)
@@ -156,7 +149,7 @@ case $os in
        -convergent* | -ncr* | -news | -32* | -3600* | -3100* | -hitachi* |\
        -c[123]* | -convex* | -sun | -crds | -omron* | -dg | -ultra | -tti* | \
        -harris | -dolphin | -highlevel | -gould | -cbm | -ns | -masscomp | \
-       -apple | -axis | -knuth | -cray | -microblaze)
+       -apple | -axis | -knuth | -cray | -microblaze*)
                os=
                basic_machine=$1
                ;;
@@ -259,8 +252,10 @@ case $basic_machine in
        | alpha | alphaev[4-8] | alphaev56 | alphaev6[78] | alphapca5[67] \
        | alpha64 | alpha64ev[4-8] | alpha64ev56 | alpha64ev6[78] | alpha64pca5[67] \
        | am33_2.0 \
-       | arc | arm | arm[bl]e | arme[lb] | armv[2345] | armv[345][lb] | avr | avr32 \
-        | be32 | be64 \
+       | arc \
+       | arm | arm[bl]e | arme[lb] | armv[2-8] | armv[3-8][lb] | armv7[arm] \
+       | avr | avr32 \
+       | be32 | be64 \
        | bfin \
        | c4x | clipper \
        | d10v | d30v | dlx | dsp16xx \
@@ -273,7 +268,7 @@ case $basic_machine in
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
-       | maxq | mb | microblaze | mcore | mep | metag \
+       | maxq | mb | microblaze | microblazeel | mcore | mep | metag \
        | mips | mipsbe | mipseb | mipsel | mipsle \
        | mips16 \
        | mips64 | mips64el \
@@ -291,16 +286,17 @@ case $basic_machine in
        | mipsisa64r2 | mipsisa64r2el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
+       | mipsr5900 | mipsr5900el \
        | mipstx39 | mipstx39el \
        | mn10200 | mn10300 \
        | moxie \
        | mt \
        | msp430 \
        | nds32 | nds32le | nds32be \
-       | nios | nios2 \
+       | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
        | open8 \
-       | or32 \
+       | or1k | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
@@ -389,7 +385,8 @@ case $basic_machine in
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
        | m68000-* | m680[012346]0-* | m68360-* | m683?2-* | m68k-* \
-       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* | microblaze-* \
+       | m88110-* | m88k-* | maxq-* | mcore-* | metag-* \
+       | microblaze-* | microblazeel-* \
        | mips-* | mipsbe-* | mipseb-* | mipsel-* | mipsle-* \
        | mips16-* \
        | mips64-* | mips64el-* \
@@ -407,12 +404,13 @@ case $basic_machine in
        | mipsisa64r2-* | mipsisa64r2el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
+       | mipsr5900-* | mipsr5900el-* \
        | mipstx39-* | mipstx39el-* \
        | mmix-* \
        | mt-* \
        | msp430-* \
        | nds32-* | nds32le-* | nds32be-* \
-       | nios-* | nios2-* \
+       | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
        | orion-* \
@@ -788,7 +786,7 @@ case $basic_machine in
                basic_machine=ns32k-utek
                os=-sysv
                ;;
-       microblaze)
+       microblaze*)
                basic_machine=microblaze-xilinx
                ;;
        mingw64)
@@ -1023,7 +1021,11 @@ case $basic_machine in
                basic_machine=i586-unknown
                os=-pw32
                ;;
-       rdos)
+       rdos | rdos64)
+               basic_machine=x86_64-pc
+               os=-rdos
+               ;;
+       rdos32)
                basic_machine=i386-pc
                os=-rdos
                ;;
@@ -1350,7 +1352,7 @@ case $os in
        -gnu* | -bsd* | -mach* | -minix* | -genix* | -ultrix* | -irix* \
              | -*vms* | -sco* | -esix* | -isc* | -aix* | -cnk* | -sunos | -sunos[34]*\
              | -hpux* | -unos* | -osf* | -luna* | -dgux* | -auroraux* | -solaris* \
-             | -sym* | -kopensolaris* \
+             | -sym* | -kopensolaris* | -plan9* \
              | -amigaos* | -amigados* | -msdos* | -newsos* | -unicos* | -aof* \
              | -aos* | -aros* \
              | -nindy* | -vxsim* | -vxworks* | -ebmon* | -hms* | -mvs* \
@@ -1364,7 +1366,7 @@ case $os in
              | -chorusos* | -chorusrdb* | -cegcc* \
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* \
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
-             | -linux-newlib* | -linux-uclibc* \
+             | -linux-newlib* | -linux-musl* | -linux-uclibc* \
              | -uxpv* | -beos* | -mpeix* | -udk* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
@@ -1496,9 +1498,6 @@ case $os in
        -aros*)
                os=-aros
                ;;
-       -kaos*)
-               os=-kaos
-               ;;
        -zvmoe)
                os=-zvmoe
                ;;
@@ -1590,6 +1589,9 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
+       or1k-*)
+               os=-elf
+               ;;
        or32-*)
                os=-coff
                ;;
index ff355eb..c5c3bd9 100644 (file)
@@ -1,4 +1,4 @@
-# Copyright (C) 2012 Free Software Foundation, Inc.
+# Copyright (C) 2012-2013 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
index debb6ff..91d4bf8 100755 (executable)
@@ -1,9 +1,9 @@
 #! /bin/sh
 # depcomp - compile a program generating dependencies as side-effects
 
-scriptversion=2012-03-27.16; # UTC
+scriptversion=2012-10-18.11; # UTC
 
-# Copyright (C) 1999-2012 Free Software Foundation, Inc.
+# Copyright (C) 1999-2013 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
@@ -27,9 +27,9 @@ scriptversion=2012-03-27.16; # UTC
 
 case $1 in
   '')
-     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
-     exit 1;
-     ;;
+    echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+    exit 1;
+    ;;
   -h | --h*)
     cat <<\EOF
 Usage: depcomp [--help] [--version] PROGRAM [ARGS]
@@ -56,11 +56,65 @@ EOF
     ;;
 esac
 
+# Get the directory component of the given path, and save it in the
+# global variables '$dir'.  Note that this directory component will
+# be either empty or ending with a '/' character.  This is deliberate.
+set_dir_from ()
+{
+  case $1 in
+    */*) dir=`echo "$1" | sed -e 's|/[^/]*$|/|'`;;
+      *) dir=;;
+  esac
+}
+
+# Get the suffix-stripped basename of the given path, and save it the
+# global variable '$base'.
+set_base_from ()
+{
+  base=`echo "$1" | sed -e 's|^.*/||' -e 's/\.[^.]*$//'`
+}
+
+# If no dependency file was actually created by the compiler invocation,
+# we still have to create a dummy depfile, to avoid errors with the
+# Makefile "include basename.Plo" scheme.
+make_dummy_depfile ()
+{
+  echo "#dummy" > "$depfile"
+}
+
+# Factor out some common post-processing of the generated depfile.
+# Requires the auxiliary global variable '$tmpdepfile' to be set.
+aix_post_process_depfile ()
+{
+  # If the compiler actually managed to produce a dependency file,
+  # post-process it.
+  if test -f "$tmpdepfile"; then
+    # Each line is of the form 'foo.o: dependency.h'.
+    # Do two passes, one to just change these to
+    #   $object: dependency.h
+    # and one to simply output
+    #   dependency.h:
+    # which is needed to avoid the deleted-header problem.
+    { sed -e "s,^.*\.[$lower]*:,$object:," < "$tmpdepfile"
+      sed -e "s,^.*\.[$lower]*:[$tab ]*,," -e 's,$,:,' < "$tmpdepfile"
+    } > "$depfile"
+    rm -f "$tmpdepfile"
+  else
+    make_dummy_depfile
+  fi
+}
+
 # A tabulation character.
 tab='  '
 # A newline character.
 nl='
 '
+# Character ranges might be problematic outside the C locale.
+# These definitions help.
+upper=ABCDEFGHIJKLMNOPQRSTUVWXYZ
+lower=abcdefghijklmnopqrstuvwxyz
+digits=0123456789
+alpha=${upper}${lower}
 
 if test -z "$depmode" || test -z "$source" || test -z "$object"; then
   echo "depcomp: Variables source, object and depmode must be set" 1>&2
@@ -74,6 +128,9 @@ tmpdepfile=${tmpdepfile-`echo "$depfile" | sed 's/\.\([^.]*\)$/.T\1/'`}
 
 rm -f "$tmpdepfile"
 
+# Avoid interferences from the environment.
+gccflag= dashmflag=
+
 # Some modes work just like other modes, but use different flags.  We
 # parameterize here, but still list the modes in the big case below,
 # to make depend.m4 easier to write.  Note that we *cannot* use a case
@@ -85,32 +142,32 @@ if test "$depmode" = hp; then
 fi
 
 if test "$depmode" = dashXmstdout; then
-   # This is just like dashmstdout with a different argument.
-   dashmflag=-xM
-   depmode=dashmstdout
+  # This is just like dashmstdout with a different argument.
+  dashmflag=-xM
+  depmode=dashmstdout
 fi
 
 cygpath_u="cygpath -u -f -"
 if test "$depmode" = msvcmsys; then
-   # This is just like msvisualcpp but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvisualcpp
+  # This is just like msvisualcpp but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvisualcpp
 fi
 
 if test "$depmode" = msvc7msys; then
-   # This is just like msvc7 but w/o cygpath translation.
-   # Just convert the backslash-escaped backslashes to single forward
-   # slashes to satisfy depend.m4
-   cygpath_u='sed s,\\\\,/,g'
-   depmode=msvc7
+  # This is just like msvc7 but w/o cygpath translation.
+  # Just convert the backslash-escaped backslashes to single forward
+  # slashes to satisfy depend.m4
+  cygpath_u='sed s,\\\\,/,g'
+  depmode=msvc7
 fi
 
 if test "$depmode" = xlc; then
-   # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency informations.
-   gccflag=-qmakedep=gcc,-MF
-   depmode=gcc
+  # IBM C/C++ Compilers xlc/xlC can output gcc-like dependency information.
+  gccflag=-qmakedep=gcc,-MF
+  depmode=gcc
 fi
 
 case "$depmode" in
@@ -133,8 +190,7 @@ gcc3)
   done
   "$@"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -142,13 +198,17 @@ gcc3)
   ;;
 
 gcc)
+## Note that this doesn't just cater to obsosete pre-3.x GCC compilers.
+## but also to in-use compilers like IMB xlc/xlC and the HP C compiler.
+## (see the conditional assignment to $gccflag above).
 ## There are various ways to get dependency output from gcc.  Here's
 ## why we pick this rather obscure method:
 ## - Don't want to use -MD because we'd like the dependencies to end
 ##   up in a subdir.  Having to rename by hand is ugly.
 ##   (We might end up doing this anyway to support other compilers.)
 ## - The DEPENDENCIES_OUTPUT environment variable makes gcc act like
-##   -MM, not -M (despite what the docs say).
+##   -MM, not -M (despite what the docs say).  Also, it might not be
+##   supported by the other compilers which use the 'gcc' depmode.
 ## - Using -M directly means running the compiler twice (even worse
 ##   than renaming).
   if test -z "$gccflag"; then
@@ -156,15 +216,14 @@ gcc)
   fi
   "$@" -Wp,"$gccflag$tmpdepfile"
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
-  alpha=ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz
-## The second -e expression handles DOS-style file names with drive letters.
+  # The second -e expression handles DOS-style file names with drive
+  # letters.
   sed -e 's/^[^:]*: / /' \
       -e 's/^['$alpha']:\/[^:]*: / /' < "$tmpdepfile" >> "$depfile"
 ## This next piece of magic avoids the "deleted header file" problem.
@@ -173,15 +232,15 @@ gcc)
 ## typically no way to rebuild the header).  We avoid this by adding
 ## dummy dependencies for each header file.  Too bad gcc doesn't do
 ## this for us directly.
-  tr ' ' "$nl" < "$tmpdepfile" |
 ## Some versions of gcc put a space before the ':'.  On the theory
 ## that the space means something, we add a space to the output as
 ## well.  hp depmode also adds that space, but also prefixes the VPATH
 ## to the object.  Take care to not repeat it in the output.
 ## Some versions of the HPUX 10.20 sed can't process this invocation
 ## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
-      | sed -e 's/$/ :/' >> "$depfile"
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e "s|.*$object$||" -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -192,47 +251,6 @@ hp)
   exit 1
   ;;
 
-sgi)
-  if test "$libtool" = yes; then
-    "$@" "-Wp,-MDupdate,$tmpdepfile"
-  else
-    "$@" -MDupdate "$tmpdepfile"
-  fi
-  stat=$?
-  if test $stat -eq 0; then :
-  else
-    rm -f "$tmpdepfile"
-    exit $stat
-  fi
-  rm -f "$depfile"
-
-  if test -f "$tmpdepfile"; then  # yes, the sourcefile depend on other files
-    echo "$object : \\" > "$depfile"
-
-    # Clip off the initial element (the dependent).  Don't try to be
-    # clever and replace this with sed code, as IRIX sed won't handle
-    # lines with more than a fixed number of characters (4096 in
-    # IRIX 6.2 sed, 8192 in IRIX 6.5).  We also remove comment lines;
-    # the IRIX cc adds comments like '#:fec' to the end of the
-    # dependency line.
-    tr ' ' "$nl" < "$tmpdepfile" \
-    | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' | \
-    tr "$nl" ' ' >> "$depfile"
-    echo >> "$depfile"
-
-    # The second pass generates a dummy entry for each header file.
-    tr ' ' "$nl" < "$tmpdepfile" \
-   | sed -e 's/^.*\.o://' -e 's/#.*$//' -e '/^$/ d' -e 's/$/:/' \
-   >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
-  fi
-  rm -f "$tmpdepfile"
-  ;;
-
 xlc)
   # This case exists only to let depend.m4 do its work.  It works by
   # looking at the text of this script.  This case will never be run,
@@ -246,9 +264,8 @@ aix)
   # current directory.  Also, the AIX compiler puts '$object:' at the
   # start of each line; $object doesn't have directory information.
   # Version 6 uses the directory in both cases.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.u
     tmpdepfile2=$base.u
@@ -261,9 +278,7 @@ aix)
     "$@" -M
   fi
   stat=$?
-
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
     exit $stat
   fi
@@ -272,65 +287,113 @@ aix)
   do
     test -f "$tmpdepfile" && break
   done
-  if test -f "$tmpdepfile"; then
-    # Each line is of the form 'foo.o: dependent.h'.
-    # Do two passes, one to just change these to
-    # '$object: dependent.h' and one to simply 'dependent.h:'.
-    sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-    sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-  else
-    # The sourcefile does not contain any dependencies, so just
-    # store a dummy comment line, to avoid errors with the Makefile
-    # "include basename.Plo" scheme.
-    echo "#dummy" > "$depfile"
+  aix_post_process_depfile
+  ;;
+
+tcc)
+  # tcc (Tiny C Compiler) understand '-MD -MF file' since version 0.9.26
+  # FIXME: That version still under development at the moment of writing.
+  #        Make that this statement remains true also for stable, released
+  #        versions.
+  # It will wrap lines (doesn't matter whether long or short) with a
+  # trailing '\', as in:
+  #
+  #   foo.o : \
+  #    foo.c \
+  #    foo.h \
+  #
+  # It will put a trailing '\' even on the last line, and will use leading
+  # spaces rather than leading tabs (at least since its commit 0394caf7
+  # "Emit spaces for -MD").
+  "$@" -MD -MF "$tmpdepfile"
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile"
+    exit $stat
   fi
+  rm -f "$depfile"
+  # Each non-empty line is of the form 'foo.o : \' or ' dep.h \'.
+  # We have to change lines of the first kind to '$object: \'.
+  sed -e "s|.*:|$object :|" < "$tmpdepfile" > "$depfile"
+  # And for each line of the second kind, we have to emit a 'dep.h:'
+  # dummy dependency, to avoid the deleted-header problem.
+  sed -n -e 's|^  *\(.*\) *\\$|\1:|p' < "$tmpdepfile" >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
-icc)
-  # Intel's C compiler anf tcc (Tiny C Compiler) understand '-MD -MF file'.
-  # However on
-  #    $CC -MD -MF foo.d -c -o sub/foo.o sub/foo.c
-  # ICC 7.0 will fill foo.d with something like
-  #    foo.o: sub/foo.c
-  #    foo.o: sub/foo.h
-  # which is wrong.  We want
-  #    sub/foo.o: sub/foo.c
-  #    sub/foo.o: sub/foo.h
-  #    sub/foo.c:
-  #    sub/foo.h:
-  # ICC 7.1 will output
+## The order of this option in the case statement is important, since the
+## shell code in configure will try each of these formats in the order
+## listed in this file.  A plain '-MD' option would be understood by many
+## compilers, so we must ensure this comes after the gcc and icc options.
+pgcc)
+  # Portland's C compiler understands '-MD'.
+  # Will always output deps to 'file.d' where file is the root name of the
+  # source file under compilation, even if file resides in a subdirectory.
+  # The object file name does not affect the name of the '.d' file.
+  # pgcc 10.2 will output
   #    foo.o: sub/foo.c sub/foo.h
-  # and will wrap long lines using '\':
+  # and will wrap long lines using '\' :
   #    foo.o: sub/foo.c ... \
   #     sub/foo.h ... \
   #     ...
-  # tcc 0.9.26 (FIXME still under development at the moment of writing)
-  # will emit a similar output, but also prepend the continuation lines
-  # with horizontal tabulation characters.
-  "$@" -MD -MF "$tmpdepfile"
-  stat=$?
-  if test $stat -eq 0; then :
-  else
+  set_dir_from "$object"
+  # Use the source, not the object, to determine the base name, since
+  # that's sadly what pgcc will do too.
+  set_base_from "$source"
+  tmpdepfile=$base.d
+
+  # For projects that build the same source file twice into different object
+  # files, the pgcc approach of using the *source* file root name can cause
+  # problems in parallel builds.  Use a locking strategy to avoid stomping on
+  # the same $tmpdepfile.
+  lockdir=$base.d-lock
+  trap "
+    echo '$0: caught signal, cleaning up...' >&2
+    rmdir '$lockdir'
+    exit 1
+  " 1 2 13 15
+  numtries=100
+  i=$numtries
+  while test $i -gt 0; do
+    # mkdir is a portable test-and-set.
+    if mkdir "$lockdir" 2>/dev/null; then
+      # This process acquired the lock.
+      "$@" -MD
+      stat=$?
+      # Release the lock.
+      rmdir "$lockdir"
+      break
+    else
+      # If the lock is being held by a different process, wait
+      # until the winning process is done or we timeout.
+      while test -d "$lockdir" && test $i -gt 0; do
+        sleep 1
+        i=`expr $i - 1`
+      done
+    fi
+    i=`expr $i - 1`
+  done
+  trap - 1 2 13 15
+  if test $i -le 0; then
+    echo "$0: failed to acquire lock after $numtries attempts" >&2
+    echo "$0: check lockdir '$lockdir'" >&2
+    exit 1
+  fi
+
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
   rm -f "$depfile"
-  # Each line is of the form 'foo.o: dependent.h',
-  # or 'foo.o: dep1.h dep2.h \', or ' dep3.h dep4.h \'.
+  # Each line is of the form `foo.o: dependent.h',
+  # or `foo.o: dep1.h dep2.h \', or ` dep3.h dep4.h \'.
   # Do two passes, one to just change these to
-  # '$object: dependent.h' and one to simply 'dependent.h:'.
-  sed -e "s/^[ $tab][ $tab]*/  /" -e "s,^[^:]*:,$object :," \
-    < "$tmpdepfile" > "$depfile"
-  sed '
-    s/[ '"$tab"'][ '"$tab"']*/ /g
-    s/^ *//
-    s/ *\\*$//
-    s/^[^:]*: *//
-    /^$/d
-    /:$/d
-    s/$/ :/
-  ' < "$tmpdepfile" >> "$depfile"
+  # `$object: dependent.h' and one to simply `dependent.h:'.
+  sed "s,^[^:]*:,$object :," < "$tmpdepfile" > "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed 's,^[^:]*: \(.*\)$,\1,;s/^\\$//;/^$/d;/:$/d' < "$tmpdepfile" \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -341,9 +404,8 @@ hp2)
   # 'foo.d', which lands next to the object file, wherever that
   # happens to be.
   # Much of this is similar to the tru64 case; see comments there.
-  dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-  test "x$dir" = "x$object" && dir=
-  base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
+  set_dir_from  "$object"
+  set_base_from "$object"
   if test "$libtool" = yes; then
     tmpdepfile1=$dir$base.d
     tmpdepfile2=$dir.libs/$base.d
@@ -354,8 +416,7 @@ hp2)
     "$@" +Maked
   fi
   stat=$?
-  if test $stat -eq 0; then :
-  else
+  if test $stat -ne 0; then
      rm -f "$tmpdepfile1" "$tmpdepfile2"
      exit $stat
   fi
@@ -365,76 +426,61 @@ hp2)
     test -f "$tmpdepfile" && break
   done
   if test -f "$tmpdepfile"; then
-    sed -e "s,^.*\.[a-z]*:,$object:," "$tmpdepfile" > "$depfile"
+    sed -e "s,^.*\.[$lower]*:,$object:," "$tmpdepfile" > "$depfile"
     # Add 'dependent.h:' lines.
     sed -ne '2,${
-              s/^ *//
-              s/ \\*$//
-              s/$/:/
-              p
-            }' "$tmpdepfile" >> "$depfile"
+               s/^ *//
+               s/ \\*$//
+               s/$/:/
+               p
+             }' "$tmpdepfile" >> "$depfile"
   else
-    echo "#dummy" > "$depfile"
+    make_dummy_depfile
   fi
   rm -f "$tmpdepfile" "$tmpdepfile2"
   ;;
 
 tru64)
-   # The Tru64 compiler uses -MD to generate dependencies as a side
-   # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
-   # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
-   # dependencies in 'foo.d' instead, so we check for that too.
-   # Subdirectories are respected.
-   dir=`echo "$object" | sed -e 's|/[^/]*$|/|'`
-   test "x$dir" = "x$object" && dir=
-   base=`echo "$object" | sed -e 's|^.*/||' -e 's/\.o$//' -e 's/\.lo$//'`
-
-   if test "$libtool" = yes; then
-      # With Tru64 cc, shared objects can also be used to make a
-      # static library.  This mechanism is used in libtool 1.4 series to
-      # handle both shared and static libraries in a single compilation.
-      # With libtool 1.4, dependencies were output in $dir.libs/$base.lo.d.
-      #
-      # With libtool 1.5 this exception was removed, and libtool now
-      # generates 2 separate objects for the 2 libraries.  These two
-      # compilations output dependencies in $dir.libs/$base.o.d and
-      # in $dir$base.o.d.  We have to check for both files, because
-      # one of the two compilations can be disabled.  We should prefer
-      # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
-      # automatically cleaned when .libs/ is deleted, while ignoring
-      # the former would cause a distcleancheck panic.
-      tmpdepfile1=$dir.libs/$base.lo.d   # libtool 1.4
-      tmpdepfile2=$dir$base.o.d          # libtool 1.5
-      tmpdepfile3=$dir.libs/$base.o.d    # libtool 1.5
-      tmpdepfile4=$dir.libs/$base.d      # Compaq CCC V6.2-504
-      "$@" -Wc,-MD
-   else
-      tmpdepfile1=$dir$base.o.d
-      tmpdepfile2=$dir$base.d
-      tmpdepfile3=$dir$base.d
-      tmpdepfile4=$dir$base.d
-      "$@" -MD
-   fi
-
-   stat=$?
-   if test $stat -eq 0; then :
-   else
-      rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-      exit $stat
-   fi
-
-   for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3" "$tmpdepfile4"
-   do
-     test -f "$tmpdepfile" && break
-   done
-   if test -f "$tmpdepfile"; then
-      sed -e "s,^.*\.[a-z]*:,$object:," < "$tmpdepfile" > "$depfile"
-      sed -e 's,^.*\.[a-z]*:['"$tab"' ]*,,' -e 's,$,:,' < "$tmpdepfile" >> "$depfile"
-   else
-      echo "#dummy" > "$depfile"
-   fi
-   rm -f "$tmpdepfile"
-   ;;
+  # The Tru64 compiler uses -MD to generate dependencies as a side
+  # effect.  'cc -MD -o foo.o ...' puts the dependencies into 'foo.o.d'.
+  # At least on Alpha/Redhat 6.1, Compaq CCC V6.2-504 seems to put
+  # dependencies in 'foo.d' instead, so we check for that too.
+  # Subdirectories are respected.
+  set_dir_from  "$object"
+  set_base_from "$object"
+
+  if test "$libtool" = yes; then
+    # Libtool generates 2 separate objects for the 2 libraries.  These
+    # two compilations output dependencies in $dir.libs/$base.o.d and
+    # in $dir$base.o.d.  We have to check for both files, because
+    # one of the two compilations can be disabled.  We should prefer
+    # $dir$base.o.d over $dir.libs/$base.o.d because the latter is
+    # automatically cleaned when .libs/ is deleted, while ignoring
+    # the former would cause a distcleancheck panic.
+    tmpdepfile1=$dir$base.o.d          # libtool 1.5
+    tmpdepfile2=$dir.libs/$base.o.d    # Likewise.
+    tmpdepfile3=$dir.libs/$base.d      # Compaq CCC V6.2-504
+    "$@" -Wc,-MD
+  else
+    tmpdepfile1=$dir$base.d
+    tmpdepfile2=$dir$base.d
+    tmpdepfile3=$dir$base.d
+    "$@" -MD
+  fi
+
+  stat=$?
+  if test $stat -ne 0; then
+    rm -f "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+    exit $stat
+  fi
+
+  for tmpdepfile in "$tmpdepfile1" "$tmpdepfile2" "$tmpdepfile3"
+  do
+    test -f "$tmpdepfile" && break
+  done
+  # Same post-processing that is required for AIX mode.
+  aix_post_process_depfile
+  ;;
 
 msvc7)
   if test "$libtool" = yes; then
@@ -445,8 +491,7 @@ msvc7)
   "$@" $showIncludes > "$tmpdepfile"
   stat=$?
   grep -v '^Note: including file: ' "$tmpdepfile"
-  if test "$stat" = 0; then :
-  else
+  if test $stat -ne 0; then
     rm -f "$tmpdepfile"
     exit $stat
   fi
@@ -523,13 +568,14 @@ dashmstdout)
   # in the target name.  This is to cope with DOS-style filenames:
   # a dependency such as 'c:/foo/bar' could be seen as target 'c' otherwise.
   "$@" $dashmflag |
-    sed 's:^['"$tab"' ]*[^:'"$tab"' ][^:][^:]*\:['"$tab"' ]*:'"$object"'\: :' > "$tmpdepfile"
+    sed "s|^[$tab ]*[^:$tab ][^:][^:]*:[$tab ]*|$object: |" > "$tmpdepfile"
   rm -f "$depfile"
   cat < "$tmpdepfile" > "$depfile"
-  tr ' ' "$nl" < "$tmpdepfile" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process this sed invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  tr ' ' "$nl" < "$tmpdepfile" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile"
   ;;
 
@@ -582,10 +628,12 @@ makedepend)
   # makedepend may prepend the VPATH from the source file name to the object.
   # No need to regex-escape $object, excess matching of '.' is harmless.
   sed "s|^.*\($object *:\)|\1|" "$tmpdepfile" > "$depfile"
-  sed '1,2d' "$tmpdepfile" | tr ' ' "$nl" | \
-## Some versions of the HPUX 10.20 sed can't process this invocation
-## correctly.  Breaking it into two sed invocations is a workaround.
-    sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' | sed -e 's/$/ :/' >> "$depfile"
+  # Some versions of the HPUX 10.20 sed can't process the last invocation
+  # correctly.  Breaking it into two sed invocations is a workaround.
+  sed '1,2d' "$tmpdepfile" \
+    | tr ' ' "$nl" \
+    | sed -e 's/^\\$//' -e '/^$/d' -e '/:$/d' \
+    | sed -e 's/$/ :/' >> "$depfile"
   rm -f "$tmpdepfile" "$tmpdepfile".bak
   ;;
 
@@ -621,10 +669,10 @@ cpp)
     esac
   done
 
-  "$@" -E |
-    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
-       -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' |
-    sed '$ s: \\$::' > "$tmpdepfile"
+  "$@" -E \
+    sed -n -e '/^# [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+             -e '/^#line [0-9][0-9]* "\([^"]*\)".*/ s:: \1 \\:p' \
+    sed '$ s: \\$::' > "$tmpdepfile"
   rm -f "$depfile"
   echo "$object : \\" > "$depfile"
   cat < "$tmpdepfile" >> "$depfile"
@@ -656,15 +704,15 @@ msvisualcpp)
       shift
       ;;
     "-Gm"|"/Gm"|"-Gi"|"/Gi"|"-ZI"|"/ZI")
-       set fnord "$@"
-       shift
-       shift
-       ;;
+        set fnord "$@"
+        shift
+        shift
+        ;;
     *)
-       set fnord "$@" "$arg"
-       shift
-       shift
-       ;;
+        set fnord "$@" "$arg"
+        shift
+        shift
+        ;;
     esac
   done
   "$@" -E 2>/dev/null |
index fa89e76..0bd8ce8 100755 (executable)
@@ -7,7 +7,7 @@ VERSION=2012-08-01.09 # UTC
 
 # Note: this is a bash script (could be zsh or dash)
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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
index c8abd55..98c7523 100755 (executable)
@@ -2,10 +2,10 @@
 # gendocs.sh -- generate a GNU manual in many formats.  This script is
 #   mentioned in maintain.texi.  See the help message below for usage details.
 
-scriptversion=2011-04-08.14
+scriptversion=2013-03-08.15
 
-# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010 Free Software
-# Foundation, Inc.
+# Copyright 2003, 2004, 2005, 2006, 2007, 2008, 2009, 2010, 2011, 2012, 2013
+# 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
@@ -30,6 +30,12 @@ scriptversion=2011-04-08.14
 #
 # An up-to-date copy is also maintained in Gnulib (gnu.org/software/gnulib).
 
+# TODO:
+# - image importation was only implemented for HTML generated by
+#   makeinfo.  But it should be simple enough to adjust.
+# - images are not imported in the source tarball.  All the needed
+#   formats (PDF, PNG, etc.) should be included.
+
 prog=`basename "$0"`
 srcdir=`pwd`
 
@@ -39,38 +45,47 @@ templateurl="http://savannah.gnu.org/cgi-bin/viewcvs/~checkout~/texinfo/texinfo/
 : ${SETLANG="env LANG= LC_MESSAGES= LC_ALL= LANGUAGE="}
 : ${MAKEINFO="makeinfo"}
 : ${TEXI2DVI="texi2dvi -t @finalout"}
-: ${DVIPS="dvips"}
 : ${DOCBOOK2HTML="docbook2html"}
 : ${DOCBOOK2PDF="docbook2pdf"}
-: ${DOCBOOK2PS="docbook2ps"}
 : ${DOCBOOK2TXT="docbook2txt"}
 : ${GENDOCS_TEMPLATE_DIR="."}
+: ${PERL='perl'}
 : ${TEXI2HTML="texi2html"}
 unset CDPATH
 unset use_texi2html
 
 version="gendocs.sh $scriptversion
 
-Copyright 2010 Free Software Foundation, Inc.
+Copyright 2013 Free Software Foundation, Inc.
 There is NO warranty.  You may redistribute this software
 under the terms of the GNU General Public License.
 For more information about these matters, see the files named COPYING."
 
 usage="Usage: $prog [OPTION]... PACKAGE MANUAL-TITLE
 
-Generate various output formats from PACKAGE.texinfo (or .texi or .txi) source.
-See the GNU Maintainers document for a more extensive discussion:
+Generate output in various formats from PACKAGE.texinfo (or .texi or
+.txi) source.  See the GNU Maintainers document for a more extensive
+discussion:
   http://www.gnu.org/prep/maintain_toc.html
 
 Options:
-  -s SRCFILE  read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
-  -o OUTDIR   write files into OUTDIR, instead of manual/.
-  --email ADR use ADR as contact in generated web pages.
-  --docbook   convert to DocBook too (xml, txt, html, pdf and ps).
-  --html ARG  pass indicated ARG to makeinfo or texi2html for HTML targets.
-  --texi2html use texi2html to generate HTML targets.
-  --help      display this help and exit successfully.
-  --version   display version information and exit successfully.
+  --email ADR use ADR as contact in generated web pages; always give this.
+
+  -s SRCFILE   read Texinfo from SRCFILE, instead of PACKAGE.{texinfo|texi|txi}
+  -o OUTDIR    write files into OUTDIR, instead of manual/.
+  -I DIR       append DIR to the Texinfo search path.
+  --common ARG pass ARG in all invocations.
+  --html ARG   pass ARG to makeinfo or texi2html for HTML targets.
+  --info ARG   pass ARG to makeinfo for Info, instead of --no-split.
+  --no-ascii   skip generating the plain text output.
+  --source ARG include ARG in tar archive of sources.
+  --split HOW  make split HTML by node, section, chapter; default node.
+
+  --texi2html  use texi2html to make HTML target, with all split versions.
+  --docbook    convert through DocBook too (xml, txt, html, pdf).
+
+  --help       display this help and exit successfully.
+  --version    display version information and exit successfully.
 
 Simple example: $prog --email bug-gnu-emacs@gnu.org emacs \"GNU Emacs Manual\"
 
@@ -80,12 +95,12 @@ Typical sequence:
   wget \"$templateurl\"
   $prog --email BUGLIST MANUAL \"GNU MANUAL - One-line description\"
 
-Output will be in a new subdirectory \"manual\" (by default, use -o OUTDIR
-to override).  Move all the new files into your web CVS tree, as
-explained in the Web Pages node of maintain.texi.
+Output will be in a new subdirectory \"manual\" (by default;
+use -o OUTDIR to override).  Move all the new files into your web CVS
+tree, as explained in the Web Pages node of maintain.texi.
 
-Please use the --email ADDRESS option to specify your bug-reporting
-address in the generated HTML pages.
+Please use the --email ADDRESS option so your own bug-reporting
+address will be used in the generated HTML pages.
 
 MANUAL-TITLE is included as part of the HTML <title> of the overall
 manual/index.html file.  It should include the name of the package being
@@ -102,11 +117,14 @@ If a manual's Texinfo sources are spread across several directories,
 first copy or symlink all Texinfo sources into a single directory.
 (Part of the script's work is to make a tar.gz of the sources.)
 
-You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML, and
-DVIPS to control the programs that get executed, and
+As implied above, by default monolithic Info files are generated.
+If you want split Info, or other Info options, use --info to override.
+
+You can set the environment variables MAKEINFO, TEXI2DVI, TEXI2HTML,
+and PERL to control the programs that get executed, and
 GENDOCS_TEMPLATE_DIR to control where the gendocs_template file is
 looked for.  With --docbook, the environment variables DOCBOOK2HTML,
-DOCBOOK2PDF, DOCBOOK2PS, and DOCBOOK2TXT are also respected.
+DOCBOOK2PDF, and DOCBOOK2TXT are also consulted.
 
 By default, makeinfo and texi2dvi are run in the default (English)
 locale, since that's the language of most Texinfo manuals.  If you
@@ -116,29 +134,37 @@ SETLANG setting in the source.
 Email bug reports or enhancement requests to bug-texinfo@gnu.org.
 "
 
-calcsize()
-{
-  size=`ls -ksl $1 | awk '{print $1}'`
-  echo $size
-}
-
 MANUAL_TITLE=
 PACKAGE=
 EMAIL=webmasters@gnu.org  # please override with --email
+commonarg= # passed to all makeinfo/texi2html invcations.
+dirargs=   # passed to all tools (-I dir).
+dirs=      # -I's directories.
 htmlarg=
+infoarg=--no-split
+generate_ascii=true
 outdir=manual
+source_extra=
+split=node
 srcfile=
 
 while test $# -gt 0; do
   case $1 in
-    --email) shift; EMAIL=$1;;
-    --help) echo "$usage"; exit 0;;
-    --version) echo "$version"; exit 0;;
-    -s) shift; srcfile=$1;;
-    -o) shift; outdir=$1;;
-    --docbook) docbook=yes;;
-    --html) shift; htmlarg=$1;;
+    -s)          shift; srcfile=$1;;
+    -o)          shift; outdir=$1;;
+    -I)          shift; dirargs="$dirargs -I '$1'"; dirs="$dirs $1";;
+    --common)    shift; commonarg=$1;;
+    --docbook)   docbook=yes;;
+    --email)     shift; EMAIL=$1;;
+    --html)      shift; htmlarg=$1;;
+    --info)      shift; infoarg=$1;;
+    --no-ascii)  generate_ascii=false;;
+    --source)    shift; source_extra=$1;;
+    --split)     shift; split=$1;;
     --texi2html) use_texi2html=1;;
+
+    --help)      echo "$usage"; exit 0;;
+    --version)   echo "$version"; exit 0;;
     -*)
       echo "$0: Unknown option \`$1'." >&2
       echo "$0: Try \`--help' for more information." >&2
@@ -156,6 +182,9 @@ while test $# -gt 0; do
   shift
 done
 
+# makeinfo uses the dirargs, but texi2dvi doesn't.
+commonarg=" $dirargs $commonarg"
+
 # For most of the following, the base name is just $PACKAGE
 base=$PACKAGE
 
@@ -183,57 +212,107 @@ if test ! -r $GENDOCS_TEMPLATE_DIR/gendocs_template; then
   exit 1
 fi
 
+# Function to return size of $1 in something resembling kilobytes.
+calcsize()
+{
+  size=`ls -ksl $1 | awk '{print $1}'`
+  echo $size
+}
+
+# copy_images OUTDIR HTML-FILE...
+# -------------------------------
+# Copy all the images needed by the HTML-FILEs into OUTDIR.  Look
+# for them in the -I directories.
+copy_images()
+{
+  local odir
+  odir=$1
+  shift
+  $PERL -n -e "
+BEGIN {
+  \$me = '$prog';
+  \$odir = '$odir';
+  @dirs = qw($dirs);
+}
+" -e '
+/<img src="(.*?)"/g && ++$need{$1};
+
+END {
+  #print "$me: @{[keys %need]}\n";  # for debugging, show images found.
+  FILE: for my $f (keys %need) {
+    for my $d (@dirs) {
+      if (-f "$d/$f") {
+        use File::Basename;
+        my $dest = dirname ("$odir/$f");
+        #
+        use File::Path;
+        -d $dest || mkpath ($dest)
+          || die "$me: cannot mkdir $dest: $!\n";
+        #
+        use File::Copy;
+        copy ("$d/$f", $dest)
+          || die "$me: cannot copy $d/$f to $dest: $!\n";
+        next FILE;
+      }
+    }
+    die "$me: $ARGV: cannot find image $f\n";
+  }
+}
+' -- "$@" || exit 1
+}
+
 case $outdir in
   /*) abs_outdir=$outdir;;
   *)  abs_outdir=$srcdir/$outdir;;
 esac
 
-echo Generating output formats for $srcfile
+echo "Making output for $srcfile"
+echo " in `pwd`"
+mkdir -p "$outdir/"
 
-cmd="$SETLANG $MAKEINFO -o $PACKAGE.info \"$srcfile\""
-echo "Generating info files... ($cmd)"
+cmd="$SETLANG $MAKEINFO -o $PACKAGE.info $commonarg $infoarg \"$srcfile\""
+echo "Generating info... ($cmd)"
 eval "$cmd"
-mkdir -p "$outdir/"
 tar czf "$outdir/$PACKAGE.info.tar.gz" $PACKAGE.info*
+ls -l "$outdir/$PACKAGE.info.tar.gz"
 info_tgz_size=`calcsize "$outdir/$PACKAGE.info.tar.gz"`
 # do not mv the info files, there's no point in having them available
 # separately on the web.
 
-cmd="$SETLANG ${TEXI2DVI} \"$srcfile\""
-echo "Generating dvi ... ($cmd)"
+cmd="$SETLANG $TEXI2DVI $dirargs \"$srcfile\""
+printf "\nGenerating dvi... ($cmd)\n"
 eval "$cmd"
-
-# now, before we compress dvi:
-echo Generating postscript...
-${DVIPS} $PACKAGE -o
-gzip -f -9 $PACKAGE.ps
-ps_gz_size=`calcsize $PACKAGE.ps.gz`
-mv $PACKAGE.ps.gz "$outdir/"
-
 # compress/finish dvi:
 gzip -f -9 $PACKAGE.dvi
 dvi_gz_size=`calcsize $PACKAGE.dvi.gz`
 mv $PACKAGE.dvi.gz "$outdir/"
+ls -l "$outdir/$PACKAGE.dvi.gz"
 
-cmd="$SETLANG ${TEXI2DVI} --pdf \"$srcfile\""
-echo "Generating pdf ... ($cmd)"
+cmd="$SETLANG $TEXI2DVI --pdf $dirargs \"$srcfile\""
+printf "\nGenerating pdf... ($cmd)\n"
 eval "$cmd"
 pdf_size=`calcsize $PACKAGE.pdf`
 mv $PACKAGE.pdf "$outdir/"
+ls -l "$outdir/$PACKAGE.pdf"
 
-cmd="$SETLANG $MAKEINFO -o $PACKAGE.txt --no-split --no-headers \"$srcfile\""
-echo "Generating ASCII... ($cmd)"
-eval "$cmd"
-ascii_size=`calcsize $PACKAGE.txt`
-gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
-ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
-mv $PACKAGE.txt "$outdir/"
+if $generate_ascii; then
+  opt="-o $PACKAGE.txt --no-split --no-headers $commonarg"
+  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+  printf "\nGenerating ascii... ($cmd)\n"
+  eval "$cmd"
+  ascii_size=`calcsize $PACKAGE.txt`
+  gzip -f -9 -c $PACKAGE.txt >"$outdir/$PACKAGE.txt.gz"
+  ascii_gz_size=`calcsize "$outdir/$PACKAGE.txt.gz"`
+  mv $PACKAGE.txt "$outdir/"
+  ls -l "$outdir/$PACKAGE.txt" "$outdir/$PACKAGE.txt.gz"
+fi
 
+# Split HTML at level $1.  Used for texi2html.
 html_split()
 {
-  opt="--split=$1 $htmlarg --node-files"
+  opt="--split=$1 --node-files $commonarg $htmlarg"
   cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $opt \"$srcfile\""
-  echo "Generating html by $1... ($cmd)"
+  printf "\nGenerating html by $1... ($cmd)\n"
   eval "$cmd"
   split_html_dir=$PACKAGE.html
   (
@@ -249,32 +328,48 @@ html_split()
 }
 
 if test -z "$use_texi2html"; then
-  opt="--no-split --html -o $PACKAGE.html $htmlarg"
+  opt="--no-split --html -o $PACKAGE.html $commonarg $htmlarg"
   cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
-  echo "Generating monolithic html... ($cmd)"
+  printf "\nGenerating monolithic html... ($cmd)\n"
   rm -rf $PACKAGE.html  # in case a directory is left over
   eval "$cmd"
   html_mono_size=`calcsize $PACKAGE.html`
   gzip -f -9 -c $PACKAGE.html >"$outdir/$PACKAGE.html.gz"
   html_mono_gz_size=`calcsize "$outdir/$PACKAGE.html.gz"`
+  copy_images "$outdir/" $PACKAGE.html
   mv $PACKAGE.html "$outdir/"
-
-  cmd="$SETLANG $MAKEINFO --html -o $PACKAGE.html $htmlarg \"$srcfile\""
-  echo "Generating html by node... ($cmd)"
+  ls -l "$outdir/$PACKAGE.html" "$outdir/$PACKAGE.html.gz"
+
+  # Before Texinfo 5.0, makeinfo did not accept a --split=HOW option,
+  # it just always split by node.  So if we're splitting by node anyway,
+  # leave it out.
+  if test "x$split" = xnode; then
+    split_arg=
+  else
+    split_arg=--split=$split
+  fi
+  #
+  opt="--html -o $PACKAGE.html $split_arg $commonarg $htmlarg"
+  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\""
+  printf "\nGenerating html by $split... ($cmd)\n"
   eval "$cmd"
   split_html_dir=$PACKAGE.html
+  copy_images $split_html_dir/ $split_html_dir/*.html
   (
-   cd ${split_html_dir} || exit 1
-   tar -czf "$abs_outdir/${PACKAGE}.html_node.tar.gz" -- *.html
+    cd $split_html_dir || exit 1
+    tar -czf "$abs_outdir/$PACKAGE.html_$split.tar.gz" -- *
   )
-  html_node_tgz_size=`calcsize "$outdir/${PACKAGE}.html_node.tar.gz"`
-  rm -f "$outdir"/html_node/*.html
-  mkdir -p "$outdir/html_node/"
-  mv ${split_html_dir}/*.html "$outdir/html_node/"
-  rmdir ${split_html_dir}
-else
-  cmd="$SETLANG $TEXI2HTML --output $PACKAGE.html $htmlarg \"$srcfile\""
-  echo "Generating monolithic html... ($cmd)"
+  eval \
+    html_${split}_tgz_size=`calcsize "$outdir/$PACKAGE.html_$split.tar.gz"`
+  rm -rf "$outdir/html_$split/"
+  mv $split_html_dir "$outdir/html_$split/"
+  du -s "$outdir/html_$split/"
+  ls -l "$outdir/$PACKAGE.html_$split.tar.gz"
+
+else # use texi2html:
+  opt="--output $PACKAGE.html $commonarg $htmlarg"
+  cmd="$SETLANG $TEXI2HTML $opt \"$srcfile\""
+  printf "\nGenerating monolithic html with texi2html... ($cmd)\n"
   rm -rf $PACKAGE.html  # in case a directory is left over
   eval "$cmd"
   html_mono_size=`calcsize $PACKAGE.html`
@@ -287,18 +382,20 @@ else
   html_split section
 fi
 
-echo Making .tar.gz for sources...
+printf "\nMaking .tar.gz for sources...\n"
 d=`dirname $srcfile`
 (
   cd "$d"
-  srcfiles=`ls *.texinfo *.texi *.txi *.eps 2>/dev/null` || true
-  tar cvzfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
+  srcfiles=`ls -d *.texinfo *.texi *.txi *.eps $source_extra 2>/dev/null` || true
+  tar czfh "$abs_outdir/$PACKAGE.texi.tar.gz" $srcfiles
+  ls -l "$abs_outdir/$PACKAGE.texi.tar.gz"
 )
 texi_tgz_size=`calcsize "$outdir/$PACKAGE.texi.tar.gz"`
 
 if test -n "$docbook"; then
-  cmd="$SETLANG $MAKEINFO -o - --docbook \"$srcfile\" > ${srcdir}/$PACKAGE-db.xml"
-  echo "Generating docbook XML... ($cmd)"
+  opt="-o - --docbook $commonarg"
+  cmd="$SETLANG $MAKEINFO $opt \"$srcfile\" >${srcdir}/$PACKAGE-db.xml"
+  printf "\nGenerating docbook XML... ($cmd)\n"
   eval "$cmd"
   docbook_xml_size=`calcsize $PACKAGE-db.xml`
   gzip -f -9 -c $PACKAGE-db.xml >"$outdir/$PACKAGE-db.xml.gz"
@@ -306,8 +403,9 @@ if test -n "$docbook"; then
   mv $PACKAGE-db.xml "$outdir/"
 
   split_html_db_dir=html_node_db
-  cmd="${DOCBOOK2HTML} -o $split_html_db_dir \"${outdir}/$PACKAGE-db.xml\""
-  echo "Generating docbook HTML... ($cmd)"
+  opt="$commonarg -o $split_html_db_dir"
+  cmd="$DOCBOOK2HTML $opt \"${outdir}/$PACKAGE-db.xml\""
+  printf "\nGenerating docbook HTML... ($cmd)\n"
   eval "$cmd"
   (
     cd ${split_html_db_dir} || exit 1
@@ -319,33 +417,28 @@ if test -n "$docbook"; then
   mv ${split_html_db_dir}/*.html "$outdir/html_node_db/"
   rmdir ${split_html_db_dir}
 
-  cmd="${DOCBOOK2TXT} \"${outdir}/$PACKAGE-db.xml\""
-  echo "Generating docbook ASCII... ($cmd)"
+  cmd="$DOCBOOK2TXT \"${outdir}/$PACKAGE-db.xml\""
+  printf "\nGenerating docbook ASCII... ($cmd)\n"
   eval "$cmd"
   docbook_ascii_size=`calcsize $PACKAGE-db.txt`
   mv $PACKAGE-db.txt "$outdir/"
 
-  cmd="${DOCBOOK2PS} \"${outdir}/$PACKAGE-db.xml\""
-  echo "Generating docbook PS... ($cmd)"
-  eval "$cmd"
-  gzip -f -9 -c $PACKAGE-db.ps >"$outdir/$PACKAGE-db.ps.gz"
-  docbook_ps_gz_size=`calcsize "$outdir/$PACKAGE-db.ps.gz"`
-  mv $PACKAGE-db.ps "$outdir/"
-
-  cmd="${DOCBOOK2PDF} \"${outdir}/$PACKAGE-db.xml\""
-  echo "Generating docbook PDF... ($cmd)"
+  cmd="$DOCBOOK2PDF \"${outdir}/$PACKAGE-db.xml\""
+  printf "\nGenerating docbook PDF... ($cmd)\n"
   eval "$cmd"
   docbook_pdf_size=`calcsize $PACKAGE-db.pdf`
   mv $PACKAGE-db.pdf "$outdir/"
 fi
 
-echo "Writing index file..."
+printf "\nMaking index file...\n"
 if test -z "$use_texi2html"; then
-   CONDS="/%%IF  *HTML_SECTION%%/,/%%ENDIF  *HTML_SECTION%%/d;\
-          /%%IF  *HTML_CHAPTER%%/,/%%ENDIF  *HTML_CHAPTER%%/d"
+  CONDS="/%%IF  *HTML_SECTION%%/,/%%ENDIF  *HTML_SECTION%%/d;\
+         /%%IF  *HTML_CHAPTER%%/,/%%ENDIF  *HTML_CHAPTER%%/d"
 else
-   CONDS="/%%ENDIF.*%%/d;/%%IF  *HTML_SECTION%%/d;/%%IF  *HTML_CHAPTER%%/d"
+  # should take account of --split here.
+  CONDS="/%%ENDIF.*%%/d;/%%IF  *HTML_SECTION%%/d;/%%IF  *HTML_CHAPTER%%/d"
 fi
+
 curdate=`$SETLANG date '+%B %d, %Y'`
 sed \
    -e "s!%%TITLE%%!$MANUAL_TITLE!g" \
@@ -360,13 +453,11 @@ sed \
    -e "s!%%INFO_TGZ_SIZE%%!$info_tgz_size!g" \
    -e "s!%%DVI_GZ_SIZE%%!$dvi_gz_size!g" \
    -e "s!%%PDF_SIZE%%!$pdf_size!g" \
-   -e "s!%%PS_GZ_SIZE%%!$ps_gz_size!g" \
    -e "s!%%ASCII_SIZE%%!$ascii_size!g" \
    -e "s!%%ASCII_GZ_SIZE%%!$ascii_gz_size!g" \
    -e "s!%%TEXI_TGZ_SIZE%%!$texi_tgz_size!g" \
    -e "s!%%DOCBOOK_HTML_NODE_TGZ_SIZE%%!$html_node_db_tgz_size!g" \
    -e "s!%%DOCBOOK_ASCII_SIZE%%!$docbook_ascii_size!g" \
-   -e "s!%%DOCBOOK_PS_GZ_SIZE%%!$docbook_ps_gz_size!g" \
    -e "s!%%DOCBOOK_PDF_SIZE%%!$docbook_pdf_size!g" \
    -e "s!%%DOCBOOK_XML_SIZE%%!$docbook_xml_size!g" \
    -e "s!%%DOCBOOK_XML_GZ_SIZE%%!$docbook_xml_gz_size!g" \
index 0fa9063..3468247 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 # Print a version string.
-scriptversion=2012-03-18.17; # UTC
+scriptversion=2012-12-31.23; # UTC
 
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007-2013 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
@@ -86,6 +86,7 @@ Print a version string.
 Options:
 
    --prefix           prefix of git tags (default 'v')
+   --fallback         fallback version to use if \"git --version\" fails
 
    --help             display this help and exit
    --version          output version information and exit
@@ -93,20 +94,22 @@ Options:
 Running without arguments will suffice in most cases."
 
 prefix=v
+fallback=
 
 while test $# -gt 0; do
   case $1 in
     --help) echo "$usage"; exit 0;;
     --version) echo "$version"; exit 0;;
     --prefix) shift; prefix="$1";;
+    --fallback) shift; fallback="$1";;
     -*)
       echo "$0: Unknown option '$1'." >&2
       echo "$0: Try '--help' for more information." >&2
       exit 1;;
     *)
-      if test -z "$tarball_version_file"; then
+      if test "x$tarball_version_file" = x; then
         tarball_version_file="$1"
-      elif test -z "$tag_sed_script"; then
+      elif test "x$tag_sed_script" = x; then
         tag_sed_script="$1"
       else
         echo "$0: extra non-option argument '$1'." >&2
@@ -116,7 +119,7 @@ while test $# -gt 0; do
   shift
 done
 
-if test -z "$tarball_version_file"; then
+if test "x$tarball_version_file" = x; then
     echo "$usage"
     exit 1
 fi
@@ -140,11 +143,11 @@ then
         [0-9]*) ;;
         *) v= ;;
     esac
-    test -z "$v" \
+    test "x$v" = x \
         && echo "$0: WARNING: $tarball_version_file is missing or damaged" 1>&2
 fi
 
-if test -n "$v"
+if test "x$v" != x
 then
     : # use $v
 # Otherwise, if there is at least one git commit involving the working
@@ -184,8 +187,10 @@ then
     # Remove the "g" in git describe's output string, to save a byte.
     v=`echo "$v" | sed 's/-/./;s/\(.*\)-g/\1-/'`;
     v_from_git=1
-else
+elif test "x$fallback" = x || git --version >/dev/null 2>&1; then
     v=UNKNOWN
+else
+    v=$fallback
 fi
 
 v=`echo "$v" |sed "s/^$prefix//"`
@@ -193,7 +198,7 @@ v=`echo "$v" |sed "s/^$prefix//"`
 # Test whether to append the "-dirty" suffix only if the version
 # string we're using came from git.  I.e., skip the test if it's "UNKNOWN"
 # or if it came from .tarball-version.
-if test -n "$v_from_git"; then
+if test "x$v_from_git" != x; then
   # Don't declare a version "dirty" merely because a time stamp has changed.
   git update-index --refresh > /dev/null 2>&1
 
index 5184edc..e02d34c 100755 (executable)
@@ -9,7 +9,7 @@ my $VERSION = '2012-07-29 06:11'; # UTC
 # If you change this file with Emacs, please let the write hook
 # do its job.  Otherwise, update this string manually.
 
-# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 2008-2013 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
index 4acd69d..268ecc0 100755 (executable)
@@ -1,15 +1,10 @@
 #!/bin/sh
 # Run this after each non-alpha release, to update the web documentation at
 # http://www.gnu.org/software/$pkg/manual/
-# This script must be run from the top-level directory,
-# assumes you're using git for revision control,
-# and requires a .prev-version file as well as a Makefile,
-# from which it extracts the version number and package name, respectively.
-# Also, it assumes all documentation is in the doc/ sub-directory.
 
-VERSION=2009-07-21.16; # UTC
+VERSION=2012-12-16.14; # UTC
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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
@@ -37,8 +32,14 @@ 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/
 
+This script assumes you're using git for revision control, and
+requires a .prev-version file as well as a Makefile, from which it
+extracts the version number and package name, respectively.  Also, it
+assumes all documentation is in the doc/ sub-directory.
+
 Options:
   -C, --builddir=DIR  location of (configured) Makefile (default: .)
+  -n, --dry-run       don't actually commit anything
   --help              print this help, then exit
   --version           print version number, then exit
 
@@ -100,12 +101,12 @@ find_tool ()
 # 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=.
+dryrun=
 while test $# != 0
 do
   # Handle --option=value by splitting apart and putting back on argv.
@@ -121,6 +122,7 @@ do
   case $1 in
     --help|--version) ${1#--};;
     -C|--builddir) shift; builddir=$1; shift ;;
+    -n|--dry-run) dryrun=echo; shift;;
     --*) die "unrecognized option: $1";;
     *) break;;
   esac
@@ -139,7 +141,7 @@ current_branch=$($GIT branch | sed -ne '/^\* /{s///;p;q;}')
 cleanup()
 {
   __st=$?
-  rm -rf "$tmp"
+  $dryrun rm -rf "$tmp"
   $GIT checkout "$current_branch"
   $GIT submodule update --recursive
   $GIT branch -d $tmp_branch
@@ -172,12 +174,15 @@ $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
+  # Add all the files.  This is simpler than trying to add only the
+  # new ones because of new directories: it would require iterating on
+  # adding the outer directories, and then their contents.
+  #
+  # find guarantees that we add outer directories first.
+  find . -name CVS -prune -o -print             \
+    | $XARGS --no-run-if-empty -- $dryrun $CVS add -ko
 
-  $CVS ci -m $version
+  $dryrun $CVS ci -m $version
 )
 
 # Local variables:
index a0e5c7b..7a137c1 100755 (executable)
@@ -1,9 +1,9 @@
 #!/bin/sh
 # Sign files and upload them.
 
-scriptversion=2012-06-11.00; # UTC
+scriptversion=2013-03-19.17; # UTC
 
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 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
@@ -39,9 +39,8 @@ nl='
 
 usage="Usage: $0 [OPTION]... [CMD] FILE... [[CMD] FILE...]
 
-Sign all FILES, and process them at selected destinations according to CMD.
-<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>
-explains further.
+Sign all FILES, and process them at the destinations specified with --to.
+If CMD is not given, it defaults to uploading.  See examples below.
 
 Commands:
   --delete                 delete FILES from destination
@@ -50,8 +49,7 @@ Commands:
   --                       treat the remaining arguments as files to upload
 
 Options:
-  --help                   print this help text and exit
-  --to DEST                specify one destination for FILES
+  --to DEST                specify a destination DEST for FILES
                            (multiple --to options are allowed)
   --user NAME              sign with key NAME
   --replace                allow replacements of existing files
@@ -59,10 +57,10 @@ Options:
   --dry-run                do nothing, show what would have been done
                            (including the constructed directive file)
   --version                output version information and exit
+  --help                   print this help text and exit
 
 If --symlink-regex is given without EXPR, then the link target name
 is created by replacing the version information with '-latest', e.g.:
-
   foo-1.3.4.tar.gz -> foo-latest.tar.gz
 
 Recognized destinations are:
@@ -80,6 +78,9 @@ in the current working directory, its contents are prepended to the
 actual command line options.  Use this to keep your defaults.  Comments
 (#) and empty lines in $conffile are allowed.
 
+<http://www.gnu.org/prep/maintain/html_node/Automated-FTP-Uploads.html>
+gives some further background.
+
 Examples:
 1. Upload foobar-1.0.tar.gz to ftp.gnu.org:
   gnupload --to ftp.gnu.org:foobar foobar-1.0.tar.gz
@@ -104,7 +105,7 @@ Examples:
            --delete oopsbar-0.9.91.tar.gz \\
            -- foobar-0.9.91.tar.gz
 
-gnupload uses the ncftpput program to do the transfers; if you don't
+gnupload executes a program ncftpput to do the transfers; if you don't
 happen to have an ncftp package installed, the ncftpput-ftp script in
 the build-aux/ directory of the gnulib package
 (http://savannah.gnu.org/projects/gnulib) may serve as a replacement.
@@ -132,6 +133,12 @@ while test -n "$1"; do
       if test -z "$2"; then
         echo "$0: Missing argument for --to" 1>&2
         exit 1
+      elif echo "$2" | grep 'ftp-upload\.gnu\.org' >/dev/null; then
+        echo "$0: Use ftp.gnu.org:PKGNAME or alpha.gnu.org:PKGNAME" >&2
+        echo "$0: for the destination, not ftp-upload.gnu.org (which" >&2
+        echo "$0:  is used for direct ftp uploads, not with gnupload)." >&2
+        echo "$0: See --help and its examples if need be." >&2
+        exit 1
       else
         to="$to $2"
         shift
@@ -242,6 +249,8 @@ fi
 
 # Make sure passphrase is not exported in the environment.
 unset passphrase
+unset passphrase_fd_0
+GNUPGHOME=${GNUPGHOME:-$HOME/.gnupg}
 
 # Reset PATH to be sure that echo is a built-in.  We will later use
 # 'echo $passphrase' to output the passphrase, so it is important that
@@ -249,12 +258,13 @@ unset passphrase
 # listings with their arguments...).
 # Remember this script runs with 'set -e', so if echo is not built-in
 # it will exit now.
-if $dry_run; then :; else
+if $dry_run || grep -q "^use-agent" $GNUPGHOME/gpg.conf; then :; else
   PATH=/empty echo -n "Enter GPG passphrase: "
   stty -echo
   read -r passphrase
   stty echo
   echo
+  passphrase_fd_0="--passphrase-fd 0"
 fi
 
 if test $# -ne 0; then
@@ -262,7 +272,7 @@ if test $# -ne 0; then
   do
     echo "Signing $file ..."
     rm -f $file.sig
-    echo "$passphrase" | $dbg $GPG --passphrase-fd 0 -ba -o $file.sig $file
+    echo "$passphrase" | $dbg $GPG $passphrase_fd_0 -ba -o $file.sig $file
   done
 fi
 
@@ -320,12 +330,12 @@ upload ()
   case $dest in
     alpha.gnu.org:*)
       mkdirective "$destdir" "$base" "$file" "$stmt"
-      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive
       $dbg ncftpput ftp-upload.gnu.org /incoming/alpha $files $base.directive.asc
       ;;
     ftp.gnu.org:*)
       mkdirective "$destdir" "$base" "$file" "$stmt"
-      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive
       $dbg ncftpput ftp-upload.gnu.org /incoming/ftp $files $base.directive.asc
       ;;
     savannah.gnu.org:*)
@@ -344,7 +354,7 @@ upload ()
       destdir_p1=`echo "$destdir" | sed 's,^[^/]*/,,'`
       destdir_topdir=`echo "$destdir" | sed 's,/.*,,'`
       mkdirective "$destdir_p1" "$base" "$file" "$stmt"
-      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive
       for f in $files $base.directive.asc
       do
         echo put $f
@@ -353,7 +363,7 @@ upload ()
     /*)
       dest_host=`echo "$dest" | sed 's,:.*,,'`
       mkdirective "$destdir" "$base" "$file" "$stmt"
-      echo "$passphrase" | $dbg $GPG --passphrase-fd 0 --clearsign $base.directive
+      echo "$passphrase" | $dbg $GPG $passphrase_fd_0 --clearsign $base.directive
       $dbg cp $files $base.directive.asc $dest_host
       ;;
     *)
index bc1081b..4d5020d 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Compile a Java program.
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 # Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 #
 # This program is free software: you can redistribute it and/or modify
index 2f8d533..1524501 100644 (file)
@@ -1,7 +1,7 @@
 #!/bin/sh
 # Execute a Java program.
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
 # Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 #
 # This program is free software: you can redistribute it and/or modify
index 4614441..b3719cf 100755 (executable)
@@ -3,7 +3,7 @@
 
 scriptversion=2010-08-21.06; # UTC
 
-# Copyright (C) 1995-2012 Free Software Foundation, Inc.
+# Copyright (C) 1995-2013 Free Software Foundation, Inc.
 # written by Ulrich Drepper <drepper@gnu.ai.mit.edu>, June 1995
 #
 # This program is free software; you can redistribute it and/or modify
index 9a55648..cdea514 100755 (executable)
@@ -1,10 +1,10 @@
 #! /bin/sh
-# Common stub for a few missing GNU programs while installing.
+# Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-01-06.18; # UTC
+scriptversion=2012-06-26.16; # UTC
 
-# Copyright (C) 1996-2012 Free Software Foundation, Inc.
-# Originally by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
+# Originally written by Fran,cois Pinard <pinard@iro.umontreal.ca>, 1996.
 
 # 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
@@ -29,61 +29,33 @@ if test $# -eq 0; then
   exit 1
 fi
 
-run=:
-sed_output='s/.* --output[ =]\([^ ]*\).*/\1/p'
-sed_minuso='s/.* -o \([^ ]*\).*/\1/p'
-
-# In the cases where this matters, 'missing' is being run in the
-# srcdir already.
-if test -f configure.ac; then
-  configure_ac=configure.ac
-else
-  configure_ac=configure.in
-fi
+case $1 in
 
-msg="missing on your system"
+  --is-lightweight)
+    # Used by our autoconf macros to check whether the available missing
+    # script is modern enough.
+    exit 0
+    ;;
 
-case $1 in
---run)
-  # Try to run requested program, and just exit if it succeeds.
-  run=
-  shift
-  "$@" && exit 0
-  # Exit code 63 means version mismatch.  This often happens
-  # when the user try to use an ancient version of a tool on
-  # a file that requires a minimum version.  In this case we
-  # we should proceed has if the program had been absent, or
-  # if --run hadn't been passed.
-  if test $? = 63; then
-    run=:
-    msg="probably too old"
-  fi
-  ;;
+  --run)
+    # Back-compat with the calling convention used by older automake.
+    shift
+    ;;
 
   -h|--h|--he|--hel|--help)
     echo "\
 $0 [OPTION]... PROGRAM [ARGUMENT]...
 
-Handle 'PROGRAM [ARGUMENT]...' for when PROGRAM is missing, or return an
-error status if there is no known handling for PROGRAM.
+Run 'PROGRAM [ARGUMENT]...', returning a proper advice when this fails due
+to PROGRAM being missing or too old.
 
 Options:
   -h, --help      display this help and exit
   -v, --version   output version information and exit
-  --run           try to run the given command, and emulate it if it fails
 
 Supported PROGRAM values:
-  aclocal      touch file 'aclocal.m4'
-  autoconf     touch file 'configure'
-  autoheader   touch file 'config.h.in'
-  autom4te     touch the output file, or create a stub one
-  automake     touch all 'Makefile.in' files
-  bison        create 'y.tab.[ch]', if possible, from existing .[ch]
-  flex         create 'lex.yy.c', if possible, from existing .c
-  help2man     touch the output file
-  lex          create 'lex.yy.c', if possible, from existing .c
-  makeinfo     touch the output file
-  yacc         create 'y.tab.[ch]', if possible, from existing .[ch]
+  aclocal   autoconf  autoheader   autom4te  automake  makeinfo
+  bison     yacc      flex         lex       help2man
 
 Version suffixes to PROGRAM as well as the prefixes 'gnu-', 'gnu', and
 'g' are ignored when checking the name.
@@ -98,228 +70,141 @@ Send bug reports to <bug-automake@gnu.org>."
     ;;
 
   -*)
-    echo 1>&2 "$0: Unknown '$1' option"
+    echo 1>&2 "$0: unknown '$1' option"
     echo 1>&2 "Try '$0 --help' for more information"
     exit 1
     ;;
 
 esac
 
-# normalize program name to check for.
-program=`echo "$1" | sed '
-  s/^gnu-//; t
-  s/^gnu//; t
-  s/^g//; t'`
-
-# Now exit if we have it, but it failed.  Also exit now if we
-# don't have it and --version was passed (most likely to detect
-# the program).  This is about non-GNU programs, so use $1 not
-# $program.
-case $1 in
-  lex*|yacc*)
-    # Not GNU programs, they don't have --version.
-    ;;
-
-  *)
-    if test -z "$run" && ($1 --version) > /dev/null 2>&1; then
-       # We have it, but it failed.
-       exit 1
-    elif test "x$2" = "x--version" || test "x$2" = "x--help"; then
-       # Could not run --version or --help.  This is probably someone
-       # running '$TOOL --version' or '$TOOL --help' to check whether
-       # $TOOL exists and not knowing $TOOL uses missing.
-       exit 1
-    fi
-    ;;
-esac
-
-# If it does not exist, or fails to run (possibly an outdated version),
-# try to emulate it.
-case $program in
-  aclocal*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acinclude.m4' or '${configure_ac}'.  You might want
-         to install the Automake and Perl packages.  Grab them from
-         any GNU archive site."
-    touch aclocal.m4
-    ;;
-
-  autoconf*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified '${configure_ac}'.  You might want to install the
-         Autoconf and GNU m4 packages.  Grab them from any GNU
-         archive site."
-    touch configure
-    ;;
-
-  autoheader*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'acconfig.h' or '${configure_ac}'.  You might want
-         to install the Autoconf and GNU m4 packages.  Grab them
-         from any GNU archive site."
-    files=`sed -n 's/^[ ]*A[CM]_CONFIG_HEADER(\([^)]*\)).*/\1/p' ${configure_ac}`
-    test -z "$files" && files="config.h"
-    touch_files=
-    for f in $files; do
-      case $f in
-      *:*) touch_files="$touch_files "`echo "$f" |
-                                      sed -e 's/^[^:]*://' -e 's/:.*//'`;;
-      *) touch_files="$touch_files $f.in";;
-      esac
-    done
-    touch $touch_files
-    ;;
-
-  automake*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified 'Makefile.am', 'acinclude.m4' or '${configure_ac}'.
-         You might want to install the Automake and Perl packages.
-         Grab them from any GNU archive site."
-    find . -type f -name Makefile.am -print |
-          sed 's/\.am$/.in/' |
-          while read f; do touch "$f"; done
-    ;;
-
-  autom4te*)
-    echo 1>&2 "\
-WARNING: '$1' is needed, but is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.
-         You can get '$1' as part of Autoconf from any GNU
-         archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo "#! /bin/sh"
-       echo "# Created by GNU Automake missing as a replacement of"
-       echo "#  $ $@"
-       echo "exit 0"
-       chmod +x $file
-       exit 1
-    fi
-    ;;
-
-  bison*|yacc*)
-    echo 1>&2 "\
-WARNING: '$1' $msg.  You should only need it if
-         you modified a '.y' file.  You may need the Bison package
-         in order for those modifications to take effect.  You can get
-         Bison from any GNU archive site."
-    rm -f y.tab.c y.tab.h
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.y)
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.c
-           fi
-           SRCFILE=`echo "$LASTARG" | sed 's/y$/h/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" y.tab.h
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f y.tab.h; then
-       echo >y.tab.h
-    fi
-    if test ! -f y.tab.c; then
-       echo 'main() { return 0; }' >y.tab.c
-    fi
-    ;;
-
-  lex*|flex*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.l' file.  You may need the Flex package
-         in order for those modifications to take effect.  You can get
-         Flex from any GNU archive site."
-    rm -f lex.yy.c
-    if test $# -ne 1; then
-        eval LASTARG=\${$#}
-       case $LASTARG in
-       *.l)
-           SRCFILE=`echo "$LASTARG" | sed 's/l$/c/'`
-           if test -f "$SRCFILE"; then
-                cp "$SRCFILE" lex.yy.c
-           fi
-         ;;
-       esac
-    fi
-    if test ! -f lex.yy.c; then
-       echo 'main() { return 0; }' >lex.yy.c
-    fi
-    ;;
-
-  help2man*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-        you modified a dependency of a manual page.  You may need the
-        Help2man package in order for those modifications to take
-        effect.  You can get Help2man from any GNU archive site."
-
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -f "$file"; then
-       touch $file
-    else
-       test -z "$file" || exec >$file
-       echo ".ab help2man is required to generate this page"
-       exit $?
-    fi
-    ;;
-
-  makeinfo*)
-    echo 1>&2 "\
-WARNING: '$1' is $msg.  You should only need it if
-         you modified a '.texi' or '.texinfo' file, or any other file
-         indirectly affecting the aspect of the manual.  The spurious
-         call might also be the consequence of using a buggy 'make' (AIX,
-         DU, IRIX).  You might want to install the Texinfo package or
-         the GNU make package.  Grab either from any GNU archive site."
-    # The file to touch is that specified with -o ...
-    file=`echo "$*" | sed -n "$sed_output"`
-    test -z "$file" && file=`echo "$*" | sed -n "$sed_minuso"`
-    if test -z "$file"; then
-      # ... or it is the one specified with @setfilename ...
-      infile=`echo "$*" | sed 's/.* \([^ ]*\) *$/\1/'`
-      file=`sed -n '
-       /^@setfilename/{
-         s/.* \([^ ]*\) *$/\1/
-         p
-         q
-       }' $infile`
-      # ... or it is derived from the source name (dir/f.texi becomes f.info)
-      test -z "$file" && file=`echo "$infile" | sed 's,.*/,,;s,.[^.]*$,,'`.info
-    fi
-    # If the file does not exist, the user really needs makeinfo;
-    # let's fail without touching anything.
-    test -f $file || exit 1
-    touch $file
-    ;;
+# Run the given program, remember its exit status.
+"$@"; st=$?
+
+# If it succeeded, we are done.
+test $st -eq 0 && exit 0
+
+# Also exit now if we it failed (or wasn't found), and '--version' was
+# passed; such an option is passed most likely to detect whether the
+# program is present and works.
+case $2 in --version|--help) exit $st;; esac
+
+# Exit code 63 means version mismatch.  This often happens when the user
+# tries to use an ancient version of a tool on a file that requires a
+# minimum version.
+if test $st -eq 63; then
+  msg="probably too old"
+elif test $st -eq 127; then
+  # Program was missing.
+  msg="missing on your system"
+else
+  # Program was found and executed, but failed.  Give up.
+  exit $st
+fi
 
-  *)
-    echo 1>&2 "\
-WARNING: '$1' is needed, and is $msg.
-         You might have modified some files without having the
-         proper tools for further handling them.  Check the 'README' file,
-         it often tells you about the needed prerequisites for installing
-         this package.  You may also peek at any GNU archive site, in case
-         some other package would contain this missing '$1' program."
-    exit 1
+perl_URL=http://www.perl.org/
+flex_URL=http://flex.sourceforge.net/
+gnu_software_URL=http://www.gnu.org/software
+
+program_details ()
+{
+  case $1 in
+    aclocal|automake)
+      echo "The '$1' program is part of the GNU Automake package:"
+      echo "<$gnu_software_URL/automake>"
+      echo "It also requires GNU Autoconf, GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/autoconf>"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+    autoconf|autom4te|autoheader)
+      echo "The '$1' program is part of the GNU Autoconf package:"
+      echo "<$gnu_software_URL/autoconf/>"
+      echo "It also requires GNU m4 and Perl in order to run:"
+      echo "<$gnu_software_URL/m4/>"
+      echo "<$perl_URL>"
+      ;;
+  esac
+}
+
+give_advice ()
+{
+  # Normalize program name to check for.
+  normalized_program=`echo "$1" | sed '
+    s/^gnu-//; t
+    s/^gnu//; t
+    s/^g//; t'`
+
+  printf '%s\n' "'$1' is $msg."
+
+  configure_deps="'configure.ac' or m4 files included by 'configure.ac'"
+  case $normalized_program in
+    autoconf*)
+      echo "You should only need it if you modified 'configure.ac',"
+      echo "or m4 files included by it."
+      program_details 'autoconf'
+      ;;
+    autoheader*)
+      echo "You should only need it if you modified 'acconfig.h' or"
+      echo "$configure_deps."
+      program_details 'autoheader'
+      ;;
+    automake*)
+      echo "You should only need it if you modified 'Makefile.am' or"
+      echo "$configure_deps."
+      program_details 'automake'
+      ;;
+    aclocal*)
+      echo "You should only need it if you modified 'acinclude.m4' or"
+      echo "$configure_deps."
+      program_details 'aclocal'
+      ;;
+   autom4te*)
+      echo "You might have modified some maintainer files that require"
+      echo "the 'automa4te' program to be rebuilt."
+      program_details 'autom4te'
+      ;;
+    bison*|yacc*)
+      echo "You should only need it if you modified a '.y' file."
+      echo "You may want to install the GNU Bison package:"
+      echo "<$gnu_software_URL/bison/>"
+      ;;
+    lex*|flex*)
+      echo "You should only need it if you modified a '.l' file."
+      echo "You may want to install the Fast Lexical Analyzer package:"
+      echo "<$flex_URL>"
+      ;;
+    help2man*)
+      echo "You should only need it if you modified a dependency" \
+           "of a man page."
+      echo "You may want to install the GNU Help2man package:"
+      echo "<$gnu_software_URL/help2man/>"
     ;;
-esac
-
-exit 0
+    makeinfo*)
+      echo "You should only need it if you modified a '.texi' file, or"
+      echo "any other file indirectly affecting the aspect of the manual."
+      echo "You might want to install the Texinfo package:"
+      echo "<$gnu_software_URL/texinfo/>"
+      echo "The spurious makeinfo call might also be the consequence of"
+      echo "using a buggy 'make' (AIX, DU, IRIX), in which case you might"
+      echo "want to install GNU make:"
+      echo "<$gnu_software_URL/make/>"
+      ;;
+    *)
+      echo "You might have modified some files without having the proper"
+      echo "tools for further handling them.  Check the 'README' file, it"
+      echo "often tells you about the needed prerequisites for installing"
+      echo "this package.  You may also peek at any GNU archive site, in"
+      echo "case some other package contains this missing '$1' program."
+      ;;
+  esac
+}
+
+give_advice "$1" | sed -e '1s/^/WARNING: /' \
+                       -e '2,$s/^/         /' >&2
+
+# Propagate the correct exit status (expected to be 127 for a program
+# not found, 63 for a program that failed due to version mismatch).
+exit $st
 
 # Local variables:
 # eval: (add-hook 'write-file-hooks 'time-stamp)
index 3a9dd26..8ea2a47 100644 (file)
@@ -1,5 +1,5 @@
 /* A C macro for declaring that specific arguments must not be NULL.
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
index 96da94b..b35b933 100644 (file)
@@ -1,5 +1,5 @@
 /* C++ compatible function declaration macros.
-   Copyright (C) 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 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
index d4cb94f..1736a1b 100644 (file)
@@ -1,5 +1,5 @@
 /* A C macro for emitting warnings if a function is used.
-   Copyright (C) 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 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
@@ -55,7 +55,7 @@
    rather than issue the nice warning, but the end result of informing
    the developer about their portability problem is still achieved):
    #if HAVE_RAW_DECL_ENVIRON
-   static inline char ***rpl_environ (void) { return &environ; }
+   static char ***rpl_environ (void) { return &environ; }
    _GL_WARN_ON_USE (rpl_environ, "environ is not always properly declared");
    # undef environ
    # define environ (*rpl_environ ())
diff --git a/build-aux/test-driver b/build-aux/test-driver
new file mode 100755 (executable)
index 0000000..32bf39e
--- /dev/null
@@ -0,0 +1,127 @@
+#! /bin/sh
+# test-driver - basic testsuite driver script.
+
+scriptversion=2012-06-27.10; # UTC
+
+# Copyright (C) 2011-2013 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 2, 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/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <bug-automake@gnu.org> or send patches to
+# <automake-patches@gnu.org>.
+
+# Make unconditional expansion of undefined variables an error.  This
+# helps a lot in preventing typo-related bugs.
+set -u
+
+usage_error ()
+{
+  echo "$0: $*" >&2
+  print_usage >&2
+  exit 2
+}
+
+print_usage ()
+{
+  cat <<END
+Usage:
+  test-driver --test-name=NAME --log-file=PATH --trs-file=PATH
+              [--expect-failure={yes|no}] [--color-tests={yes|no}]
+              [--enable-hard-errors={yes|no}] [--] TEST-SCRIPT
+The '--test-name', '--log-file' and '--trs-file' options are mandatory.
+END
+}
+
+# TODO: better error handling in option parsing (in particular, ensure
+# TODO: $log_file, $trs_file and $test_name are defined).
+test_name= # Used for reporting.
+log_file=  # Where to save the output of the test script.
+trs_file=  # Where to save the metadata of the test run.
+expect_failure=no
+color_tests=no
+enable_hard_errors=yes
+while test $# -gt 0; do
+  case $1 in
+  --help) print_usage; exit $?;;
+  --version) echo "test-driver $scriptversion"; exit $?;;
+  --test-name) test_name=$2; shift;;
+  --log-file) log_file=$2; shift;;
+  --trs-file) trs_file=$2; shift;;
+  --color-tests) color_tests=$2; shift;;
+  --expect-failure) expect_failure=$2; shift;;
+  --enable-hard-errors) enable_hard_errors=$2; shift;;
+  --) shift; break;;
+  -*) usage_error "invalid option: '$1'";;
+  esac
+  shift
+done
+
+if test $color_tests = yes; then
+  # Keep this in sync with 'lib/am/check.am:$(am__tty_colors)'.
+  red='\e[0;31m' # Red.
+  grn='\e[0;32m' # Green.
+  lgn='\e[1;32m' # Light green.
+  blu='\e[1;34m' # Blue.
+  mgn='\e[0;35m' # Magenta.
+  std='\e[m'     # No color.
+else
+  red= grn= lgn= blu= mgn= std=
+fi
+
+do_exit='rm -f $log_file $trs_file; (exit $st); exit $st'
+trap "st=129; $do_exit" 1
+trap "st=130; $do_exit" 2
+trap "st=141; $do_exit" 13
+trap "st=143; $do_exit" 15
+
+# Test script is run here.
+"$@" >$log_file 2>&1
+estatus=$?
+if test $enable_hard_errors = no && test $estatus -eq 99; then
+  estatus=1
+fi
+
+case $estatus:$expect_failure in
+  0:yes) col=$red res=XPASS recheck=yes gcopy=yes;;
+  0:*)   col=$grn res=PASS  recheck=no  gcopy=no;;
+  77:*)  col=$blu res=SKIP  recheck=no  gcopy=yes;;
+  99:*)  col=$mgn res=ERROR recheck=yes gcopy=yes;;
+  *:yes) col=$lgn res=XFAIL recheck=no  gcopy=yes;;
+  *:*)   col=$red res=FAIL  recheck=yes gcopy=yes;;
+esac
+
+# Report outcome to console.
+echo "${col}${res}${std}: $test_name"
+
+# Register the test result, and other relevant metadata.
+echo ":test-result: $res" > $trs_file
+echo ":global-test-result: $res" >> $trs_file
+echo ":recheck: $recheck" >> $trs_file
+echo ":copy-in-global-log: $gcopy" >> $trs_file
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
index c7354ed..85f184c 100644 (file)
@@ -3,11 +3,11 @@
 % Load plain if necessary, i.e., if running under initex.
 \expandafter\ifx\csname fmtname\endcsname\relax\input plain\fi
 %
-\def\texinfoversion{2012-07-29.17}
+\def\texinfoversion{2013-02-01.11}
 %
 % Copyright 1985, 1986, 1988, 1990, 1991, 1992, 1993, 1994, 1995,
 % 1996, 1997, 1998, 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006,
-% 2007, 2008, 2009, 2010, 2011, 2012 Free Software Foundation, Inc.
+% 2007, 2008, 2009, 2010, 2011, 2012, 2013 Free Software Foundation, Inc.
 %
 % This texinfo.tex file is free software: you can redistribute it and/or
 % modify it under the terms of the GNU General Public License as
@@ -24,7 +24,8 @@
 %
 % As a special exception, when this file is read by TeX when processing
 % a Texinfo source document, you may use the result without
-% restriction.  (This has been our intent since Texinfo was invented.)
+% restriction. This Exception is an additional permission under section 7
+% of the GNU General Public License, version 3 ("GPLv3").
 %
 % Please try the latest version of texinfo.tex before submitting bug
 % reports; you can get the latest version from:
 \def\:{\spacefactor=1000 }
 
 % @* forces a line break.
-\def\*{\hfil\break\hbox{}\ignorespaces}
+\def\*{\unskip\hfil\break\hbox{}\ignorespaces}
 
 % @/ allows a line break.
 \let\/=\allowbreak
@@ -2272,8 +2273,6 @@ end
 
 \gdef\markupsetcodequoteleft{\let`\codequoteleft}
 \gdef\markupsetcodequoteright{\let'\codequoteright}
-
-\gdef\markupsetnoligaturesquoteleft{\let`\noligaturesquoteleft}
 }
 
 \let\markupsetuplqcode \markupsetcodequoteleft
@@ -2282,6 +2281,9 @@ end
 \let\markupsetuplqexample \markupsetcodequoteleft
 \let\markupsetuprqexample \markupsetcodequoteright
 %
+\let\markupsetuplqkbd     \markupsetcodequoteleft
+\let\markupsetuprqkbd     \markupsetcodequoteright
+%
 \let\markupsetuplqsamp \markupsetcodequoteleft
 \let\markupsetuprqsamp \markupsetcodequoteright
 %
@@ -2291,8 +2293,6 @@ end
 \let\markupsetuplqverbatim \markupsetcodequoteleft
 \let\markupsetuprqverbatim \markupsetcodequoteright
 
-\let\markupsetuplqkbd \markupsetnoligaturesquoteleft
-
 % Allow an option to not use regular directed right quote/apostrophe
 % (char 0x27), but instead the undirected quote from cmtt (char 0x0d).
 % The undirected quote is ugly, so don't make it the default, but it
@@ -2382,8 +2382,7 @@ end
   \aftersmartic
 }
 
-% like \smartslanted except unconditionally uses \ttsl, and no ic.
-% @var is set to this for defun arguments.
+% Unconditional use \ttsl, and no ic.  @var is set to this for defuns.
 \def\ttslanted#1{{\ttsl #1}}
 
 % @cite is like \smartslanted except unconditionally use \sl.  We never want
@@ -2497,7 +2496,7 @@ end
      \let-\codedash
      \let_\codeunder
     \else
-     \let-\realdash
+     \let-\normaldash
      \let_\realunder
     \fi
     \codex
@@ -2506,7 +2505,7 @@ end
 
 \def\codex #1{\tclose{#1}\endgroup}
 
-\def\realdash{-}
+\def\normaldash{-}
 \def\codedash{-\discretionary{}{}{}}
 \def\codeunder{%
   % this is all so @math{@code{var_name}+1} can work.  In math mode, _
@@ -2521,9 +2520,9 @@ end
 }
 
 % An additional complication: the above will allow breaks after, e.g.,
-% each of the four underscores in __typeof__.  This is undesirable in
-% some manuals, especially if they don't have long identifiers in
-% general.  @allowcodebreaks provides a way to control this.
+% each of the four underscores in __typeof__.  This is bad.
+% @allowcodebreaks provides a document-level way to turn breaking at -
+% and _ on and off.
 %
 \newif\ifallowcodebreaks  \allowcodebreakstrue
 
@@ -2695,10 +2694,6 @@ end
   \let\email=\uref
 \fi
 
-% @kbd is like @code, except that if the argument is just one @key command,
-% then @kbd has no effect.
-\def\kbd#1{{\setupmarkupstyle{kbd}\def\look{#1}\expandafter\kbdfoo\look??\par}}
-
 % @kbdinputstyle -- arg is `distinct' (@kbd uses slanted tty font always),
 %   `example' (@kbd uses ttsl only inside of @example and friends),
 %   or `code' (@kbd uses normal tty font always).
@@ -2722,11 +2717,17 @@ end
 % Default is `distinct'.
 \kbdinputstyle distinct
 
+% @kbd is like @code, except that if the argument is just one @key command,
+% then @kbd has no effect.
+\def\kbd#1{{\def\look{#1}\expandafter\kbdsub\look??\par}}
+
 \def\xkey{\key}
-\def\kbdfoo#1#2#3\par{\def\one{#1}\def\three{#3}\def\threex{??}%
-\ifx\one\xkey\ifx\threex\three \key{#2}%
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
-\else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi}
+\def\kbdsub#1#2#3\par{%
+  \def\one{#1}\def\three{#3}\def\threex{??}%
+  \ifx\one\xkey\ifx\threex\three \key{#2}%
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+  \else{\tclose{\kbdfont\setupmarkupstyle{kbd}\look}}\fi
+}
 
 % definition of @key that produces a lozenge.  Doesn't adjust to text size.
 %\setfont\keyrm\rmshape{8}{1000}{OT1}
@@ -3146,12 +3147,17 @@ end
   % hopefully nobody will notice/care.
   \edef\ecsize{\csname\curfontsize ecsize\endcsname}%
   \edef\nominalsize{\csname\curfontsize nominalsize\endcsname}%
-  \ifx\curfontstyle\bfstylename
-    % bold:
-    \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+  \ifmonospace
+    % typewriter:
+    \font\thisecfont = ectt\ecsize \space at \nominalsize
   \else
-    % regular:
-    \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \ifx\curfontstyle\bfstylename
+      % bold:
+      \font\thisecfont = ecb\ifusingit{i}{x}\ecsize \space at \nominalsize
+    \else
+      % regular:
+      \font\thisecfont = ec\ifusingit{ti}{rm}\ecsize \space at \nominalsize
+    \fi
   \fi
   \thisecfont
 }
@@ -3264,6 +3270,20 @@ end
   \finishedtitlepagetrue
 }
 
+% Settings used for typesetting titles: no hyphenation, no indentation,
+% don't worry much about spacing, ragged right.  This should be used
+% inside a \vbox, and fonts need to be set appropriately first.  Because
+% it is always used for titles, nothing else, we call \rmisbold.  \par
+% should be specified before the end of the \vbox, since a vbox is a group.
+% 
+\def\raggedtitlesettings{%
+  \rmisbold
+  \hyphenpenalty=10000
+  \parindent=0pt
+  \tolerance=5000
+  \ptexraggedright
+}
+
 % Macros to be used within @titlepage:
 
 \let\subtitlerm=\tenrm
@@ -3271,7 +3291,7 @@ end
 
 \parseargdef\title{%
   \checkenv\titlepage
-  \leftline{\titlefonts\rmisbold #1}
+  \vbox{\titlefonts \raggedtitlesettings #1\par}%
   % print a rule at the page bottom also.
   \finishedtitlepagefalse
   \vskip4pt \hrule height 4pt width \hsize \vskip4pt
@@ -4168,7 +4188,7 @@ end
     % ..., but we might end up with active ones in the argument if
     % we're called from @code, as @code{@value{foo-bar_}}, though.
     % So \let them to their normal equivalents.
-    \let-\realdash \let_\normalunderscore
+    \let-\normaldash \let_\normalunderscore
   }
 }
 
@@ -4238,7 +4258,7 @@ end
 }
 \def\ifcmddefinedfail{\doignore{ifcommanddefined}}
 
-% @ifcommandnotdefined CMD ... handlded similar to @ifclear above.
+% @ifcommandnotdefined CMD ... handled similar to @ifclear above.
 \makecond{ifcommandnotdefined}
 \def\ifcommandnotdefined{%
   \parsearg{\doifcmddefined{\else \let\next=\ifcmdnotdefinedfail}}}
@@ -5574,14 +5594,6 @@ end
 
 % Define @majorheading, @heading and @subheading
 
-% NOTE on use of \vbox for chapter headings, section headings, and such:
-%       1) We use \vbox rather than the earlier \line to permit
-%          overlong headings to fold.
-%       2) \hyphenpenalty is set to 10000 because hyphenation in a
-%          heading is obnoxious; this forbids it.
-%       3) Likewise, headings look best if no \parindent is used, and
-%          if justification is not attempted.  Hence \raggedright.
-
 \def\majorheading{%
   {\advance\chapheadingskip by 10pt \chapbreak }%
   \parsearg\chapheadingzzz
@@ -5589,10 +5601,8 @@ end
 
 \def\chapheading{\chapbreak \parsearg\chapheadingzzz}
 \def\chapheadingzzz#1{%
-  {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                    \parindent=0pt\ptexraggedright
-                    \rmisbold #1\hfill}}%
-  \bigskip \par\penalty 200\relax
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip \nobreak
   \suppressfirstparagraphindent
 }
 
@@ -5751,8 +5761,7 @@ end
     %
     % Typeset the actual heading.
     \nobreak % Avoid page breaks at the interline glue.
-    \vbox{\hyphenpenalty=10000 \tolerance=5000 \parindent=0pt \ptexraggedright
-          \hangindent=\wd0 \centerparametersmaybe
+    \vbox{\raggedtitlesettings \hangindent=\wd0 \centerparametersmaybe
           \unhbox0 #1\par}%
   }%
   \nobreak\bigskip % no page break after a chapter title
@@ -5774,18 +5783,18 @@ end
 \def\setchapterstyle #1 {\csname CHAPF#1\endcsname}
 %
 \def\unnchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt\ptexraggedright
-                       \rmisbold #1\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings #1\par}%
+  \nobreak\bigskip\nobreak
 }
 \def\chfopen #1#2{\chapoddpage {\chapfonts
 \vbox to 3in{\vfil \hbox to\hsize{\hfil #2} \hbox to\hsize{\hfil #1} \vfil}}%
 \par\penalty 5000 %
 }
 \def\centerchfopen #1{%
-\chapoddpage {\chapfonts \vbox{\hyphenpenalty=10000\tolerance=5000
-                       \parindent=0pt
-                       \hfill {\rmisbold #1}\hfill}}\bigskip \par\nobreak
+  \chapoddpage
+  \vbox{\chapfonts \raggedtitlesettings \hfill #1\hfill}%
+  \nobreak\bigskip \nobreak
 }
 \def\CHAPFopen{%
   \global\let\chapmacro=\chfopen
@@ -6551,16 +6560,9 @@ end
 \makedispenvdef{quotation}{\quotationstart}
 %
 \def\quotationstart{%
-  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
-  \parindent=0pt
-  %
-  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \indentedblockstart % same as \indentedblock, but increase right margin too.
   \ifx\nonarrowing\relax
-    \advance\leftskip by \lispnarrowing
     \advance\rightskip by \lispnarrowing
-    \exdentamount = \lispnarrowing
-  \else
-    \let\nonarrowing = \relax
   \fi
   \parsearg\quotationlabel
 }
@@ -6586,6 +6588,32 @@ end
   \fi
 }
 
+% @indentedblock is like @quotation, but indents only on the left and
+% has no optional argument.
+% 
+\makedispenvdef{indentedblock}{\indentedblockstart}
+%
+\def\indentedblockstart{%
+  {\parskip=0pt \aboveenvbreak}% because \aboveenvbreak inserts \parskip
+  \parindent=0pt
+  %
+  % @cartouche defines \nonarrowing to inhibit narrowing at next level down.
+  \ifx\nonarrowing\relax
+    \advance\leftskip by \lispnarrowing
+    \exdentamount = \lispnarrowing
+  \else
+    \let\nonarrowing = \relax
+  \fi
+}
+
+% Keep a nonzero parskip for the environment, since we're doing normal filling.
+%
+\def\Eindentedblock{%
+  \par
+  {\parskip=0pt \afterenvbreak}%
+}
+\def\Esmallindentedblock{\Eindentedblock}
+
 
 % LaTeX-like @verbatim...@end verbatim and @verb{<char>...<char>}
 % If we want to allow any <char> as delimiter,
@@ -7064,7 +7092,10 @@ end
   \df \sl \hyphenchar\font=0
   %
   % On the other hand, if an argument has two dashes (for instance), we
-  % want a way to get ttsl.  Let's try @var for that.
+  % want a way to get ttsl.  We used to recommend @var for that, so
+  % leave the code in, but it's strange for @var to lead to typewriter.
+  % Nowadays we recommend @code, since the difference between a ttsl hyphen
+  % and a tt hyphen is pretty tiny.  @code also disables ?` !`.
   \def\var##1{{\setupmarkupstyle{var}\ttslanted{##1}}}%
   #1%
   \sl\hyphenchar\font=45
@@ -9962,22 +9993,26 @@ directory should work if nowhere else does.}
 @gdef@otherbackslash{@let\=@realbackslash}
 
 % Same as @turnoffactive except outputs \ as {\tt\char`\\} instead of
-% the literal character `\'.
-%
-@def@normalturnoffactive{%
-  @let"=@normaldoublequote
-  @let$=@normaldollar %$ font-lock fix
-  @let+=@normalplus
-  @let<=@normalless
-  @let>=@normalgreater
-  @let\=@normalbackslash
-  @let^=@normalcaret
-  @let_=@normalunderscore
-  @let|=@normalverticalbar
-  @let~=@normaltilde
-  @markupsetuplqdefault
-  @markupsetuprqdefault
-  @unsepspaces
+% the literal character `\'.  Also revert - to its normal character, in
+% case the active - from code has slipped in.
+%
+{@catcode`- = @active
+ @gdef@normalturnoffactive{%
+   @let-=@normaldash
+   @let"=@normaldoublequote
+   @let$=@normaldollar %$ font-lock fix
+   @let+=@normalplus
+   @let<=@normalless
+   @let>=@normalgreater
+   @let\=@normalbackslash
+   @let^=@normalcaret
+   @let_=@normalunderscore
+   @let|=@normalverticalbar
+   @let~=@normaltilde
+   @markupsetuplqdefault
+   @markupsetuprqdefault
+   @unsepspaces
+ }
 }
 
 % Make _ and + \other characters, temporarily.
index c0f5a13..5ba7dd6 100755 (executable)
@@ -3,7 +3,7 @@
 # Update b4_copyright invocations or b4_copyright_years definitions to
 # include the current year.
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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
index 082b749..c72d0e6 100755 (executable)
@@ -3,9 +3,9 @@ eval '(exit $?0)' && eval 'exec perl -wS -0777 -pi "$0" ${1+"$@"}'
     if 0;
 # Update an FSF copyright year list to include the current year.
 
-my $VERSION = '2012-02-05.21:39'; # UTC
+my $VERSION = '2013-01-03.09:41'; # UTC
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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
@@ -192,7 +192,7 @@ if (defined $stmt_re)
     if ($final_year != $this_year)
       {
         # Update the year.
-        $stmt =~ s/$final_year_orig/$final_year, $this_year/;
+        $stmt =~ s/\b$final_year_orig\b/$final_year, $this_year/;
       }
     if ($final_year != $this_year || $ENV{'UPDATE_COPYRIGHT_FORCE'})
       {
index 2b64630..663347a 100755 (executable)
@@ -10,7 +10,7 @@ my $VERSION = '2012-01-06 07:23'; # UTC
 # If you change this file with Emacs, please let the write hook
 # do its job.  Otherwise, update this string manually.
 
-# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 2008-2013 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
index d477da8..7ec335f 100755 (executable)
@@ -4,7 +4,7 @@
 # Print a version string.
 scriptversion=2011-05-16.22; # UTC
 
-# Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2013 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
index 9253635..1c4d776 100755 (executable)
@@ -1,10 +1,9 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2011-08-25.18; # UTC
+scriptversion=2012-12-21.17; # UTC
 
-# Copyright (C) 1996, 1997, 1998, 1999, 2001, 2002, 2003, 2004, 2005,
-# 2007, 2009, 2010, 2011 Free Software Foundation, Inc.
+# Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
 # Written by Tom Tromey <tromey@cygnus.com>.
 #
@@ -30,9 +29,41 @@ scriptversion=2011-08-25.18; # UTC
 # bugs to <bug-automake@gnu.org> or send patches to
 # <automake-patches@gnu.org>.
 
+get_dirname ()
+{
+  case $1 in
+    */*|*\\*) printf '%s\n' "$1" | sed -e 's|\([\\/]\)[^\\/]*$|\1|';;
+    # Otherwise,  we want the empty string (not ".").
+  esac
+}
+
+# guard FILE
+# ----------
+# The CPP macro used to guard inclusion of FILE.
+guard()
+{
+  printf '%s\n' "$1"                                                    \
+    | sed                                                               \
+        -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'   \
+        -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'                        \
+        -e 's/__*/_/g'
+}
+
+# quote_for_sed [STRING]
+# ----------------------
+# Return STRING (or stdin) quoted to be used as a sed pattern.
+quote_for_sed ()
+{
+  case $# in
+    0) cat;;
+    1) printf '%s\n' "$1";;
+  esac \
+    | sed -e 's|[][\\.*]|\\&|g'
+}
+
 case "$1" in
   '')
-    echo "$0: No files given.  Try \`$0 --help' for more information." 1>&2
+    echo "$0: No files given.  Try '$0 --help' for more information." 1>&2
     exit 1
     ;;
   --basedir)
@@ -67,6 +98,8 @@ esac
 # The input.
 input="$1"
 shift
+# We'll later need for a correct munging of "#line" directives.
+input_sub_rx=`get_dirname "$input" | quote_for_sed`
 case "$input" in
   [\\/]* | ?:[\\/]*)
     # Absolute path; do nothing.
@@ -76,15 +109,47 @@ case "$input" in
     input="`pwd`/$input"
     ;;
 esac
+input_rx=`get_dirname "$input" | quote_for_sed`
+
+# Since DOS filename conventions don't allow two dots,
+# the DOS version of Bison writes out y_tab.c instead of y.tab.c
+# and y_tab.h instead of y.tab.h. Test to see if this is the case.
+y_tab_nodot=false
+if test -f y_tab.c || test -f y_tab.h; then
+  y_tab_nodot=true
+fi
+
+# The parser itself, the first file, is the destination of the .y.c
+# rule in the Makefile.
+parser=$1
+
+# A sed program to s/FROM/TO/g for all the FROM/TO so that, for
+# instance, we rename #include "y.tab.h" into #include "parse.h"
+# during the conversion from y.tab.c to parse.c.
+sed_fix_filenames=
+
+# Also rename header guards, as Bison 2.7 for instance uses its header
+# guard in its implementation file.
+sed_fix_header_guards=
 
-pairlist=
 while test "$#" -ne 0; do
   if test "$1" = "--"; then
     shift
     break
   fi
-  pairlist="$pairlist $1"
+  from=$1
+  # Handle y_tab.c and y_tab.h output by DOS
+  if $y_tab_nodot; then
+    case $from in
+      "y.tab.c") from=y_tab.c;;
+      "y.tab.h") from=y_tab.h;;
+    esac
+  fi
   shift
+  to=$1
+  shift
+  sed_fix_filenames="${sed_fix_filenames}s|"`quote_for_sed "$from"`"|$to|g;"
+  sed_fix_header_guards="${sed_fix_header_guards}s|"`guard "$from"`"|"`guard "$to"`"|g;"
 done
 
 # The program to run.
@@ -115,98 +180,56 @@ esac
 ret=$?
 
 if test $ret -eq 0; then
-  set X $pairlist
-  shift
-  first=yes
-  # Since DOS filename conventions don't allow two dots,
-  # the DOS version of Bison writes out y_tab.c instead of y.tab.c
-  # and y_tab.h instead of y.tab.h. Test to see if this is the case.
-  y_tab_nodot="no"
-  if test -f y_tab.c || test -f y_tab.h; then
-    y_tab_nodot="yes"
-  fi
-
-  # The directory holding the input.
-  input_dir=`echo "$input" | sed -e 's,\([\\/]\)[^\\/]*$,\1,'`
-  # Quote $INPUT_DIR so we can use it in a regexp.
-  # FIXME: really we should care about more than `.' and `\'.
-  input_rx=`echo "$input_dir" | sed 's,\\\\,\\\\\\\\,g;s,\\.,\\\\.,g'`
-
-  while test "$#" -ne 0; do
-    from="$1"
-    # Handle y_tab.c and y_tab.h output by DOS
-    if test $y_tab_nodot = "yes"; then
-      if test $from = "y.tab.c"; then
-        from="y_tab.c"
-      else
-        if test $from = "y.tab.h"; then
-          from="y_tab.h"
-        fi
-      fi
-    fi
+  for from in *
+  do
+    to=`printf '%s\n' "$from" | sed "$sed_fix_filenames"`
     if test -f "$from"; then
       # If $2 is an absolute path name, then just use that,
-      # otherwise prepend `../'.
-      case "$2" in
-        [\\/]* | ?:[\\/]*) target="$2";;
-        *) target="../$2";;
+      # otherwise prepend '../'.
+      case $to in
+        [\\/]* | ?:[\\/]*) target=$to;;
+        *) target="../$to";;
       esac
 
-      # We do not want to overwrite a header file if it hasn't
-      # changed.  This avoid useless recompilations.  However the
-      # parser itself (the first file) should always be updated,
-      # because it is the destination of the .y.c rule in the
-      # Makefile.  Divert the output of all other files to a temporary
-      # file so we can compare them to existing versions.
-      if test $first = no; then
+      # Do not overwrite unchanged header files to avoid useless
+      # recompilations.  Always update the parser itself: it is the
+      # destination of the .y.c rule in the Makefile.  Divert the
+      # output of all other files to a temporary file so we can
+      # compare them to existing versions.
+      if test $from != $parser; then
         realtarget="$target"
-        target="tmp-`echo $target | sed s/.*[\\/]//g`"
+        target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
       fi
-      # Edit out `#line' or `#' directives.
-      #
-      # We don't want the resulting debug information to point at
-      # an absolute srcdir; it is better for it to just mention the
-      # .y file with no path.
-      #
-      # We want to use the real output file name, not yy.lex.c for
-      # instance.
-      #
-      # We want the include guards to be adjusted too.
-      FROM=`echo "$from" | sed \
-            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
-            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
-      TARGET=`echo "$2" | sed \
-            -e 'y/abcdefghijklmnopqrstuvwxyz/ABCDEFGHIJKLMNOPQRSTUVWXYZ/'\
-            -e 's/[^ABCDEFGHIJKLMNOPQRSTUVWXYZ]/_/g'`
-
-      sed -e "/^#/!b" -e "s,$input_rx,," -e "s,$from,$2," \
-          -e "s,$FROM,$TARGET," "$from" >"$target" || ret=$?
-
-      # Check whether header files must be updated.
-      if test $first = no; then
+
+      # Munge "#line" or "#" directives.  Don't let the resulting
+      # debug information point at an absolute srcdir.  Use the real
+      # output file name, not yy.lex.c for instance.  Adjust the
+      # include guards too.
+      sed -e "/^#/!b"                           \
+          -e "s|$input_rx|$input_sub_rx|"       \
+          -e "$sed_fix_filenames"               \
+          -e "$sed_fix_header_guards"           \
+        "$from" >"$target" || ret=$?
+
+      # Check whether files must be updated.
+      if test "$from" != "$parser"; then
         if test -f "$realtarget" && cmp -s "$realtarget" "$target"; then
-          echo "$2" is unchanged
+          echo "$to is unchanged"
           rm -f "$target"
         else
-          echo updating "$2"
+          echo "updating $to"
           mv -f "$target" "$realtarget"
         fi
       fi
     else
-      # A missing file is only an error for the first file.  This
-      # is a blatant hack to let us support using "yacc -d".  If -d
-      # is not specified, we don't want an error when the header
-      # file is "missing".
-      if test $first = yes; then
+      # A missing file is only an error for the parser.  This is a
+      # blatant hack to let us support using "yacc -d".  If -d is not
+      # specified, don't fail when the header file is "missing".
+      if test "$from" = "$parser"; then
         ret=1
       fi
     fi
-    shift
-    shift
-    first=no
   done
-else
-  ret=$?
 fi
 
 # Remove the directory.
diff --git a/cfg.mk b/cfg.mk
index 3a70379..3418ac3 100644 (file)
--- a/cfg.mk
+++ b/cfg.mk
@@ -1,5 +1,5 @@
 # Customize maint.mk                           -*- makefile -*-
-# Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 2008-2013 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
@@ -24,6 +24,7 @@ regen: _version
 
 # Used in maint.mk's web-manual rule
 manual_title = The Yacc-compatible Parser Generator
+gendocs_options_ = -I $(abs_top_srcdir)/doc -I $(abs_top_builddir)/doc
 
 # It's useful to run maintainer-*check* targets during development, but we
 # don't want to wait on a recompile because of an update to $(VERSION).  Thus,
@@ -60,6 +61,18 @@ update-copyright: update-b4-copyright update-package-copyright-year
 update-copyright-env = \
   UPDATE_COPYRIGHT_FORCE=1 UPDATE_COPYRIGHT_USE_INTERVALS=1
 
+# At least for Mac OS X's grep, the order between . and [ in "[^.[]"
+# matters:
+# $ LC_ALL=fr_FR grep -nE '[^[.]' /dev/null
+# $ LC_ALL=C grep -nE '[^[.]' /dev/null
+# grep: invalid collating element or class
+# $ LC_ALL=fr_FR grep -nE '[^.[]' /dev/null
+# $ LC_ALL=C grep -nE '[^.[]' /dev/null
+sc_at_parser_check:
+       @prohibit='AT_PARSER_CHECK\(\[+[^.[]|AT_CHECK\(\[+\./'          \
+       halt='use AT_PARSER_CHECK for and only for generated parsers'   \
+         $(_sc_search_regexp)
+
 exclude = \
   $(foreach a,$(1),$(eval $(subst $$,$$$$,exclude_file_name_regexp--sc_$(a))))
 $(call exclude,                                                                \
@@ -70,10 +83,11 @@ $(call exclude,                                                             \
   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_doubled_word=^tests/named-refs.at$$                          \
   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]$$                                        \
-  unmarked_diagnostics=^(djgpp/|doc/bison.texi$$)                      \
+  unmarked_diagnostics=^(djgpp/|doc/bison.texi$$|tests/c\+\+\.at$$)    \
 )
index ebe6889..0da9204 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.2.
+# Generated by GNU Autoconf 2.69 for GNU Bison 2.7.12-4996.
 #
 # 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.2'
-PACKAGE_STRING='GNU Bison 2.6.2'
+PACKAGE_VERSION='2.7.12-4996'
+PACKAGE_STRING='GNU Bison 2.7.12-4996'
 PACKAGE_BUGREPORT='bug-bison@gnu.org'
 PACKAGE_URL='http://www.gnu.org/software/bison/'
 
@@ -1596,6 +1596,7 @@ REPLACE_REALLOC
 REPLACE_RANDOM_R
 REPLACE_PUTENV
 REPLACE_PTSNAME_R
+REPLACE_PTSNAME
 REPLACE_MKSTEMP
 REPLACE_MBTOWC
 REPLACE_MALLOC
@@ -1610,6 +1611,7 @@ HAVE_STRTOLL
 HAVE_STRTOD
 HAVE_DECL_SETENV
 HAVE_SETENV
+HAVE_SECURE_GETENV
 HAVE_RPMATCH
 HAVE_REALPATH
 HAVE_RANDOM_R
@@ -1637,6 +1639,7 @@ GNULIB_STRTOULL
 GNULIB_STRTOLL
 GNULIB_STRTOD
 GNULIB_SETENV
+GNULIB_SECURE_GETENV
 GNULIB_RPMATCH
 GNULIB_REALPATH
 GNULIB_REALLOC_POSIX
@@ -1668,6 +1671,7 @@ GL_COND_LIBTOOL_FALSE
 GL_COND_LIBTOOL_TRUE
 XSLTPROC
 HELP2MAN
+PERL
 M4_DEBUGFILE
 M4_GNU
 M4
@@ -1677,11 +1681,17 @@ LEXLIB
 LEX_OUTPUT_ROOT
 LEX_IS_FLEX
 LEX
+DOT
 YACC_LIBRARY
 YACC_SCRIPT
+CXX_COMPILER_POSIXLY_CORRECT
 BISON_CXX_WORKS_FALSE
 BISON_CXX_WORKS_TRUE
 BISON_CXX_WORKS
+C_COMPILER_POSIXLY_CORRECT
+BISON_C_WORKS
+NO_STRICT_ALIAS_CXXFLAGS
+WARN_NO_NULL_CONVERSION_CXXFLAGS
 WARN_CXXFLAGS_TEST
 WERROR_CXXFLAGS
 WARN_CXXFLAGS
@@ -2364,7 +2374,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.2 to adapt to many kinds of systems.
+\`configure' configures GNU Bison 2.7.12-4996 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -2434,7 +2444,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU Bison 2.6.2:";;
+     short | recursive ) echo "Configuration of GNU Bison 2.7.12-4996:";;
    esac
   cat <<\_ACEOF
 
@@ -2461,7 +2471,7 @@ Optional Features:
 Optional Packages:
   --with-PACKAGE[=ARG]    use PACKAGE [ARG=yes]
   --without-PACKAGE       do not use PACKAGE (same as --with-PACKAGE=no)
-  --with-gnu-ld           assume the C compiler uses GNU ld default=no
+  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]
   --with-libpth-prefix[=DIR]  search for libpth in DIR/include and DIR/lib
   --without-libpth-prefix     don't search for libpth in includedir and libdir
   --with-dmalloc          use dmalloc, as in
@@ -2489,7 +2499,7 @@ Some influential environment variables:
               This script will default YFLAGS to the empty string to avoid a
               default value of `-d' given by some make applications.
   M4          Location of GNU M4 1.4.6 or later. Defaults to the first program
-              of `m4', `gm4', or `gnum4' on PATH that meets Autoconf needs.
+              of 'm4', 'gm4', or 'gnum4' on PATH that meets Autoconf needs.
 
 Use these variables to override the choices made by `configure' or to help
 it to find libraries and programs with nonstandard names/locations.
@@ -2559,7 +2569,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU Bison configure 2.6.2
+GNU Bison configure 2.7.12-4996
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -2896,6 +2906,52 @@ fi
 
 } # ac_fn_c_try_link
 
+# ac_fn_cxx_try_link LINENO
+# -------------------------
+# Try to link conftest.$ac_ext, and return whether this succeeded.
+ac_fn_cxx_try_link ()
+{
+  as_lineno=${as_lineno-"$1"} as_lineno_stack=as_lineno_stack=$as_lineno_stack
+  rm -f conftest.$ac_objext conftest$ac_exeext
+  if { { ac_try="$ac_link"
+case "(($ac_try" in
+  *\"* | *\`* | *\\*) ac_try_echo=\$ac_try;;
+  *) ac_try_echo=$ac_try;;
+esac
+eval ac_try_echo="\"\$as_me:${as_lineno-$LINENO}: $ac_try_echo\""
+$as_echo "$ac_try_echo"; } >&5
+  (eval "$ac_link") 2>conftest.err
+  ac_status=$?
+  if test -s conftest.err; then
+    grep -v '^ *+' conftest.err >conftest.er1
+    cat conftest.er1 >&5
+    mv -f conftest.er1 conftest.err
+  fi
+  $as_echo "$as_me:${as_lineno-$LINENO}: \$? = $ac_status" >&5
+  test $ac_status = 0; } && {
+        test -z "$ac_cxx_werror_flag" ||
+        test ! -s conftest.err
+       } && test -s conftest$ac_exeext && {
+        test "$cross_compiling" = yes ||
+        test -x conftest$ac_exeext
+       }; then :
+  ac_retval=0
+else
+  $as_echo "$as_me: failed program was:" >&5
+sed 's/^/| /' conftest.$ac_ext >&5
+
+       ac_retval=1
+fi
+  # Delete the IPA/IPO (Inter Procedural Analysis/Optimization) information
+  # created by the PGI compiler (conftest_ipa8_conftest.oo), as it would
+  # interfere with the next link command; also delete a directory that is
+  # left behind by Apple's compiler.  We do this before executing the actions.
+  rm -rf conftest.dSYM conftest_ipa8_conftest.oo
+  eval $as_lineno_stack; ${as_lineno_stack:+:} unset as_lineno
+  as_fn_set_status $ac_retval
+
+} # ac_fn_cxx_try_link
+
 # ac_fn_c_check_type LINENO TYPE VAR INCLUDES
 # -------------------------------------------
 # Tests whether TYPE exists after having included INCLUDES, setting cache
@@ -3306,7 +3362,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.2, which was
+It was created by GNU Bison $as_me 2.7.12-4996, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -3597,9 +3653,9 @@ as_fn_append ac_func_list " __fpending"
 as_fn_append ac_func_list " vasnprintf"
 as_fn_append ac_header_list " features.h"
 as_fn_append ac_func_list " snprintf"
-as_fn_append ac_func_list " alarm"
 as_fn_append ac_func_list " __fseterr"
 as_fn_append ac_header_list " sys/stat.h"
+as_fn_append ac_func_list " getdelim"
 as_fn_append ac_func_list " getdtablesize"
 gl_getopt_required=GNU
 as_fn_append ac_header_list " getopt.h"
@@ -3705,7 +3761,7 @@ ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
 
-PACKAGE_COPYRIGHT_YEAR=2012
+PACKAGE_COPYRIGHT_YEAR=2013
 
 
 cat >>confdefs.h <<_ACEOF
@@ -3756,7 +3812,7 @@ ac_configure="$SHELL $ac_aux_dir/configure"  # Please don't use this var.
 # releases, we want to be able run make dist without being required to
 # add a bogus NEWS entry.  In that case, the version string
 # automatically contains a dash, which we also let disable gnits.
-am__api_version='1.12'
+am__api_version='1.13'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -3940,8 +3996,8 @@ if test x"${MISSING+set}" != xset; then
   esac
 fi
 # Use eval to expand $SHELL
-if eval "$MISSING --run true"; then
-  am_missing_run="$MISSING --run "
+if eval "$MISSING --is-lightweight"; then
+  am_missing_run="$MISSING "
 else
   am_missing_run=
   { $as_echo "$as_me:${as_lineno-$LINENO}: WARNING: 'missing' script is too old or missing" >&5
@@ -4099,7 +4155,6 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $MKDIR_P" >&5
 $as_echo "$MKDIR_P" >&6; }
 
-
 for ac_prog in gawk mawk nawk awk
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -4243,7 +4298,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='bison'
- VERSION='2.6.2'
+ VERSION='2.7.12-4996'
 
 
 cat >>confdefs.h <<_ACEOF
@@ -6624,6 +6679,255 @@ if test "$am_t" != yes; then
 fi
 
 
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
+$as_echo_n "checking for ANSI C header files... " >&6; }
+if ${ac_cv_header_stdc+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+#include <stdarg.h>
+#include <string.h>
+#include <float.h>
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_header_stdc=yes
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+
+if test $ac_cv_header_stdc = yes; then
+  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <string.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "memchr" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <stdlib.h>
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "free" >/dev/null 2>&1; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f conftest*
+
+fi
+
+if test $ac_cv_header_stdc = yes; then
+  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
+  if test "$cross_compiling" = yes; then :
+  :
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <ctype.h>
+#include <stdlib.h>
+#if ((' ' & 0x0FF) == 0x020)
+# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
+# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
+#else
+# define ISLOWER(c) \
+                  (('a' <= (c) && (c) <= 'i') \
+                    || ('j' <= (c) && (c) <= 'r') \
+                    || ('s' <= (c) && (c) <= 'z'))
+# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
+#endif
+
+#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
+int
+main ()
+{
+  int i;
+  for (i = 0; i < 256; i++)
+    if (XOR (islower (i), ISLOWER (i))
+       || toupper (i) != TOUPPER (i))
+      return 2;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+
+else
+  ac_cv_header_stdc=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
+$as_echo "$ac_cv_header_stdc" >&6; }
+if test $ac_cv_header_stdc = yes; then
+
+$as_echo "#define STDC_HEADERS 1" >>confdefs.h
+
+fi
+
+# On IRIX 5.3, sys/types and inttypes.h are conflicting.
+for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
+                 inttypes.h stdint.h unistd.h
+do :
+  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
+ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
+"
+if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+
+done
+
+
+
+  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
+if test "x$ac_cv_header_minix_config_h" = xyes; then :
+  MINIX=yes
+else
+  MINIX=
+fi
+
+
+  if test "$MINIX" = yes; then
+
+$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
+
+
+$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
+
+
+$as_echo "#define _MINIX 1" >>confdefs.h
+
+
+$as_echo "#define _NETBSD_SOURCE 1" >>confdefs.h
+
+  fi
+
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
+$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
+if ${ac_cv_safe_to_define___extensions__+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#         define __EXTENSIONS__ 1
+          $ac_includes_default
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_safe_to_define___extensions__=yes
+else
+  ac_cv_safe_to_define___extensions__=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
+$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
+  test $ac_cv_safe_to_define___extensions__ = yes &&
+    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
+
+  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
+
+  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
+
+  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
+
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether _XOPEN_SOURCE should be defined" >&5
+$as_echo_n "checking whether _XOPEN_SOURCE should be defined... " >&6; }
+if ${ac_cv_should_define__xopen_source+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  ac_cv_should_define__xopen_source=no
+     cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+          #include <wchar.h>
+          mbstate_t x;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+             #define _XOPEN_SOURCE 500
+             #include <wchar.h>
+             mbstate_t x;
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  ac_cv_should_define__xopen_source=yes
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_should_define__xopen_source" >&5
+$as_echo "$ac_cv_should_define__xopen_source" >&6; }
+  test $ac_cv_should_define__xopen_source = yes &&
+    $as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
+
+
+
+
+
+
+
+
 # Make sure we can run config.sub.
 $SHELL "$ac_aux_dir/config.sub" sun4 >/dev/null 2>&1 ||
   as_fn_error $? "cannot run $SHELL $ac_aux_dir/config.sub" "$LINENO" 5
@@ -6695,214 +6999,6 @@ IFS=$ac_save_IFS
 case $host_os in *\ *) host_os=`echo "$host_os" | sed 's/ /-/g'`;; esac
 
 
-{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for ANSI C header files" >&5
-$as_echo_n "checking for ANSI C header files... " >&6; }
-if ${ac_cv_header_stdc+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-#include <stdarg.h>
-#include <string.h>
-#include <float.h>
-
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_header_stdc=yes
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-
-if test $ac_cv_header_stdc = yes; then
-  # SunOS 4.x string.h does not declare mem*, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <string.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "memchr" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # ISC 2.0.2 stdlib.h does not declare free, contrary to ANSI.
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <stdlib.h>
-
-_ACEOF
-if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
-  $EGREP "free" >/dev/null 2>&1; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f conftest*
-
-fi
-
-if test $ac_cv_header_stdc = yes; then
-  # /bin/cc in Irix-4.0.5 gets non-ANSI ctype macros unless using -ansi.
-  if test "$cross_compiling" = yes; then :
-  :
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <ctype.h>
-#include <stdlib.h>
-#if ((' ' & 0x0FF) == 0x020)
-# define ISLOWER(c) ('a' <= (c) && (c) <= 'z')
-# define TOUPPER(c) (ISLOWER(c) ? 'A' + ((c) - 'a') : (c))
-#else
-# define ISLOWER(c) \
-                  (('a' <= (c) && (c) <= 'i') \
-                    || ('j' <= (c) && (c) <= 'r') \
-                    || ('s' <= (c) && (c) <= 'z'))
-# define TOUPPER(c) (ISLOWER(c) ? ((c) | 0x40) : (c))
-#endif
-
-#define XOR(e, f) (((e) && !(f)) || (!(e) && (f)))
-int
-main ()
-{
-  int i;
-  for (i = 0; i < 256; i++)
-    if (XOR (islower (i), ISLOWER (i))
-       || toupper (i) != TOUPPER (i))
-      return 2;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_run "$LINENO"; then :
-
-else
-  ac_cv_header_stdc=no
-fi
-rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
-  conftest.$ac_objext conftest.beam conftest.$ac_ext
-fi
-
-fi
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_header_stdc" >&5
-$as_echo "$ac_cv_header_stdc" >&6; }
-if test $ac_cv_header_stdc = yes; then
-
-$as_echo "#define STDC_HEADERS 1" >>confdefs.h
-
-fi
-
-# On IRIX 5.3, sys/types and inttypes.h are conflicting.
-for ac_header in sys/types.h sys/stat.h stdlib.h string.h memory.h strings.h \
-                 inttypes.h stdint.h unistd.h
-do :
-  as_ac_Header=`$as_echo "ac_cv_header_$ac_header" | $as_tr_sh`
-ac_fn_c_check_header_compile "$LINENO" "$ac_header" "$as_ac_Header" "$ac_includes_default
-"
-if eval test \"x\$"$as_ac_Header"\" = x"yes"; then :
-  cat >>confdefs.h <<_ACEOF
-#define `$as_echo "HAVE_$ac_header" | $as_tr_cpp` 1
-_ACEOF
-
-fi
-
-done
-
-
-
-
-
-  ac_fn_c_check_header_mongrel "$LINENO" "minix/config.h" "ac_cv_header_minix_config_h" "$ac_includes_default"
-if test "x$ac_cv_header_minix_config_h" = xyes; then :
-  MINIX=yes
-else
-  MINIX=
-fi
-
-
-  if test "$MINIX" = yes; then
-
-$as_echo "#define _POSIX_SOURCE 1" >>confdefs.h
-
-
-$as_echo "#define _POSIX_1_SOURCE 2" >>confdefs.h
-
-
-$as_echo "#define _MINIX 1" >>confdefs.h
-
-  fi
-
-        case "$host_os" in
-    hpux*)
-
-$as_echo "#define _XOPEN_SOURCE 500" >>confdefs.h
-
-      ;;
-  esac
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether it is safe to define __EXTENSIONS__" >&5
-$as_echo_n "checking whether it is safe to define __EXTENSIONS__... " >&6; }
-if ${ac_cv_safe_to_define___extensions__+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-#         define __EXTENSIONS__ 1
-          $ac_includes_default
-int
-main ()
-{
-
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  ac_cv_safe_to_define___extensions__=yes
-else
-  ac_cv_safe_to_define___extensions__=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_safe_to_define___extensions__" >&5
-$as_echo "$ac_cv_safe_to_define___extensions__" >&6; }
-  test $ac_cv_safe_to_define___extensions__ = yes &&
-    $as_echo "#define __EXTENSIONS__ 1" >>confdefs.h
-
-  $as_echo "#define _ALL_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _DARWIN_C_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _GNU_SOURCE 1" >>confdefs.h
-
-  $as_echo "#define _POSIX_PTHREAD_SEMANTICS 1" >>confdefs.h
-
-  $as_echo "#define _TANDEM_SOURCE 1" >>confdefs.h
-
-
-
-
-
-
-
-
 
 
 
@@ -6948,9 +7044,9 @@ else
      if test "$GCC" != yes; then
        ac_save_CC=$CC
        while :; do
-        # IRIX 6.2 and later do not support large files by default,
-        # so use the C compiler's -n32 option if that helps.
-        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+         # IRIX 6.2 and later do not support large files by default,
+         # so use the C compiler's -n32 option if that helps.
+         cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 #include <sys/types.h>
  /* Check that off_t can represent 2**63 - 1 correctly.
@@ -6959,8 +7055,8 @@ else
     incorrectly reject 9223372036854775807.  */
 #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
 int
 main ()
 {
@@ -6969,16 +7065,16 @@ main ()
   return 0;
 }
 _ACEOF
-        if ac_fn_c_try_compile "$LINENO"; then :
+         if ac_fn_c_try_compile "$LINENO"; then :
   break
 fi
 rm -f core conftest.err conftest.$ac_objext
-        CC="$CC -n32"
-        if ac_fn_c_try_compile "$LINENO"; then :
+         CC="$CC -n32"
+         if ac_fn_c_try_compile "$LINENO"; then :
   ac_cv_sys_largefile_CC=' -n32'; break
 fi
 rm -f core conftest.err conftest.$ac_objext
-        break
+         break
        done
        CC=$ac_save_CC
        rm -f conftest.$ac_ext
@@ -7005,8 +7101,8 @@ else
     incorrectly reject 9223372036854775807.  */
 #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
 int
 main ()
 {
@@ -7029,8 +7125,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     incorrectly reject 9223372036854775807.  */
 #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
 int
 main ()
 {
@@ -7074,8 +7170,8 @@ else
     incorrectly reject 9223372036854775807.  */
 #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
 int
 main ()
 {
@@ -7098,8 +7194,8 @@ rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
     incorrectly reject 9223372036854775807.  */
 #define LARGE_OFF_T (((off_t) 1 << 62) - 1 + ((off_t) 1 << 62))
   int off_t_is_large[(LARGE_OFF_T % 2147483629 == 721
-                      && LARGE_OFF_T % 2147483647 == 1)
-                     ? 1 : -1];
+                       && LARGE_OFF_T % 2147483647 == 1)
+                      ? 1 : -1];
 int
 main ()
 {
@@ -7130,6 +7226,8 @@ rm -rf conftest*
   fi
 
 
+$as_echo "#define _DARWIN_USE_64_BIT_INODE 1" >>confdefs.h
+
 fi
 
 
@@ -7211,6 +7309,7 @@ fi
   # Code from module exitfail:
   # Code from module extensions:
 
+  # Code from module extern-inline:
   # Code from module fatal-signal:
   # Code from module fcntl:
   # Code from module fcntl-h:
@@ -7230,7 +7329,9 @@ fi
   # Code from module fseterr:
   # Code from module fstat:
   # Code from module gendocs:
+  # Code from module getdelim:
   # Code from module getdtablesize:
+  # Code from module getline:
   # Code from module getopt-gnu:
   # Code from module getopt-posix:
   # Code from module gettext:
@@ -7244,7 +7345,6 @@ fi
   # Code from module hash:
   # Code from module havelib:
   # Code from module include_next:
-  # Code from module inline:
   # Code from module intprops:
   # Code from module inttypes:
   # Code from module inttypes-incomplete:
@@ -7383,6 +7483,41 @@ fi
   # Code from module xstrndup:
 
 
+# Gnulib uses '#pragma GCC diagnostic push' to silence some
+# warnings, but older gcc doesn't support this.
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether pragma GCC diagnostic push works" >&5
+$as_echo_n "checking whether pragma GCC diagnostic push works... " >&6; }
+if ${lv_cv_gcc_pragma_push_works+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  save_CFLAGS=$CFLAGS
+  CFLAGS='-Wunknown-pragmas -Werror'
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+    #pragma GCC diagnostic push
+    #pragma GCC diagnostic pop
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  lv_cv_gcc_pragma_push_works=yes
+else
+  lv_cv_gcc_pragma_push_works=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS=$save_CFLAGS
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $lv_cv_gcc_pragma_push_works" >&5
+$as_echo "$lv_cv_gcc_pragma_push_works" >&6; }
+
 # Check whether --enable-gcc-warnings was given.
 if test "${enable_gcc_warnings+set}" = set; then :
   enableval=$enable_gcc_warnings; case $enable_gcc_warnings in
@@ -7395,16 +7530,68 @@ fi
 
 if test "$enable_gcc_warnings" = yes; then
   warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align
-    -Wcast-qual -Wformat -Wpointer-arith -Wwrite-strings'
-  warn_c='-Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes
-    -Wshadow -Wstrict-prototypes'
+    -Wformat -Wpointer-arith -Wwrite-strings'
+  warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes'
   warn_cxx='-Wnoexcept'
+  # Warnings for the test suite only.
+  #
+  # -fno-color-diagnostics: Clang's use of colors in the error
+  # messages is confusing the tests looking at the compiler's output
+  # (e.g., synclines.at).
+  warn_tests='-Wundef -pedantic -fno-color-diagnostics'
+
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
 
+  # Clang supports many of GCC's -W options, but only issues warnings
+  # on the ones it does not recognize.  In that case, gl_WARN_ADD
+  # thinks the option is supported, and unknown options are then added
+  # to CFLAGS.  But then, when -Werror is added in the test suite for
+  # instance, the warning about the unknown option turns into an
+  # error.
+  #
+  # This should be addressed by gnulib's gl_WARN_ADD, but in the
+  # meanwhile, turn warnings about unknown options into errors in
+  # CFLAGS, and restore CFLAGS after the tests.
+  save_CFLAGS=$CFLAGS
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Werror=unknown-warning-option" >&5
+$as_echo_n "checking whether C compiler handles -Werror=unknown-warning-option... " >&6; }
+if ${gl_cv_warn_c__Werror_unknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " -Werror=unknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  gl_cv_warn_c__Werror_unknown_warning_option=yes
+else
+  gl_cv_warn_c__Werror_unknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Werror_unknown_warning_option" >&5
+$as_echo "$gl_cv_warn_c__Werror_unknown_warning_option" >&6; }
+if test "x$gl_cv_warn_c__Werror_unknown_warning_option" = xyes; then :
+  as_fn_append CFLAGS " -Werror=unknown-warning-option"
+fi
+
+
   for i in $warn_common $warn_c;
   do
     as_gl_Warn=`$as_echo "gl_cv_warn_c_$i" | $as_tr_sh`
@@ -7480,15 +7667,17 @@ if test "x$gl_cv_warn_c__Werror" = xyes; then :
 fi
 
 
-  # Warnings for the test suite only.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wundef" >&5
-$as_echo_n "checking whether C compiler handles -Wundef... " >&6; }
-if ${gl_cv_warn_c__Wundef+:} false; then :
+
+  # Warnings for the test suite, and maybe for bison if GCC is modern
+  # enough.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wmissing-declarations" >&5
+$as_echo_n "checking whether C compiler handles -Wmissing-declarations... " >&6; }
+if ${gl_cv_warn_c__Wmissing_declarations+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
   gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " -Wundef"
+  as_fn_append CFLAGS " -Wmissing-declarations"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7501,29 +7690,29 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_warn_c__Wundef=yes
+  gl_cv_warn_c__Wmissing_declarations=yes
 else
-  gl_cv_warn_c__Wundef=no
+  gl_cv_warn_c__Wmissing_declarations=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wundef" >&5
-$as_echo "$gl_cv_warn_c__Wundef" >&6; }
-if test "x$gl_cv_warn_c__Wundef" = xyes; then :
-  as_fn_append WARN_CFLAGS_TEST " -Wundef"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wmissing_declarations" >&5
+$as_echo "$gl_cv_warn_c__Wmissing_declarations" >&6; }
+if test "x$gl_cv_warn_c__Wmissing_declarations" = xyes; then :
+  as_fn_append WARN_CFLAGS_TEST " -Wmissing-declarations"
 fi
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -pedantic" >&5
-$as_echo_n "checking whether C compiler handles -pedantic... " >&6; }
-if ${gl_cv_warn_c__pedantic+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles -Wmissing-prototypes" >&5
+$as_echo_n "checking whether C compiler handles -Wmissing-prototypes... " >&6; }
+if ${gl_cv_warn_c__Wmissing_prototypes+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
   gl_save_compiler_FLAGS="$CFLAGS"
-  as_fn_append CFLAGS " -pedantic"
+  as_fn_append CFLAGS " -Wmissing-prototypes"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7536,21 +7725,66 @@ main ()
 }
 _ACEOF
 if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_warn_c__pedantic=yes
+  gl_cv_warn_c__Wmissing_prototypes=yes
 else
-  gl_cv_warn_c__pedantic=no
+  gl_cv_warn_c__Wmissing_prototypes=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__pedantic" >&5
-$as_echo "$gl_cv_warn_c__pedantic" >&6; }
-if test "x$gl_cv_warn_c__pedantic" = xyes; then :
-  as_fn_append WARN_CFLAGS_TEST " -pedantic"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_c__Wmissing_prototypes" >&5
+$as_echo "$gl_cv_warn_c__Wmissing_prototypes" >&6; }
+if test "x$gl_cv_warn_c__Wmissing_prototypes" = xyes; then :
+  as_fn_append WARN_CFLAGS_TEST " -Wmissing-prototypes"
 fi
 
 
+  test $lv_cv_gcc_pragma_push_works = yes &&
+    as_fn_append WARN_CFLAGS " $WARN_CFLAGS_TEST"
+
+  # Warnings for the test suite only.
+  for i in $warn_tests;
+  do
+    as_gl_Warn=`$as_echo "gl_cv_warn_c_$i" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C compiler handles $i" >&5
+$as_echo_n "checking whether C compiler handles $i... " >&6; }
+if eval \${$as_gl_Warn+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CFLAGS"
+  as_fn_append CFLAGS " $i"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_compile "$LINENO"; then :
+  eval "$as_gl_Warn=yes"
+else
+  eval "$as_gl_Warn=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+eval ac_res=\$$as_gl_Warn
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then :
+  as_fn_append WARN_CFLAGS_TEST " $i"
+fi
+
+
+  done
+  CFLAGS=$save_CFLAGS
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7564,10 +7798,46 @@ ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
 ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
 
+  save_CXXFLAGS=$CXXFLAGS
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -Werror=unknown-warning-option" >&5
+$as_echo_n "checking whether C++ compiler handles -Werror=unknown-warning-option... " >&6; }
+if ${gl_cv_warn_cxx__Werror_unknown_warning_option+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CXXFLAGS"
+  as_fn_append CXXFLAGS " -Werror=unknown-warning-option"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  gl_cv_warn_cxx__Werror_unknown_warning_option=yes
+else
+  gl_cv_warn_cxx__Werror_unknown_warning_option=no
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__Werror_unknown_warning_option" >&5
+$as_echo "$gl_cv_warn_cxx__Werror_unknown_warning_option" >&6; }
+if test "x$gl_cv_warn_cxx__Werror_unknown_warning_option" = xyes; then :
+  as_fn_append CXXFLAGS " -Werror=unknown-warning-option"
+fi
+
+
   for i in $warn_common $warn_cxx;
   do
-
-as_gl_Warn=`$as_echo "gl_cv_warn_cxx_$i" | $as_tr_sh`
+    as_gl_Warn=`$as_echo "gl_cv_warn_cxx_$i" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles $i" >&5
 $as_echo_n "checking whether C++ compiler handles $i... " >&6; }
 if eval \${$as_gl_Warn+:} false; then :
@@ -7605,14 +7875,14 @@ fi
 
 
   done
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles  -Wzero-as-null-pointer-constant" >&5
-$as_echo_n "checking whether C++ compiler handles  -Wzero-as-null-pointer-constant... " >&6; }
-if ${gl_cv_warn_cxx___Wzero_as_null_pointer_constant+:} false; then :
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -Wzero-as-null-pointer-constant" >&5
+$as_echo_n "checking whether C++ compiler handles -Wzero-as-null-pointer-constant... " >&6; }
+if ${gl_cv_warn_cxx__Wzero_as_null_pointer_constant+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
   gl_save_compiler_FLAGS="$CXXFLAGS"
-  as_fn_append CXXFLAGS "  -Wzero-as-null-pointer-constant"
+  as_fn_append CXXFLAGS " -Wzero-as-null-pointer-constant"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7625,18 +7895,18 @@ nullptr
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-  gl_cv_warn_cxx___Wzero_as_null_pointer_constant=yes
+  gl_cv_warn_cxx__Wzero_as_null_pointer_constant=yes
 else
-  gl_cv_warn_cxx___Wzero_as_null_pointer_constant=no
+  gl_cv_warn_cxx__Wzero_as_null_pointer_constant=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CXXFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx___Wzero_as_null_pointer_constant" >&5
-$as_echo "$gl_cv_warn_cxx___Wzero_as_null_pointer_constant" >&6; }
-if test "x$gl_cv_warn_cxx___Wzero_as_null_pointer_constant" = xyes; then :
-  as_fn_append WARN_CXXFLAGS "  -Wzero-as-null-pointer-constant"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__Wzero_as_null_pointer_constant" >&5
+$as_echo "$gl_cv_warn_cxx__Wzero_as_null_pointer_constant" >&6; }
+if test "x$gl_cv_warn_cxx__Wzero_as_null_pointer_constant" = xyes; then :
+  as_fn_append WARN_CXXFLAGS " -Wzero-as-null-pointer-constant"
 fi
 
 
@@ -7676,14 +7946,55 @@ fi
 
 
   # Warnings for the test suite only.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -Wundef" >&5
-$as_echo_n "checking whether C++ compiler handles -Wundef... " >&6; }
-if ${gl_cv_warn_cxx__Wundef+:} false; then :
+  for i in $warn_tests;
+  do
+    as_gl_Warn=`$as_echo "gl_cv_warn_cxx_$i" | $as_tr_sh`
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles $i" >&5
+$as_echo_n "checking whether C++ compiler handles $i... " >&6; }
+if eval \${$as_gl_Warn+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+  gl_save_compiler_FLAGS="$CXXFLAGS"
+  as_fn_append CXXFLAGS " $i"
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_compile "$LINENO"; then :
+  eval "$as_gl_Warn=yes"
+else
+  eval "$as_gl_Warn=no"
+fi
+rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+  CXXFLAGS="$gl_save_compiler_FLAGS"
+
+fi
+eval ac_res=\$$as_gl_Warn
+              { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_res" >&5
+$as_echo "$ac_res" >&6; }
+if eval test \"x\$"$as_gl_Warn"\" = x"yes"; then :
+  as_fn_append WARN_CXXFLAGS_TEST " $i"
+fi
+
+
+  done
+  # Clang++ 3.2+ reject C code generated by Flex.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -Wno-null-conversion" >&5
+$as_echo_n "checking whether C++ compiler handles -Wno-null-conversion... " >&6; }
+if ${gl_cv_warn_cxx__Wno_null_conversion+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
   gl_save_compiler_FLAGS="$CXXFLAGS"
-  as_fn_append CXXFLAGS " -Wundef"
+  as_fn_append CXXFLAGS " -Wno-null-conversion"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7696,29 +8007,30 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-  gl_cv_warn_cxx__Wundef=yes
+  gl_cv_warn_cxx__Wno_null_conversion=yes
 else
-  gl_cv_warn_cxx__Wundef=no
+  gl_cv_warn_cxx__Wno_null_conversion=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CXXFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__Wundef" >&5
-$as_echo "$gl_cv_warn_cxx__Wundef" >&6; }
-if test "x$gl_cv_warn_cxx__Wundef" = xyes; then :
-  as_fn_append WARN_CXXFLAGS_TEST " -Wundef"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__Wno_null_conversion" >&5
+$as_echo "$gl_cv_warn_cxx__Wno_null_conversion" >&6; }
+if test "x$gl_cv_warn_cxx__Wno_null_conversion" = xyes; then :
+  as_fn_append WARN_NO_NULL_CONVERSION_CXXFLAGS " -Wno-null-conversion"
 fi
 
 
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -pedantic" >&5
-$as_echo_n "checking whether C++ compiler handles -pedantic... " >&6; }
-if ${gl_cv_warn_cxx__pedantic+:} false; then :
+  # Variants break strict aliasing analysis.
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether C++ compiler handles -fno-strict-aliasing" >&5
+$as_echo_n "checking whether C++ compiler handles -fno-strict-aliasing... " >&6; }
+if ${gl_cv_warn_cxx__fno_strict_aliasing+:} false; then :
   $as_echo_n "(cached) " >&6
 else
 
   gl_save_compiler_FLAGS="$CXXFLAGS"
-  as_fn_append CXXFLAGS " -pedantic"
+  as_fn_append CXXFLAGS " -fno-strict-aliasing"
   cat confdefs.h - <<_ACEOF >conftest.$ac_ext
 /* end confdefs.h.  */
 
@@ -7731,21 +8043,22 @@ main ()
 }
 _ACEOF
 if ac_fn_cxx_try_compile "$LINENO"; then :
-  gl_cv_warn_cxx__pedantic=yes
+  gl_cv_warn_cxx__fno_strict_aliasing=yes
 else
-  gl_cv_warn_cxx__pedantic=no
+  gl_cv_warn_cxx__fno_strict_aliasing=no
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   CXXFLAGS="$gl_save_compiler_FLAGS"
 
 fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__pedantic" >&5
-$as_echo "$gl_cv_warn_cxx__pedantic" >&6; }
-if test "x$gl_cv_warn_cxx__pedantic" = xyes; then :
-  as_fn_append WARN_CXXFLAGS_TEST " -pedantic"
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_warn_cxx__fno_strict_aliasing" >&5
+$as_echo "$gl_cv_warn_cxx__fno_strict_aliasing" >&6; }
+if test "x$gl_cv_warn_cxx__fno_strict_aliasing" = xyes; then :
+  as_fn_append NO_STRICT_ALIAS_CXXFLAGS " -fno-strict-aliasing"
 fi
 
 
+  CXXFLAGS=$save_CXXFLAGS
   ac_ext=c
 ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
@@ -7776,6 +8089,68 @@ as_fn_error $? "cannot compile a simple C program
 See \`config.log' for more details" "$LINENO" 5; }
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
+   BISON_C_WORKS=:
+
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC supports POSIXLY_CORRECT=1" >&5
+$as_echo_n "checking whether $CC supports POSIXLY_CORRECT=1... " >&6; }
+if ${bison_cv_c_supports_posixly_correct+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+  xx) gl_had_POSIXLY_CORRECT=exported ;;
+  x)  gl_had_POSIXLY_CORRECT=yes      ;;
+  *)  gl_had_POSIXLY_CORRECT=         ;;
+esac
+POSIXLY_CORRECT=1
+export POSIXLY_CORRECT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_c_try_link "$LINENO"; then :
+  bison_cv_c_supports_posixly_correct=yes
+else
+  bison_cv_c_supports_posixly_correct=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+case $gl_had_POSIXLY_CORRECT in
+  exported) ;;
+  yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;;
+  *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bison_cv_c_supports_posixly_correct" >&5
+$as_echo "$bison_cv_c_supports_posixly_correct" >&6; }
+case $bison_cv_c_supports_posixly_correct in
+  yes) C_COMPILER_POSIXLY_CORRECT=true
+ ;;
+  no)  C_COMPILER_POSIXLY_CORRECT=false
+;;
+esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 
 
  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX builds executables that work" >&5
@@ -7863,6 +8238,66 @@ else
 fi
 
 
+ac_ext=cpp
+ac_cpp='$CXXCPP $CPPFLAGS'
+ac_compile='$CXX -c $CXXFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CXX -o conftest$ac_exeext $CXXFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_cxx_compiler_gnu
+
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CXX supports POSIXLY_CORRECT=1" >&5
+$as_echo_n "checking whether $CXX supports POSIXLY_CORRECT=1... " >&6; }
+if ${bison_cv_cxx_supports_posixly_correct+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+  xx) gl_had_POSIXLY_CORRECT=exported ;;
+  x)  gl_had_POSIXLY_CORRECT=yes      ;;
+  *)  gl_had_POSIXLY_CORRECT=         ;;
+esac
+POSIXLY_CORRECT=1
+export POSIXLY_CORRECT
+cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+if ac_fn_cxx_try_link "$LINENO"; then :
+  bison_cv_cxx_supports_posixly_correct=yes
+else
+  bison_cv_cxx_supports_posixly_correct=no
+fi
+rm -f core conftest.err conftest.$ac_objext \
+    conftest$ac_exeext conftest.$ac_ext
+case $gl_had_POSIXLY_CORRECT in
+  exported) ;;
+  yes) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;}; POSIXLY_CORRECT=1 ;;
+  *) { POSIXLY_CORRECT=; unset POSIXLY_CORRECT;} ;;
+esac
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $bison_cv_cxx_supports_posixly_correct" >&5
+$as_echo "$bison_cv_cxx_supports_posixly_correct" >&6; }
+case $bison_cv_cxx_supports_posixly_correct in
+  yes) CXX_COMPILER_POSIXLY_CORRECT=true
+ ;;
+  no)  CXX_COMPILER_POSIXLY_CORRECT=false
+;;
+esac
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext $LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+
 
 # Check whether --enable-yacc was given.
 if test "${enable_yacc+set}" = set; then :
@@ -7883,6 +8318,9 @@ esac
 
 
 # Checks for programs.
+
+DOT=${DOT-"${am_missing_run}dot"}
+
 for ac_prog in flex lex
 do
   # Extract the first word of "$ac_prog", so it can be a program name with args.
@@ -8315,6 +8753,49 @@ cat >>confdefs.h <<_ACEOF
 #define M4_GNU_OPTION "$M4_GNU"
 _ACEOF
 
+# Extract the first word of "perl", so it can be a program name with args.
+set dummy perl; ac_word=$2
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking for $ac_word" >&5
+$as_echo_n "checking for $ac_word... " >&6; }
+if ${ac_cv_path_PERL+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  case $PERL in
+  [\\/]* | ?:[\\/]*)
+  ac_cv_path_PERL="$PERL" # Let the user override the test with a path.
+  ;;
+  *)
+  as_save_IFS=$IFS; IFS=$PATH_SEPARATOR
+for as_dir in $PATH
+do
+  IFS=$as_save_IFS
+  test -z "$as_dir" && as_dir=.
+    for ac_exec_ext in '' $ac_executable_extensions; do
+  if as_fn_executable_p "$as_dir/$ac_word$ac_exec_ext"; then
+    ac_cv_path_PERL="$as_dir/$ac_word$ac_exec_ext"
+    $as_echo "$as_me:${as_lineno-$LINENO}: found $as_dir/$ac_word$ac_exec_ext" >&5
+    break 2
+  fi
+done
+  done
+IFS=$as_save_IFS
+
+  ;;
+esac
+fi
+PERL=$ac_cv_path_PERL
+if test -n "$PERL"; then
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: $PERL" >&5
+$as_echo "$PERL" >&6; }
+else
+  { $as_echo "$as_me:${as_lineno-$LINENO}: result: no" >&5
+$as_echo "no" >&6; }
+fi
+
+
+if test -z "$PERL"; then
+   as_fn_error $? "perl not found" "$LINENO" 5
+fi
 
 HELP2MAN=${HELP2MAN-"${am_missing_run}help2man"}
 
@@ -8661,6 +9142,7 @@ fi
   GNULIB_REALLOC_POSIX=0;
   GNULIB_REALPATH=0;
   GNULIB_RPMATCH=0;
+  GNULIB_SECURE_GETENV=0;
   GNULIB_SETENV=0;
   GNULIB_STRTOD=0;
   GNULIB_STRTOLL=0;
@@ -8688,6 +9170,7 @@ fi
   HAVE_RANDOM_R=1;
   HAVE_REALPATH=1;
   HAVE_RPMATCH=1;
+  HAVE_SECURE_GETENV=1;
   HAVE_SETENV=1;
   HAVE_DECL_SETENV=1;
   HAVE_STRTOD=1;
@@ -8702,6 +9185,7 @@ fi
   REPLACE_MALLOC=0;
   REPLACE_MBTOWC=0;
   REPLACE_MKSTEMP=0;
+  REPLACE_PTSNAME=0;
   REPLACE_PTSNAME_R=0;
   REPLACE_PUTENV=0;
   REPLACE_RANDOM_R=0;
@@ -9168,6 +9652,9 @@ booboo
 #if !defined ENOTRECOVERABLE
 booboo
 #endif
+#if !defined EILSEQ
+booboo
+#endif
 
 _ACEOF
 if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
@@ -9573,6 +10060,9 @@ fi
   XGETTEXT_EXTRA_OPTIONS=
 
 
+
+
+
   ac_fn_c_check_type "$LINENO" "sig_atomic_t" "ac_cv_type_sig_atomic_t" "#include <signal.h>
 "
 if test "x$ac_cv_type_sig_atomic_t" = xyes; then :
@@ -9649,7 +10139,18 @@ main ()
             #if HAVE_SYMLINK
             {
               static char const sym[] = "conftest.sym";
-              if (symlink (".", sym) != 0)
+              if (symlink ("/dev/null", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              if (unlink (sym) != 0 || symlink (".", sym) != 0)
                 result |= 2;
               else
                 {
@@ -12363,7 +12864,6 @@ $as_echo "$gl_cv_func_snprintf_retval_c99" >&6; }
 
 
 
-
   for ac_func in snprintf strnlen wcslen wcsnlen mbrtowc wcrtomb
 do :
   as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_frexp_no_libm" >&5
 $as_echo "$gl_cv_func_frexp_no_libm" >&6; }
 
+ac_fn_c_check_decl "$LINENO" "alarm" "ac_cv_have_decl_alarm" "$ac_includes_default"
+if test "x$ac_cv_have_decl_alarm" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
 
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_ALARM $ac_have_decl
+_ACEOF
 
 
 
@@ -12827,8 +13336,6 @@ $as_echo "$gl_cv_type_off_t_64" >&6; }
 
 
 
-
-
      if test $gl_cv_have_include_next = yes; then
        gl_cv_next_sys_stat_h='<'sys/stat.h'>'
      else
       done
 
 
+ac_fn_c_check_decl "$LINENO" "getdelim" "ac_cv_have_decl_getdelim" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getdelim" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETDELIM $ac_have_decl
+_ACEOF
+
+
+
 
 
+ac_fn_c_check_decl "$LINENO" "getline" "ac_cv_have_decl_getline" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getline" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETLINE $ac_have_decl
+_ACEOF
+
 
 
 
@@ -15204,8 +15735,6 @@ $as_echo "$gl_cv_func_isnanl_works" >&6; }
 
 
 
-
-
   if test $gt_cv_c_wint_t = yes; then
     HAVE_WINT_T=1
   else
@@ -15686,6 +16215,7 @@ $as_echo "$ac_cv_gnu_library_2_1" >&6; }
   prefix="$acl_save_prefix"
 
 
+
 # Check whether --with-gnu-ld was given.
 if test "${with_gnu_ld+set}" = set; then :
   withval=$with_gnu_ld; test "$withval" = no || with_gnu_ld=yes
@@ -15705,11 +16235,12 @@ if test "${PATH_SEPARATOR+set}" != set; then
            || PATH_SEPARATOR=';'
        }
 fi
+
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by GCC" >&5
-$as_echo_n "checking for ld used by GCC... " >&6; }
+  { $as_echo "$as_me:${as_lineno-$LINENO}: checking for ld used by $CC" >&5
+$as_echo_n "checking for ld used by $CC... " >&6; }
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -15719,11 +16250,11 @@ $as_echo_n "checking for ld used by GCC... " >&6; }
   esac
   case $ac_prog in
     # Accept absolute paths.
-    [\\/]* | [A-Za-z]:[\\/]*)
+    [\\/]* | ?:[\\/]*)
       re_direlt='/[^/][^/]*/\.\./'
-      # Canonicalize the path of ld
-      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+      # Canonicalize the pathname of ld
+      ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
+      while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
         ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
       done
       test -z "$LD" && LD="$ac_prog"
@@ -15748,23 +16279,26 @@ if ${acl_cv_path_LD+:} false; then :
   $as_echo_n "(cached) " >&6
 else
   if test -z "$LD"; then
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
+    IFS="$acl_save_ifs"
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       acl_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
+      # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-        test "$with_gnu_ld" != no && break ;;
+        test "$with_gnu_ld" != no && break
+        ;;
       *)
-        test "$with_gnu_ld" != yes && break ;;
+        test "$with_gnu_ld" != yes && break
+        ;;
       esac
     fi
   done
-  IFS="$ac_save_ifs"
+  IFS="$acl_save_ifs"
 else
   acl_cv_path_LD="$LD" # Let the user override the test with a path.
 fi
@@ -15784,12 +16318,14 @@ $as_echo_n "checking if the linker ($LD) is GNU ld... " >&6; }
 if ${acl_cv_prog_gnu_ld+:} false; then :
   $as_echo_n "(cached) " >&6
 else
-  # I'd rather use --version here, but apparently some GNU ld's only accept -v.
+  # I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
-  acl_cv_prog_gnu_ld=yes ;;
+  acl_cv_prog_gnu_ld=yes
+  ;;
 *)
-  acl_cv_prog_gnu_ld=no ;;
+  acl_cv_prog_gnu_ld=no
+  ;;
 esac
 fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $acl_cv_prog_gnu_ld" >&5
@@ -19122,6 +19658,82 @@ _ACEOF
 
 
 
+
+
+
+
+
+
+
+
+
+     if test $gl_cv_have_include_next = yes; then
+       gl_cv_next_sys_types_h='<'sys/types.h'>'
+     else
+       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/types.h>" >&5
+$as_echo_n "checking absolute name of <sys/types.h>... " >&6; }
+if ${gl_cv_next_sys_types_h+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+
+               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+#include <sys/types.h>
+
+_ACEOF
+                                                                                                                        case "$host_os" in
+                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
+                 *)    gl_absname_cpp="$ac_cpp" ;;
+               esac
+
+               case "$host_os" in
+                 mingw*)
+                                                                                                                                     gl_dirsep_regex='[/\\]'
+                   ;;
+                 *)
+                   gl_dirsep_regex='\/'
+                   ;;
+               esac
+                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
+
+               gl_header_literal_regex=`echo 'sys/types.h' \
+                                        | sed -e "$gl_make_literal_regex_sed"`
+               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
+                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
+                   s|^/[^/]|//&|
+                   p
+                   q
+                 }'
+                                                            gl_cv_next_sys_types_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
+                      sed -n "$gl_absolute_header_sed"`'"'
+
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5
+$as_echo "$gl_cv_next_sys_types_h" >&6; }
+     fi
+     NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h
+
+     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
+       gl_next_as_first_directive='<'sys/types.h'>'
+     else
+       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
+       gl_next_as_first_directive=$gl_cv_next_sys_types_h
+     fi
+     NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive
+
+
+
+
+
+
+
+
+
+
+
+
   GNULIB_WAITPID=0;
 
 
@@ -19677,8 +20289,6 @@ $as_echo "$enable_assert" >&6; }
 
 
 
-
-
   if test $gl_cv_func_malloc_posix = yes; then
 
 $as_echo "#define HAVE_CALLOC_POSIX 1" >>confdefs.h
@@ -19687,7 +20297,7 @@ $as_echo "#define HAVE_CALLOC_POSIX 1" >>confdefs.h
     REPLACE_CALLOC=1
   fi
 
-if test $REPLACE_CALLOC = 1; then
+  if test $REPLACE_CALLOC = 1; then
 
 
 
@@ -19698,7 +20308,7 @@ if test $REPLACE_CALLOC = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS calloc.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -19759,7 +20369,7 @@ done
 
 
 
-if test $REPLACE_CLOSE = 1; then
+  if test $REPLACE_CLOSE = 1; then
 
 
 
@@ -19770,7 +20380,7 @@ if test $REPLACE_CLOSE = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS close.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -19946,6 +20556,9 @@ int result = 0;
             /* Many gnulib modules require POSIX conformance of EBADF.  */
             if (dup2 (2, 1000000) == -1 && errno != EBADF)
               result |= 16;
+            /* Flush out a cygwin core dump.  */
+            if (dup2 (2, -1) != -1 || errno != EBADF)
+              result |= 32;
             return result;
 
   ;
@@ -19975,7 +20588,7 @@ $as_echo "$gl_cv_func_dup2_works" >&6; }
   fi
 
 
-if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
+  if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
 
 
 
@@ -19987,7 +20600,7 @@ if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
   gl_LIBOBJS="$gl_LIBOBJS dup2.$ac_objext"
 
 
-fi
+  fi
 
 
 
@@ -20048,7 +20661,7 @@ fi
 { $as_echo "$as_me:${as_lineno-$LINENO}: result: $ac_cv_lib_error_at_line" >&5
 $as_echo "$ac_cv_lib_error_at_line" >&6; }
 
-if test $ac_cv_lib_error_at_line = no; then
+  if test $ac_cv_lib_error_at_line = no; then
 
 
 
@@ -20061,10 +20674,9 @@ if test $ac_cv_lib_error_at_line = no; then
 
 
 
-
   :
 
-fi
+  fi
 
 
   XGETTEXT_EXTRA_OPTIONS="$XGETTEXT_EXTRA_OPTIONS --flag=error:3:c-format"
@@ -20077,9 +20689,7 @@ fi
 
 
 
-
-
-
+  :
 
 
 
@@ -20221,7 +20831,7 @@ $as_echo "$gl_cv_func_fcntl_f_dupfd_cloexec" >&6; }
   fi
 
 
-if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
+  if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
 
 
 
@@ -20232,7 +20842,7 @@ if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS fcntl.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -20563,7 +21173,7 @@ fi
 
 
 
-if test $REPLACE_FLOAT_LDBL = 1; then
+  if test $REPLACE_FLOAT_LDBL = 1; then
 
 
 
@@ -20574,8 +21184,8 @@ if test $REPLACE_FLOAT_LDBL = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS float.$ac_objext"
 
-fi
-if test $REPLACE_ITOLD = 1; then
+  fi
+  if test $REPLACE_ITOLD = 1; then
 
 
 
@@ -20586,7 +21196,7 @@ if test $REPLACE_ITOLD = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS itold.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -20647,7 +21257,7 @@ $as_echo "#define FOPEN_TRAILING_SLASH_BUG 1" >>confdefs.h
       ;;
   esac
 
-if test $REPLACE_FOPEN = 1; then
+  if test $REPLACE_FOPEN = 1; then
 
 
 
@@ -20658,10 +21268,8 @@ if test $REPLACE_FOPEN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS fopen.$ac_objext"
 
-
-
-
-fi
+    :
+  fi
 
 
 
@@ -20706,7 +21314,7 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-if test $ac_cv_func___fpending = no; then
+  if test $ac_cv_func___fpending = no; then
 
 
 
@@ -20797,7 +21405,7 @@ cat >>confdefs.h <<_ACEOF
 _ACEOF
 
 
-fi
+  fi
 
 
 
@@ -21158,7 +21766,8 @@ else
 #include <float.h>
 #include <math.h>
 #include <string.h>
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
+# include <signal.h>
 # include <unistd.h>
 #endif
 /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
@@ -21181,9 +21790,10 @@ int main()
   int i;
   volatile double x;
   double zero = 0.0;
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
   /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
      number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
   alarm (5);
 #endif
   /* Test on denormalized numbers.  */
@@ -21245,7 +21855,7 @@ $as_echo "#define HAVE_FREXP_IN_LIBC 1" >>confdefs.h
 
   fi
 
-if test $gl_func_frexp_no_libm != yes; then
+  if test $gl_func_frexp_no_libm != yes; then
 
 
 
@@ -21256,7 +21866,7 @@ if test $gl_func_frexp_no_libm != yes; then
 
   gl_LIBOBJS="$gl_LIBOBJS frexp.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -21458,7 +22068,7 @@ $as_echo "#define HAVE_FREXPL_IN_LIBC 1" >>confdefs.h
     fi
   fi
 
-if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
+  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
 
 
 
@@ -21469,7 +22079,7 @@ if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
 
   gl_LIBOBJS="$gl_LIBOBJS frexpl.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -21488,7 +22098,7 @@ $as_echo "#define GNULIB_TEST_FREXPL 1" >>confdefs.h
 
 
 
-if test $ac_cv_func___fseterr = no; then
+  if test $ac_cv_func___fseterr = no; then
 
 
 
@@ -21499,7 +22109,7 @@ if test $ac_cv_func___fseterr = no; then
 
   gl_LIBOBJS="$gl_LIBOBJS fseterr.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -21515,7 +22125,7 @@ fi
 
 
 
-if test $REPLACE_FSTAT = 1; then
+  if test $REPLACE_FSTAT = 1; then
 
 
 
@@ -21526,22 +22136,167 @@ if test $REPLACE_FSTAT = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS fstat.$ac_objext"
 
+    :
+  fi
+
+
+
+
+
+          GNULIB_FSTAT=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_FSTAT 1" >>confdefs.h
+
+
+
+
 
 
 
+
+
+
+
+  if test $ac_cv_func_getdelim = yes; then
+    HAVE_GETDELIM=1
+        { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getdelim function" >&5
+$as_echo_n "checking for working getdelim function... " >&6; }
+if ${gl_cv_func_working_getdelim+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
+    if test "$cross_compiling" = yes; then :
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+  Lucky GNU user
+ #endif
+#endif
+
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+  gl_cv_func_working_getdelim="guessing yes"
+else
+  gl_cv_func_working_getdelim="guessing no"
 fi
+rm -f conftest*
 
 
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    {
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+        return 1;
+      {
+        /* Test result for a NULL buffer and a zero size.
+           Based on a test program from Karl Heuer.  */
+        char *line = NULL;
+        size_t siz = 0;
+        int len = getdelim (&line, &siz, '\n', in);
+        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
+          return 2;
+      }
+      {
+        /* Test result for a NULL buffer and a non-zero size.
+           This crashes on FreeBSD 8.0.  */
+        char *line = NULL;
+        size_t siz = (size_t)(~0) / 4;
+        if (getdelim (&line, &siz, '\n', in) == -1)
+          return 3;
+      }
+      return 0;
+    }
 
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  gl_cv_func_working_getdelim=yes
+else
+  gl_cv_func_working_getdelim=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
 
-          GNULIB_FSTAT=1
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_func_working_getdelim" >&5
+$as_echo "$gl_cv_func_working_getdelim" >&6; }
+    case "$gl_cv_func_working_getdelim" in
+      *no)
+        REPLACE_GETDELIM=1
+        ;;
+    esac
+  else
+    HAVE_GETDELIM=0
+  fi
+
+  if test $ac_cv_have_decl_getdelim = no; then
+    HAVE_DECL_GETDELIM=0
+  fi
 
+  if test $HAVE_GETDELIM = 0 || test $REPLACE_GETDELIM = 1; then
 
 
 
 
-$as_echo "#define GNULIB_TEST_FSTAT 1" >>confdefs.h
+
+
+
+
+  gl_LIBOBJS="$gl_LIBOBJS getdelim.$ac_objext"
+
+
+  for ac_func in flockfile funlockfile
+do :
+  as_ac_var=`$as_echo "ac_cv_func_$ac_func" | $as_tr_sh`
+ac_fn_c_check_func "$LINENO" "$ac_func" "$as_ac_var"
+if eval test \"x\$"$as_ac_var"\" = x"yes"; then :
+  cat >>confdefs.h <<_ACEOF
+#define `$as_echo "HAVE_$ac_func" | $as_tr_cpp` 1
+_ACEOF
+
+fi
+done
+
+  ac_fn_c_check_decl "$LINENO" "getc_unlocked" "ac_cv_have_decl_getc_unlocked" "$ac_includes_default"
+if test "x$ac_cv_have_decl_getc_unlocked" = xyes; then :
+  ac_have_decl=1
+else
+  ac_have_decl=0
+fi
+
+cat >>confdefs.h <<_ACEOF
+#define HAVE_DECL_GETC_UNLOCKED $ac_have_decl
+_ACEOF
+
+
+  fi
+
+
+
+
+
+          GNULIB_GETDELIM=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_GETDELIM 1" >>confdefs.h
 
 
 
@@ -21552,7 +22307,7 @@ $as_echo "#define GNULIB_TEST_FSTAT 1" >>confdefs.h
     HAVE_GETDTABLESIZE=0
   fi
 
-if test $HAVE_GETDTABLESIZE = 0; then
+  if test $HAVE_GETDTABLESIZE = 0; then
 
 
 
@@ -21563,31 +22318,159 @@ if test $HAVE_GETDTABLESIZE = 0; then
 
   gl_LIBOBJS="$gl_LIBOBJS getdtablesize.$ac_objext"
 
+    :
+  fi
+
 
 
 
+
+          GNULIB_GETDTABLESIZE=1
+
+
+
+
+
+$as_echo "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+
+
+  gl_getline_needs_run_time_check=no
+  ac_fn_c_check_func "$LINENO" "getline" "ac_cv_func_getline"
+if test "x$ac_cv_func_getline" = xyes; then :
+                   gl_getline_needs_run_time_check=yes
+else
+  am_cv_func_working_getline=no
 fi
 
+  if test $gl_getline_needs_run_time_check = yes; then
+    { $as_echo "$as_me:${as_lineno-$LINENO}: checking for working getline function" >&5
+$as_echo_n "checking for working getline function... " >&6; }
+if ${am_cv_func_working_getline+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
+    if test "$cross_compiling" = yes; then :
+        cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
 
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+  Lucky GNU user
+ #endif
+#endif
 
+_ACEOF
+if (eval "$ac_cpp conftest.$ac_ext") 2>&5 |
+  $EGREP "Lucky GNU user" >/dev/null 2>&1; then :
+  am_cv_func_working_getline="guessing yes"
+else
+  am_cv_func_working_getline="guessing no"
+fi
+rm -f conftest*
+
+
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    {
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+        return 1;
+      {
+        /* Test result for a NULL buffer and a zero size.
+           Based on a test program from Karl Heuer.  */
+        char *line = NULL;
+        size_t siz = 0;
+        int len = getline (&line, &siz, in);
+        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
+          return 2;
+      }
+      {
+        /* Test result for a NULL buffer and a non-zero size.
+           This crashes on FreeBSD 8.0.  */
+        char *line = NULL;
+        size_t siz = (size_t)(~0) / 4;
+        if (getline (&line, &siz, in) == -1)
+          return 3;
+      }
+      return 0;
+    }
+
+_ACEOF
+if ac_fn_c_try_run "$LINENO"; then :
+  am_cv_func_working_getline=yes
+else
+  am_cv_func_working_getline=no
+fi
+rm -f core *.core core.conftest.* gmon.out bb.out conftest$ac_exeext \
+  conftest.$ac_objext conftest.beam conftest.$ac_ext
+fi
+
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_func_working_getline" >&5
+$as_echo "$am_cv_func_working_getline" >&6; }
+  fi
+
+  if test $ac_cv_have_decl_getline = no; then
+    HAVE_DECL_GETLINE=0
+  fi
+
+  case "$am_cv_func_working_getline" in
+    *no)
+                        REPLACE_GETLINE=1
+      ;;
+  esac
+
+  if test $REPLACE_GETLINE = 1; then
 
 
-          GNULIB_GETDTABLESIZE=1
 
 
 
 
 
-$as_echo "#define GNULIB_TEST_GETDTABLESIZE 1" >>confdefs.h
 
+  gl_LIBOBJS="$gl_LIBOBJS getline.$ac_objext"
+
+
+  :
+
+  fi
 
 
 
 
 
+          GNULIB_GETLINE=1
 
 
-if test $REPLACE_GETOPT = 1; then
+
+
+
+$as_echo "#define GNULIB_TEST_GETLINE 1" >>confdefs.h
+
+
+
+
+
+
+
+
+  if test $REPLACE_GETOPT = 1; then
 
 
 
@@ -21611,8 +22494,8 @@ if test $REPLACE_GETOPT = 1; then
 
 
 
-    GNULIB_GL_UNISTD_H_GETOPT=1
-fi
+        GNULIB_GL_UNISTD_H_GETOPT=1
+  fi
 
 
 
@@ -21639,7 +22522,7 @@ $as_echo "#define __GETOPT_PREFIX rpl_" >>confdefs.h
 
   fi
 
-if test $REPLACE_GETOPT = 1; then
+  if test $REPLACE_GETOPT = 1; then
 
 
 
@@ -21663,59 +22546,19 @@ if test $REPLACE_GETOPT = 1; then
 
 
 
-    GNULIB_GL_UNISTD_H_GETOPT=1
-fi
+        GNULIB_GL_UNISTD_H_GETOPT=1
+  fi
 
 
 
 
-# Autoconf 2.61a.99 and earlier don't support linking a file only
-# in VPATH builds.  But since GNUmakefile is for maintainer use
-# only, it does not matter if we skip the link with older autoconf.
-# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
-# builds, so use a shell variable to bypass this.
-GNUmakefile=GNUmakefile
-ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
-
-
-
-  { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether the compiler generally respects inline" >&5
-$as_echo_n "checking whether the compiler generally respects inline... " >&6; }
-if ${gl_cv_c_inline_effective+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-  if test $ac_cv_c_inline = no; then
-       gl_cv_c_inline_effective=no
-     else
-                                          cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-
-int
-main ()
-{
-#ifdef __NO_INLINE__
-               #error "inline is not effective"
-             #endif
-  ;
-  return 0;
-}
-_ACEOF
-if ac_fn_c_try_compile "$LINENO"; then :
-  gl_cv_c_inline_effective=yes
-else
-  gl_cv_c_inline_effective=no
-fi
-rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
-     fi
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_c_inline_effective" >&5
-$as_echo "$gl_cv_c_inline_effective" >&6; }
-  if test $gl_cv_c_inline_effective = yes; then
-
-$as_echo "#define HAVE_INLINE 1" >>confdefs.h
-
-  fi
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  ac_config_links="$ac_config_links $GNUmakefile:$GNUmakefile"
 
 
 
@@ -22120,7 +22963,7 @@ $as_echo "$gl_cv_func_isnand_in_libm" >&6; }
 
 
 
-if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then
+  if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then
 
 
 
@@ -22134,7 +22977,7 @@ if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then
 
 
 
-fi
+  fi
 
 
 
@@ -22196,7 +23039,7 @@ $as_echo "#define HAVE_ISNAND_IN_LIBC 1" >>confdefs.h
 
   fi
 
-if test $gl_func_isnand_no_libm != yes; then
+  if test $gl_func_isnand_no_libm != yes; then
 
 
 
@@ -22210,7 +23053,7 @@ if test $gl_func_isnand_no_libm != yes; then
 
 
 
-fi
+  fi
 
 
   ISNANF_LIBM=
@@ -22403,7 +23246,7 @@ $as_echo "$gl_cv_func_isnanf_works" >&6; }
 
 
 
-if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then
+  if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then
 
 
 
@@ -22525,7 +23368,7 @@ _ACEOF
   esac
 
 
-fi
+  fi
 
 
 
@@ -22681,7 +23524,7 @@ $as_echo "#define HAVE_ISNANF_IN_LIBC 1" >>confdefs.h
     gl_func_isnanf_no_libm=no
   fi
 
-if test $gl_func_isnanf_no_libm != yes; then
+  if test $gl_func_isnanf_no_libm != yes; then
 
 
 
@@ -22803,7 +23646,7 @@ _ACEOF
   esac
 
 
-fi
+  fi
 
 
   ISNANL_LIBM=
@@ -23067,7 +23910,7 @@ $as_echo "$gl_cv_func_isnanl_works" >&6; }
 
 
 
-if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then
+  if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then
 
 
 
@@ -23194,7 +24037,7 @@ _ACEOF
 
 
 
-fi
+  fi
 
 
 
@@ -23418,7 +24261,7 @@ $as_echo "#define HAVE_ISNANL_IN_LIBC 1" >>confdefs.h
 
   fi
 
-if test $gl_func_isnanl_no_libm != yes; then
+  if test $gl_func_isnanl_no_libm != yes; then
 
 
 
@@ -23545,7 +24388,7 @@ _ACEOF
 
 
 
-fi
+  fi
 
 
 
@@ -23588,10 +24431,10 @@ _ACEOF
   fi
 
 
-if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
-  :
-else
-  if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+    :
+  else
+    if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then
 
 
 
@@ -23602,8 +24445,8 @@ else
 
   gl_LIBOBJS="$gl_LIBOBJS iswblank.$ac_objext"
 
+    fi
   fi
-fi
 
 
 
@@ -23619,11 +24462,11 @@ $as_echo "#define GNULIB_TEST_ISWBLANK 1" >>confdefs.h
 
 
 
-# You need to invoke gt_JAVACOMP yourself, possibly with arguments.
-ac_config_files="$ac_config_files javacomp.sh:build-aux/javacomp.sh.in"
+  # You need to invoke gt_JAVACOMP yourself, possibly with arguments.
+  ac_config_files="$ac_config_files javacomp.sh:build-aux/javacomp.sh.in"
 
-# You need to invoke gt_JAVAEXEC yourself, possibly with arguments.
-ac_config_files="$ac_config_files javaexec.sh:build-aux/javaexec.sh.in"
+  # You need to invoke gt_JAVAEXEC yourself, possibly with arguments.
+  ac_config_files="$ac_config_files javaexec.sh:build-aux/javaexec.sh.in"
 
 
 
@@ -23842,7 +24685,7 @@ $as_echo "#define HAVE_LDEXPL 1" >>confdefs.h
   fi
 
 
-if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
+  if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
 
 
 
@@ -23853,7 +24696,7 @@ if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
 
   gl_LIBOBJS="$gl_LIBOBJS ldexpl.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -23877,7 +24720,7 @@ $as_echo "#define GNULIB_TEST_LDEXPL 1" >>confdefs.h
 
 
 
-LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
+  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
 
 
 
@@ -23919,9 +24762,7 @@ $as_echo "#define HAVE_PTHREAD_MUTEX_RECURSIVE 1" >>confdefs.h
 fi
 rm -f core conftest.err conftest.$ac_objext conftest.$ac_ext
   fi
-
-
-
+  :
 
 
 
@@ -23997,7 +24838,7 @@ else
 fi
 
 
-if test $REPLACE_MALLOC = 1; then
+  if test $REPLACE_MALLOC = 1; then
 
 
 
@@ -24008,7 +24849,7 @@ if test $REPLACE_MALLOC = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
 
-fi
+  fi
 
 
 cat >>confdefs.h <<_ACEOF
@@ -24027,7 +24868,7 @@ $as_echo "#define HAVE_MALLOC_POSIX 1" >>confdefs.h
     REPLACE_MALLOC=1
   fi
 
-if test $REPLACE_MALLOC = 1; then
+  if test $REPLACE_MALLOC = 1; then
 
 
 
@@ -24038,7 +24879,7 @@ if test $REPLACE_MALLOC = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS malloc.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -24131,7 +24972,6 @@ $as_echo "$gl_cv_next_math_h" >&6; }
 
 
 
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NAN macro works" >&5
 $as_echo_n "checking whether NAN macro works... " >&6; }
 if ${gl_cv_header_math_nan_works+:} false; then :
@@ -24251,7 +25091,6 @@ fi
 
 
 
-
   if test $ac_cv_func_mbsinit = yes && test $ac_cv_func_mbrtowc = yes; then
 
 
@@ -24805,7 +25644,7 @@ $as_echo "#define MBRTOWC_NUL_RETVAL_BUG 1" >>confdefs.h
     fi
   fi
 
-if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
 
 
 
@@ -24819,7 +25658,7 @@ if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
 
   :
 
-fi
+  fi
 
 
 
@@ -25043,7 +25882,7 @@ _ACEOF
     fi
   fi
 
-if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
 
 
 
@@ -25057,7 +25896,7 @@ if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
 
   :
 
-fi
+  fi
 
 
 
@@ -25188,11 +26027,10 @@ $as_echo "#define mbstate_t int" >>confdefs.h
 
 
 
-
   :
 
 
-if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
 
 
 
@@ -25217,7 +26055,7 @@ fi
 done
 
 
-fi
+  fi
 
 
 
@@ -25245,7 +26083,7 @@ $as_echo "#define HAVE_MSVC_INVALID_PARAMETER_HANDLER 1" >>confdefs.h
   fi
 
 
-if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+  if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
 
 
 
@@ -25256,11 +26094,11 @@ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS msvc-inval.$ac_objext"
 
-fi
+  fi
 
 
 
-if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+  if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
 
 
 
@@ -25271,7 +26109,7 @@ if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS msvc-nothrow.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25354,7 +26192,7 @@ fi
   fi
 
 
-if test $ac_cv_func_obstack_printf = no || test $REPLACE_OBSTACK_PRINTF = 1; then
+  if test $ac_cv_func_obstack_printf = no || test $REPLACE_OBSTACK_PRINTF = 1; then
 
 
 
@@ -25365,7 +26203,7 @@ if test $ac_cv_func_obstack_printf = no || test $REPLACE_OBSTACK_PRINTF = 1; the
 
   gl_LIBOBJS="$gl_LIBOBJS obstack_printf.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25455,7 +26293,7 @@ $as_echo "#define OPEN_TRAILING_SLASH_BUG 1" >>confdefs.h
 
 
 
-if test $REPLACE_OPEN = 1; then
+  if test $REPLACE_OPEN = 1; then
 
 
 
@@ -25468,10 +26306,9 @@ if test $REPLACE_OPEN = 1; then
 
 
 
-
   :
 
-fi
+  fi
 
 
 
@@ -25559,7 +26396,7 @@ $as_echo "$gl_cv_func_perror_works" >&6; }
       ;;
   esac
 
-if test $REPLACE_PERROR = 1; then
+  if test $REPLACE_PERROR = 1; then
 
 
 
@@ -25570,7 +26407,7 @@ if test $REPLACE_PERROR = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS perror.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25673,7 +26510,7 @@ $as_echo "$gl_cv_func_posix_spawn_file_actions_addclose_works" >&6; }
     esac
   fi
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then
 
 
 
@@ -25684,7 +26521,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE
 
   gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addclose.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25755,7 +26592,7 @@ $as_echo "$gl_cv_func_posix_spawn_file_actions_adddup2_works" >&6; }
     esac
   fi
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then
 
 
 
@@ -25766,7 +26603,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2
 
   gl_LIBOBJS="$gl_LIBOBJS spawn_faction_adddup2.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25839,7 +26676,7 @@ $as_echo "$gl_cv_func_posix_spawn_file_actions_addopen_works" >&6; }
     esac
   fi
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then
 
 
 
@@ -25850,7 +26687,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN
 
   gl_LIBOBJS="$gl_LIBOBJS spawn_faction_addopen.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25869,7 +26706,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -25880,7 +26717,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawn_faction_destroy.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25899,7 +26736,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_DESTROY 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -25910,7 +26747,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawn_faction_init.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25929,7 +26766,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWN_FILE_ACTIONS_INIT 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -25940,7 +26777,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawnattr_destroy.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25959,7 +26796,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_DESTROY 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -25970,7 +26807,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawnattr_init.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -25989,7 +26826,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_INIT 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -26000,7 +26837,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawnattr_setflags.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -26019,7 +26856,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_SETFLAGS 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -26030,7 +26867,7 @@ if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS spawnattr_setsigmask.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -26049,7 +26886,7 @@ $as_echo "#define GNULIB_TEST_POSIX_SPAWNATTR_SETSIGMASK 1" >>confdefs.h
 
 
 
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
 
 
 
@@ -26096,7 +26933,7 @@ fi
 done
 
 
-fi
+  fi
 
 
 
@@ -26137,7 +26974,8 @@ else
 #include <float.h>
 #include <math.h>
 #include <string.h>
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
+# include <signal.h>
 # include <unistd.h>
 #endif
 /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
@@ -26160,9 +26998,10 @@ int main()
   int i;
   volatile double x;
   double zero = 0.0;
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
   /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
      number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
   alarm (5);
 #endif
   /* Test on denormalized numbers.  */
@@ -26586,7 +27425,7 @@ $as_echo "#define GNULIB_TEST_PRINTF_POSIX 1" >>confdefs.h
 
 
 
-ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
+  ac_fn_c_check_decl "$LINENO" "program_invocation_name" "ac_cv_have_decl_program_invocation_name" "#include <errno.h>
 "
 if test "x$ac_cv_have_decl_program_invocation_name" = xyes; then :
   ac_have_decl=1
@@ -26598,7 +27437,7 @@ cat >>confdefs.h <<_ACEOF
 #define HAVE_DECL_PROGRAM_INVOCATION_NAME $ac_have_decl
 _ACEOF
 
-ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
+  ac_fn_c_check_decl "$LINENO" "program_invocation_short_name" "ac_cv_have_decl_program_invocation_short_name" "#include <errno.h>
 "
 if test "x$ac_cv_have_decl_program_invocation_short_name" = xyes; then :
   ac_have_decl=1
@@ -26658,7 +27497,7 @@ fi
 
   fi
 
-if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
+  if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
 
 
 
@@ -26669,10 +27508,8 @@ if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS raise.$ac_objext"
 
-
-
-
-fi
+    :
+  fi
 
 
 
@@ -26707,7 +27544,7 @@ done
     HAVE_RAWMEMCHR=0
   fi
 
-if test $HAVE_RAWMEMCHR = 0; then
+  if test $HAVE_RAWMEMCHR = 0; then
 
 
 
@@ -26718,8 +27555,8 @@ if test $HAVE_RAWMEMCHR = 0; then
 
   gl_LIBOBJS="$gl_LIBOBJS rawmemchr.$ac_objext"
 
-  :
-fi
+    :
+  fi
 
 
 
@@ -26746,7 +27583,7 @@ $as_echo "#define HAVE_REALLOC_POSIX 1" >>confdefs.h
     REPLACE_REALLOC=1
   fi
 
-if test $REPLACE_REALLOC = 1; then
+  if test $REPLACE_REALLOC = 1; then
 
 
 
@@ -26757,7 +27594,7 @@ if test $REPLACE_REALLOC = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS realloc.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -26923,7 +27760,7 @@ fi
     HAVE_SIGACTION=0
   fi
 
-if test $HAVE_SIGACTION = 0; then
+  if test $HAVE_SIGACTION = 0; then
 
 
 
@@ -26957,7 +27794,7 @@ fi
     HAVE_SIGINFO_T=0
   fi
 
-fi
+  fi
 
 
 
@@ -27825,7 +28662,7 @@ $as_echo "#define HAVE_COPYSIGNL_IN_LIBC 1" >>confdefs.h
       ;;
   esac
 
-if test $REPLACE_SIGNBIT = 1; then
+  if test $REPLACE_SIGNBIT = 1; then
 
 
 
@@ -27856,7 +28693,7 @@ if test $REPLACE_SIGNBIT = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS signbitl.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -27886,7 +28723,7 @@ fi
     HAVE_POSIX_SIGNALBLOCKING=0
   fi
 
-if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
+  if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
 
 
 
@@ -27897,10 +28734,8 @@ if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
 
   gl_LIBOBJS="$gl_LIBOBJS sigprocmask.$ac_objext"
 
-
-
-
-fi
+    :
+  fi
 
 
 
@@ -29035,7 +29870,6 @@ fi
 
 
 
-
   gl_cv_func_sprintf_posix=no
   case "$gl_cv_func_printf_sizes_c99" in
     *yes)
@@ -29489,7 +30323,7 @@ $as_echo "#define REPLACE_FUNC_STAT_FILE 1" >>confdefs.h
 ;;
   esac
 
-if test $REPLACE_STAT = 1; then
+  if test $REPLACE_STAT = 1; then
 
 
 
@@ -29500,11 +30334,8 @@ if test $REPLACE_STAT = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS stat.$ac_objext"
 
-
-
-  :
-
-fi
+    :
+  fi
 
 
 
@@ -29676,7 +30507,6 @@ $as_echo "$gl_cv_next_stddef_h" >&6; }
 
 
 
-
      if test $gl_cv_have_include_next = yes; then
        gl_cv_next_stdio_h='<'stdio.h'>'
      else
@@ -29885,7 +30715,7 @@ $as_echo "$gl_cv_next_stdlib_h" >&6; }
 
 
 
-    for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt     initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps     posix_openpt ptsname ptsname_r random random_r realpath rpmatch     setenv setstate setstate_r srandom srandom_r     strtod strtoll strtoull unlockpt unsetenv; do
+    for gl_func in _Exit atoll canonicalize_file_name getloadavg getsubopt grantpt     initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps     posix_openpt ptsname ptsname_r random random_r realpath rpmatch     secure_getenv setenv setstate setstate_r srandom srandom_r     strtod strtoll strtoull unlockpt unsetenv; do
     as_gl_Symbol=`$as_echo "gl_cv_have_raw_decl_$gl_func" | $as_tr_sh`
     { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $gl_func is declared without a macro" >&5
 $as_echo_n "checking whether $gl_func is declared without a macro... " >&6; }
@@ -29952,7 +30782,7 @@ done
     HAVE_STPCPY=0
   fi
 
-if test $HAVE_STPCPY = 0; then
+  if test $HAVE_STPCPY = 0; then
 
 
 
@@ -29966,7 +30796,7 @@ if test $HAVE_STPCPY = 0; then
 
   :
 
-fi
+  fi
 
 
 
@@ -30063,7 +30893,7 @@ $as_echo "$gl_cv_func_strchrnul_works" >&6; }
     esac
   fi
 
-if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
+  if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
 
 
 
@@ -30074,8 +30904,8 @@ if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS strchrnul.$ac_objext"
 
-  :
-fi
+    :
+  fi
 
 
 
@@ -30105,7 +30935,7 @@ $as_echo "#define GNULIB_TEST_STRCHRNUL 1" >>confdefs.h
     HAVE_DECL_STRDUP=0
   fi
 
-if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then
+  if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then
 
 
 
@@ -30116,8 +30946,8 @@ if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS strdup.$ac_objext"
 
-  :
-fi
+    :
+  fi
 
 
 
@@ -30195,7 +31025,7 @@ $as_echo "$gl_cv_func_working_strerror" >&6; }
             REPLACE_STRERROR=1
   fi
 
-if test $REPLACE_STRERROR = 1; then
+  if test $REPLACE_STRERROR = 1; then
 
 
 
@@ -30206,7 +31036,7 @@ if test $REPLACE_STRERROR = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS strerror.$ac_objext"
 
-fi
+  fi
 
 
 cat >>confdefs.h <<_ACEOF
@@ -30231,7 +31061,7 @@ $as_echo "#define GNULIB_TEST_STRERROR 1" >>confdefs.h
 
 
 
-if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
+  if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
 
 
 
@@ -30269,7 +31099,7 @@ done
   fi
 
 
-fi
+  fi
 
 
 
@@ -30295,7 +31125,7 @@ fi
     fi
   fi
 
-if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
+  if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
 
 
 
@@ -30311,7 +31141,7 @@ if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
 
 
 
-fi
+  fi
 
 
 
@@ -30400,7 +31230,7 @@ $as_echo "$gl_cv_func_strndup_works" >&6; }
     HAVE_STRNDUP=0
   fi
 
-if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
+  if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
 
 
 
@@ -30411,7 +31241,7 @@ if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS strndup.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -30495,7 +31325,7 @@ test $ac_cv_func_strnlen_working = no && :
     fi
   fi
 
-if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
 
 
 
@@ -30506,8 +31336,8 @@ if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS strnlen.$ac_objext"
 
-  :
-fi
+    :
+  fi
 
 
 
@@ -30536,7 +31366,7 @@ fi
 done
 
 
-if test $ac_cv_func_strtoul = no; then
+  if test $ac_cv_func_strtoul = no; then
 
 
 
@@ -30547,7 +31377,7 @@ if test $ac_cv_func_strtoul = no; then
 
   gl_LIBOBJS="$gl_LIBOBJS strtoul.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -30567,7 +31397,7 @@ done
     HAVE_STRVERSCMP=0
   fi
 
-if test $HAVE_STRVERSCMP = 0; then
+  if test $HAVE_STRVERSCMP = 0; then
 
 
 
@@ -30581,7 +31411,7 @@ if test $HAVE_STRVERSCMP = 0; then
 
   :
 
-fi
+  fi
 
 
 
@@ -30611,8 +31441,6 @@ $as_echo "#define GNULIB_TEST_STRVERSCMP 1" >>confdefs.h
 
 
 
-
-
      if test $gl_cv_have_include_next = yes; then
        gl_cv_next_sys_stat_h='<'sys/stat.h'>'
      else
 
 
 
-     if test $gl_cv_have_include_next = yes; then
-       gl_cv_next_sys_types_h='<'sys/types.h'>'
-     else
-       { $as_echo "$as_me:${as_lineno-$LINENO}: checking absolute name of <sys/types.h>" >&5
-$as_echo_n "checking absolute name of <sys/types.h>... " >&6; }
-if ${gl_cv_next_sys_types_h+:} false; then :
-  $as_echo_n "(cached) " >&6
-else
-
-               cat confdefs.h - <<_ACEOF >conftest.$ac_ext
-/* end confdefs.h.  */
-#include <sys/types.h>
-
-_ACEOF
-                                                                                                                        case "$host_os" in
-                 aix*) gl_absname_cpp="$ac_cpp -C" ;;
-                 *)    gl_absname_cpp="$ac_cpp" ;;
-               esac
-
-               case "$host_os" in
-                 mingw*)
-                                                                                                                                     gl_dirsep_regex='[/\\]'
-                   ;;
-                 *)
-                   gl_dirsep_regex='\/'
-                   ;;
-               esac
-                                             gl_make_literal_regex_sed='s,[]$^\\.*/[],\\&,g'
-
-               gl_header_literal_regex=`echo 'sys/types.h' \
-                                        | sed -e "$gl_make_literal_regex_sed"`
-               gl_absolute_header_sed="/${gl_dirsep_regex}${gl_header_literal_regex}/"'{
-                   s/.*"\(.*'"${gl_dirsep_regex}${gl_header_literal_regex}"'\)".*/\1/
-                   s|^/[^/]|//&|
-                   p
-                   q
-                 }'
-                                                            gl_cv_next_sys_types_h='"'`(eval "$gl_absname_cpp conftest.$ac_ext") 2>&5 |
-                      sed -n "$gl_absolute_header_sed"`'"'
-
-
-fi
-{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $gl_cv_next_sys_types_h" >&5
-$as_echo "$gl_cv_next_sys_types_h" >&6; }
-     fi
-     NEXT_SYS_TYPES_H=$gl_cv_next_sys_types_h
-
-     if test $gl_cv_have_include_next = yes || test $gl_cv_have_include_next = buggy; then
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include_next'
-       gl_next_as_first_directive='<'sys/types.h'>'
-     else
-       # INCLUDE_NEXT_AS_FIRST_DIRECTIVE='include'
-       gl_next_as_first_directive=$gl_cv_next_sys_types_h
-     fi
-     NEXT_AS_FIRST_DIRECTIVE_SYS_TYPES_H=$gl_next_as_first_directive
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
 
 
 
@@ -30962,7 +31715,6 @@ fi
 
 
 
-
      if test $gl_cv_have_include_next = yes; then
        gl_cv_next_unistd_h='<'unistd.h'>'
      else
@@ -31326,7 +32078,7 @@ $as_echo "$gl_cv_func_unsetenv_works" >&6; }
     esac
   fi
 
-if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
+  if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
 
 
 
@@ -31341,7 +32093,7 @@ if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
 
 
 
-fi
+  fi
 
 
 
@@ -32936,7 +33688,6 @@ $as_echo "#define GNULIB_TEST_VSPRINTF_POSIX 1" >>confdefs.h
 
 
 
-
   for ac_func in waitid
 do :
   ac_fn_c_check_func "$LINENO" "waitid" "ac_cv_func_waitid"
@@ -32956,7 +33707,7 @@ done
     mingw*) HAVE_WAITPID=0 ;;
   esac
 
-if test $HAVE_WAITPID = 0; then
+  if test $HAVE_WAITPID = 0; then
 
 
 
@@ -32967,7 +33718,7 @@ if test $HAVE_WAITPID = 0; then
 
   gl_LIBOBJS="$gl_LIBOBJS waitpid.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -33141,8 +33892,6 @@ fi
 
 
 
-
-
   if test $gt_cv_c_wint_t = yes; then
     HAVE_WINT_T=1
   else
@@ -33599,7 +34348,7 @@ $as_echo "$gl_cv_func_wcwidth_works" >&6; }
     HAVE_WCWIDTH=0
   fi
 
-if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+  if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
 
 
 
@@ -33610,7 +34359,7 @@ if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
 
   gl_LIBOBJS="$gl_LIBOBJS wcwidth.$ac_objext"
 
-fi
+  fi
 
 
 
@@ -33626,12 +34375,6 @@ $as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
 
 
 
-
-
-
-  :
-
-
   :
 
 
@@ -33641,13 +34384,10 @@ $as_echo "#define GNULIB_TEST_WCWIDTH 1" >>confdefs.h
 
 
 
-
-
   gl_LIBOBJS="$gl_LIBOBJS xmemdup0.$ac_objext"
 
 
 
-
   for ac_header in stdint.h
 do :
   ac_fn_c_check_header_mongrel "$LINENO" "stdint.h" "ac_cv_header_stdint_h" "$ac_includes_default"
 # We use gnulib, which is only guaranteed to work properly with the
 # latest Gettext.
 
-mkdir_p="$MKDIR_P"
-case $mkdir_p in
-  [\\/$]* | ?:[\\/]*) ;;
-  */*) mkdir_p="\$(top_builddir)/$mkdir_p" ;;
-esac
-
-
   { $as_echo "$as_me:${as_lineno-$LINENO}: checking whether NLS is requested" >&5
 $as_echo_n "checking whether NLS is requested... " >&6; }
     # Check whether --enable-nls was given.
@@ -36103,7 +36836,7 @@ EOF
          > conftestver.class
        target_version=`{
          unset JAVA_HOME
-         echo "$as_me:36106: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5
+         echo "$as_me:36839: CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver" >&5
          CLASSPATH=.${CLASSPATH:+$CLASSPATH_SEPARATOR$CLASSPATH} $CONF_JAVA conftestver 2>&5
        }`
        case "$target_version" in
@@ -36171,23 +36904,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:36174: $JAVAC -d . conftest.java" >&5
+        if { echo "$as_me:36907: $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:36181: $JAVAC -fsource=$source_version -d . conftest.java" >&5
+          if { echo "$as_me:36914: $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:36186: $JAVAC -d . conftestfail.java" >&5
+             && { echo "$as_me:36919: $JAVAC -d . conftestfail.java" >&5
                   $JAVAC -d . conftestfail.java >&5 2>&1
                 } \
              && test -f conftestfail.class \
-             && ! { echo "$as_me:36190: $JAVAC -fsource=$source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:36923: $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"
@@ -36201,7 +36934,7 @@ EOF
         else
                     rm -f conftest.class
           rm -f conftestfail.class
-          if { echo "$as_me:36204: $JAVAC -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
+          if { echo "$as_me:36937: $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 \
@@ -36214,7 +36947,7 @@ EOF
       else
                 if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
                     rm -f conftest.class
-          if { echo "$as_me:36217: $JAVAC -d . conftest.java" >&5
+          if { echo "$as_me:36950: $JAVAC -d . conftest.java" >&5
                $JAVAC -d . conftest.java >&5 2>&1
              } \
              && test -f conftest.class; then
@@ -36226,7 +36959,7 @@ EOF
           if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
                                     javac_works=
             rm -f conftest.class
-            if { echo "$as_me:36229: $JAVAC -d . conftest.java" >&5
+            if { echo "$as_me:36962: $JAVAC -d . conftest.java" >&5
                  $JAVAC -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class; then
@@ -36234,7 +36967,7 @@ EOF
             fi
             javac_noassert_works=
             rm -f conftest.class
-            if { echo "$as_me:36237: $JAVAC -fno-assert -d . conftest.java" >&5
+            if { echo "$as_me:36970: $JAVAC -fno-assert -d . conftest.java" >&5
                  $JAVAC -fno-assert -d . conftest.java >&5 2>&1
                } \
                && test -f conftest.class; then
@@ -36242,11 +36975,11 @@ EOF
             fi
             if test -n "$javac_works" && test -n "$javac_noassert_works"; then
               rm -f conftestfail.class
-              if { echo "$as_me:36245: $JAVAC -d . conftestfail.java" >&5
+              if { echo "$as_me:36978: $JAVAC -d . conftestfail.java" >&5
                    $JAVAC -d . conftestfail.java >&5 2>&1
                  } \
                  && test -f conftestfail.class \
-                 && ! { echo "$as_me:36249: $JAVAC -fno-assert -d . conftestfail.java" >&5
+                 && ! { echo "$as_me:36982: $JAVAC -fno-assert -d . conftestfail.java" >&5
                         $JAVAC -fno-assert -d . conftestfail.java >&5 2>&1
                       }; then
                                 javac_works=
@@ -36268,23 +37001,23 @@ EOF
       fi
     else
                   rm -f conftest.class
-      if { echo "$as_me:36271: $JAVAC -d . conftest.java" >&5
+      if { echo "$as_me:37004: $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:36278: $JAVAC -source $source_version -d . conftest.java" >&5
+        if { echo "$as_me:37011: $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:36283: $JAVAC -d . conftestfail.java" >&5
+           && { echo "$as_me:37016: $JAVAC -d . conftestfail.java" >&5
                 $JAVAC -d . conftestfail.java >&5 2>&1
               } \
            && test -f conftestfail.class \
-           && ! { echo "$as_me:36287: $JAVAC -source $source_version -d . conftestfail.java" >&5
+           && ! { echo "$as_me:37020: $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"
@@ -36297,23 +37030,23 @@ EOF
         fi
       else
                         rm -f conftest.class
-        if { echo "$as_me:36300: $JAVAC -target $target_version -d . conftest.java" >&5
+        if { echo "$as_me:37033: $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:36307: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:37040: $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:36312: $JAVAC -target $target_version -d . conftestfail.java" >&5
+             && { echo "$as_me:37045: $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:36316: $JAVAC -target $target_version -source $source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:37049: $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"
@@ -36326,7 +37059,7 @@ EOF
           fi
         else
                                         rm -f conftest.class
-          if { echo "$as_me:36329: $JAVAC -target $target_version -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:37062: $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:36447: gcj -C -d . conftestlib.java" >&5
+                if { echo "$as_me:37180: 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:36452: gcj -C -d . conftest.java" >&5
+            if { echo "$as_me:37185: 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:36459: gcj -C -fsource=$source_version -d . conftest.java" >&5
+              if { echo "$as_me:37192: 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:36464: gcj -C -d . conftestfail.java" >&5
+                 && { echo "$as_me:37197: gcj -C -d . conftestfail.java" >&5
                       gcj -C -d . conftestfail.java >&5 2>&1
                     } \
                  && test -f conftestfail.class \
-                 && ! { echo "$as_me:36468: gcj -C -fsource=$source_version -d . conftestfail.java" >&5
+                 && ! { echo "$as_me:37201: 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"
@@ -36479,7 +37212,7 @@ fi
             else
                             rm -f conftest.class
               rm -f conftestfail.class
-              if { echo "$as_me:36482: gcj -C -fsource=$source_version -ftarget=$target_version -d . conftest.java" >&5
+              if { echo "$as_me:37215: 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 \
@@ -36492,7 +37225,7 @@ fi
           else
                                                 if test "$target_version" = 1.4 && test "$source_version" = 1.4; then
               rm -f conftest.class
-              if { echo "$as_me:36495: gcj -C -d . conftest.java" >&5
+              if { echo "$as_me:37228: gcj -C -d . conftest.java" >&5
                    gcj -C -d . conftest.java >&5 2>&1
                  } \
                  && test -f conftest.class; then
@@ -36503,7 +37236,7 @@ fi
             else
               if test "$target_version" = 1.4 && test "$source_version" = 1.3; then
                                                 rm -f conftest.class
-                if { echo "$as_me:36506: gcj -C -fno-assert -d . conftest.java" >&5
+                if { echo "$as_me:37239: gcj -C -fno-assert -d . conftest.java" >&5
                      gcj -C -fno-assert -d . conftest.java >&5 2>&1
                    } \
                    && test -f conftest.class; then
@@ -36512,7 +37245,7 @@ fi
                   HAVE_JAVACOMP=1
                 else
                   rm -f conftest.class
-                  if { echo "$as_me:36515: gcj -C -d . conftest.java" >&5
+                  if { echo "$as_me:37248: 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:36534: javac -d . conftest.java" >&5
+        if { echo "$as_me:37267: 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:36541: javac -source $source_version -d . conftest.java" >&5
+          if { echo "$as_me:37274: 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:36546: javac -d . conftestfail.java" >&5
+             && { echo "$as_me:37279: javac -d . conftestfail.java" >&5
                   javac -d . conftestfail.java >&5 2>&1
                 } \
              && test -f conftestfail.class \
-             && ! { echo "$as_me:36550: javac -source $source_version -d . conftestfail.java" >&5
+             && ! { echo "$as_me:37283: 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:36563: javac -target $target_version -d . conftest.java" >&5
+          if { echo "$as_me:37296: 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:36570: javac -target $target_version -source $source_version -d . conftest.java" >&5
+            if { echo "$as_me:37303: 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:36575: javac -target $target_version -d . conftestfail.java" >&5
+               && { echo "$as_me:37308: 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:36579: javac -target $target_version -source $source_version -d . conftestfail.java" >&5
+               && ! { echo "$as_me:37312: 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"
@@ -36589,7 +37322,7 @@ fi
             fi
           else
                                                 rm -f conftest.class
-            if { echo "$as_me:36592: javac -target $target_version -source $source_version -d . conftest.java" >&5
+            if { echo "$as_me:37325: 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 \
@@ -37465,7 +38198,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.2, which was
+This file was extended by GNU Bison $as_me 2.7.12-4996, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -37537,7 +38270,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.2
+GNU Bison config.status 2.7.12-4996
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
@@ -38326,7 +39059,7 @@ $as_echo "$as_me: executing $ac_file commands" >&6;}
 
   case $ac_file$ac_mode in
     "depfiles":C) test x"$AMDEP_TRUE" != x"" || {
-  # Autoconf 2.62 quotes --file arguments for eval, but not when files
+  # Older Autoconf quotes --file arguments for eval, but not when files
   # are listed without --file.  Let's play safe and only enable the eval
   # if we detect the quoting.
   case $CONFIG_FILES in
@@ -38428,7 +39161,7 @@ $as_echo X"$file" |
       case "$ac_file" in */Makefile.in)
         # Adjust a relative srcdir.
         ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
         ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
         # In autoconf-2.13 it is called $ac_given_srcdir.
         # In autoconf-2.50 it is called $srcdir.
index b9d2ea6..2c9be08 100644 (file)
@@ -1,6 +1,6 @@
 # Configure template for GNU Bison.                   -*-Autoconf-*-
 #
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
@@ -26,7 +26,7 @@ m4_pattern_forbid([^gl_[A-Z]])
 AC_INIT([GNU Bison],
         m4_esyscmd([build-aux/git-version-gen .tarball-version]),
         [bug-bison@gnu.org])
-AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2012])
+AC_SUBST([PACKAGE_COPYRIGHT_YEAR], [2013])
 AC_DEFINE_UNQUOTED([PACKAGE_COPYRIGHT_YEAR], [$PACKAGE_COPYRIGHT_YEAR],
                    [The copyright year for this package])
 
@@ -58,6 +58,20 @@ AC_PROG_CXX
 # Gnulib (early checks).
 gl_EARLY
 
+# Gnulib uses '#pragma GCC diagnostic push' to silence some
+# warnings, but older gcc doesn't support this.
+AC_CACHE_CHECK([whether pragma GCC diagnostic push works],
+  [lv_cv_gcc_pragma_push_works], [
+  save_CFLAGS=$CFLAGS
+  CFLAGS='-Wunknown-pragmas -Werror'
+  AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[
+    #pragma GCC diagnostic push
+    #pragma GCC diagnostic pop
+  ]])],
+  [lv_cv_gcc_pragma_push_works=yes],
+  [lv_cv_gcc_pragma_push_works=no])
+  CFLAGS=$save_CFLAGS])
+
 AC_ARG_ENABLE([gcc-warnings],
 [  --enable-gcc-warnings   turn on lots of GCC warnings (not recommended)],
 [case $enable_gcc_warnings in
@@ -67,37 +81,77 @@ AC_ARG_ENABLE([gcc-warnings],
               [enable_gcc_warnings=no])
 if test "$enable_gcc_warnings" = yes; then
   warn_common='-Wall -Wextra -Wno-sign-compare -Wcast-align
-    -Wcast-qual -Wformat -Wpointer-arith -Wwrite-strings'
-  warn_c='-Wbad-function-cast -Wmissing-declarations -Wmissing-prototypes
-    -Wshadow -Wstrict-prototypes'
+    -Wformat -Wpointer-arith -Wwrite-strings'
+  warn_c='-Wbad-function-cast -Wshadow -Wstrict-prototypes'
   warn_cxx='-Wnoexcept'
+  # Warnings for the test suite only.
+  #
+  # -fno-color-diagnostics: Clang's use of colors in the error
+  # messages is confusing the tests looking at the compiler's output
+  # (e.g., synclines.at).
+  warn_tests='-Wundef -pedantic -fno-color-diagnostics'
+
   AC_LANG_PUSH([C])
+  # Clang supports many of GCC's -W options, but only issues warnings
+  # on the ones it does not recognize.  In that case, gl_WARN_ADD
+  # thinks the option is supported, and unknown options are then added
+  # to CFLAGS.  But then, when -Werror is added in the test suite for
+  # instance, the warning about the unknown option turns into an
+  # error.
+  #
+  # This should be addressed by gnulib's gl_WARN_ADD, but in the
+  # meanwhile, turn warnings about unknown options into errors in
+  # CFLAGS, and restore CFLAGS after the tests.
+  save_CFLAGS=$CFLAGS
+  gl_WARN_ADD([-Werror=unknown-warning-option], [CFLAGS])
   for i in $warn_common $warn_c;
   do
     gl_WARN_ADD([$i], [WARN_CFLAGS])
   done
   gl_WARN_ADD([-Werror], [WERROR_CFLAGS])
+
+  # Warnings for the test suite, and maybe for bison if GCC is modern
+  # enough.
+  gl_WARN_ADD([-Wmissing-declarations], [WARN_CFLAGS_TEST])
+  gl_WARN_ADD([-Wmissing-prototypes], [WARN_CFLAGS_TEST])
+  test $lv_cv_gcc_pragma_push_works = yes &&
+    AS_VAR_APPEND([WARN_CFLAGS], [" $WARN_CFLAGS_TEST"])
+
   # Warnings for the test suite only.
-  gl_WARN_ADD([-Wundef], [WARN_CFLAGS_TEST])
-  gl_WARN_ADD([-pedantic], [WARN_CFLAGS_TEST])
+  for i in $warn_tests;
+  do
+    gl_WARN_ADD([$i], [WARN_CFLAGS_TEST])
+  done
+  CFLAGS=$save_CFLAGS
   AC_LANG_POP([C])
 
   AC_LANG_PUSH([C++])
+  save_CXXFLAGS=$CXXFLAGS
+  gl_WARN_ADD([-Werror=unknown-warning-option], [CXXFLAGS])
   for i in $warn_common $warn_cxx;
   do
     gl_WARN_ADD([$i], [WARN_CXXFLAGS])
   done
-  gl_WARN_ADD([ -Wzero-as-null-pointer-constant], [WARN_CXXFLAGS],
+  gl_WARN_ADD([-Wzero-as-null-pointer-constant], [WARN_CXXFLAGS],
               [AC_LANG_PROGRAM([], [nullptr])])
   gl_WARN_ADD([-Werror], [WERROR_CXXFLAGS])
   # Warnings for the test suite only.
-  gl_WARN_ADD([-Wundef], [WARN_CXXFLAGS_TEST])
-  gl_WARN_ADD([-pedantic], [WARN_CXXFLAGS_TEST])
+  for i in $warn_tests;
+  do
+    gl_WARN_ADD([$i], [WARN_CXXFLAGS_TEST])
+  done
+  # Clang++ 3.2+ reject C code generated by Flex.
+  gl_WARN_ADD([-Wno-null-conversion], [WARN_NO_NULL_CONVERSION_CXXFLAGS])
+  # Variants break strict aliasing analysis.
+  gl_WARN_ADD([-fno-strict-aliasing], [NO_STRICT_ALIAS_CXXFLAGS])
+  CXXFLAGS=$save_CXXFLAGS
   AC_LANG_POP([C++])
 fi
 
 BISON_TEST_FOR_WORKING_C_COMPILER
+BISON_C_COMPILER_POSIXLY_CORRECT
 BISON_TEST_FOR_WORKING_CXX_COMPILER
+BISON_CXX_COMPILER_POSIXLY_CORRECT
 
 AC_ARG_ENABLE([yacc],
   [AC_HELP_STRING([--disable-yacc],
@@ -115,6 +169,7 @@ AC_SUBST([YACC_SCRIPT])
 AC_SUBST([YACC_LIBRARY])
 
 # Checks for programs.
+AM_MISSING_PROG([DOT], [dot])
 AC_PROG_LEX
 $LEX_IS_FLEX || AC_MSG_ERROR([Flex is required])
 AC_PROG_YACC
@@ -123,6 +178,10 @@ AC_PROG_GNU_M4
 AC_DEFINE_UNQUOTED([M4], ["$M4"], [Define to the GNU M4 executable name.])
 AC_DEFINE_UNQUOTED([M4_GNU_OPTION], ["$M4_GNU"], [Define to "-g" if GNU M4
 supports -g, otherwise to "".])
+AC_PATH_PROG([PERL], [perl])
+if test -z "$PERL"; then
+   AC_MSG_ERROR([perl not found])
+fi
 AM_MISSING_PROG([HELP2MAN], [help2man])
 AC_PATH_PROG([XSLTPROC], [xsltproc])
 AC_SUBST([XSLTPROC])
index 1fd10b4..5678c25 100644 (file)
@@ -1,4 +1,4 @@
-## Copyright (C) 2002, 2005-2012 Free Software Foundation, Inc.
+## Copyright (C) 2002, 2005-2013 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
index 0957cc9..f7b4c3c 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -63,8 +63,9 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = data
-DIST_COMMON = README $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) \
-       $(dist_xslt_DATA) $(srcdir)/Makefile.am $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) $(dist_xslt_DATA) \
+       README
 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 \
@@ -80,6 +81,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -87,11 +89,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -213,6 +216,7 @@ am__uninstall_files_from_dir = { \
 am__installdirs = "$(DESTDIR)$(m4sugardir)" "$(DESTDIR)$(pkgdatadir)" \
        "$(DESTDIR)$(xsltdir)"
 DATA = $(dist_m4sugar_DATA) $(dist_pkgdata_DATA) $(dist_xslt_DATA)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -230,6 +234,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -249,9 +254,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -523,6 +531,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -862,6 +871,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1048,6 +1058,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1058,6 +1069,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1188,6 +1200,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1282,6 +1295,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1381,9 +1395,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits data/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu data/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits data/Makefile
+         $(AUTOMAKE) --gnu data/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1465,11 +1479,9 @@ uninstall-dist_xsltDATA:
        @list='$(dist_xslt_DATA)'; test -n "$(xsltdir)" || list=; \
        files=`for p in $$list; do echo $$p; done | sed -e 's|^.*/||'`; \
        dir='$(DESTDIR)$(xsltdir)'; $(am__uninstall_files_from_dir)
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
@@ -1611,19 +1623,19 @@ uninstall-am: uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic distclean \
-       distclean-generic distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am \
-       install-dist_m4sugarDATA install-dist_pkgdataDATA \
-       install-dist_xsltDATA install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am uninstall uninstall-am \
-       uninstall-dist_m4sugarDATA uninstall-dist_pkgdataDATA \
-       uninstall-dist_xsltDATA
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+       ctags-am distclean distclean-generic distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dist_m4sugarDATA \
+       install-dist_pkgdataDATA install-dist_xsltDATA install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-generic pdf pdf-am ps ps-am tags-am uninstall \
+       uninstall-am uninstall-dist_m4sugarDATA \
+       uninstall-dist_pkgdataDATA uninstall-dist_xsltDATA
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index e78c1cf..9dc9ca6 100644 (file)
@@ -52,7 +52,7 @@ into various formats.
 
 -----
 
-Copyright (C) 2002, 2008-2012 Free Software Foundation, Inc.
+Copyright (C) 2002, 2008-2013 Free Software Foundation, Inc.
 
 This file is part of GNU Bison.
 
index fac86f2..d870828 100644 (file)
@@ -2,7 +2,7 @@
 
 # Language-independent M4 Macros for Bison.
 
-# Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004-2013 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
@@ -58,6 +58,30 @@ This special exception was added by the Free Software Foundation in
 version 2.2 of Bison.])])
 
 
+## -------- ##
+## Output.  ##
+## -------- ##
+
+# b4_output_begin(FILE)
+# ---------------------
+# Enable output, i.e., send to diversion 0, expand after "#", and
+# generate the tag to output into FILE.  Must be followed by EOL.
+m4_define([b4_output_begin],
+[m4_changecom()
+m4_divert_push(0)dnl
+@output(m4_unquote([$1])@)@dnl
+])
+
+
+# b4_output_end()
+# ---------------
+# Output nothing, restore # as comment character (no expansions after #).
+m4_define([b4_output_end],
+[m4_divert_pop(0)
+m4_changecom([#])
+])
+
+
 ## ---------------- ##
 ## Error handling.  ##
 ## ---------------- ##
index 4421d18..06597a8 100644 (file)
@@ -2,7 +2,7 @@
 
 # C++ skeleton dispatching for Bison.
 
-# Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007, 2009-2013 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
index 45c4dda..429b9e9 100644 (file)
@@ -2,7 +2,7 @@
 
 # C++ skeleton for Bison
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -29,7 +29,7 @@ b4_percent_define_default([[parser_class_name]], [[parser]])
 # Don't do that so that we remember whether we're using a user
 # request, or the default value.
 #
-# b4_percent_define_default([[location_type]], [[location]])
+# b4_percent_define_default([[api.location.type]], [[location]])
 
 b4_percent_define_default([[filename_type]], [[std::string]])
 b4_percent_define_default([[namespace]], m4_defn([b4_prefix]))
index c2abce7..4ee310d 100644 (file)
@@ -2,7 +2,7 @@
 
 # Common code for C-like languages (C, C++, Java, etc.)
 
-# Copyright (C) 2012 Free Software Foundation, Inc.
+# Copyright (C) 2012-2013 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
index 8bcae59..36904aa 100644 (file)
@@ -2,7 +2,7 @@
 
 # C skeleton dispatching for Bison.
 
-# Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006-2007, 2009-2013 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
index 45468e3..b1b6e28 100644 (file)
--- a/data/c.m4
+++ b/data/c.m4
@@ -2,7 +2,7 @@
 
 # C M4 Macros for Bison.
 
-# Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002, 2004-2013 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
@@ -30,19 +30,21 @@ m4_define([b4_tocpp],
 # ------------------
 # A valid C macro name to use as a CPP header guard for FILE.
 m4_define([b4_cpp_guard],
-[b4_tocpp(m4_defn([b4_prefix])/[$1])])
+[[YY_]b4_tocpp(m4_defn([b4_prefix])/[$1])[_INCLUDED]])
 
 
 # b4_cpp_guard_open(FILE)
 # b4_cpp_guard_close(FILE)
 # ------------------------
-# Open/close CPP inclusion guards for FILE.
+# If FILE does not expand to nothing, open/close CPP inclusion guards for FILE.
 m4_define([b4_cpp_guard_open],
+[m4_ifval(m4_quote($1),
 [#ifndef b4_cpp_guard([$1])
-# define b4_cpp_guard([$1])])
+# define b4_cpp_guard([$1])])])
 
 m4_define([b4_cpp_guard_close],
-[#endif b4_comment([!b4_cpp_guard([$1])])])
+[m4_ifval(m4_quote($1),
+[#endif b4_comment([!b4_cpp_guard([$1])])])])
 
 
 ## ---------------- ##
@@ -161,7 +163,7 @@ m4_define([b4_int_type],
 
        m4_eval([0 <= $1]),                [1], [unsigned int],
 
-                                              [int])])
+                                               [int])])
 
 
 # b4_int_type_for(NAME)
@@ -182,12 +184,32 @@ m4_define([b4_table_value_equals],
 [m4_if(m4_eval($3 < m4_indir([b4_]$1[_min])
                || m4_indir([b4_]$1[_max]) < $3), [1],
        [[YYID (0)]],
-       [[((]$2[) == (]$3[))]])])
+       [(!!(($2) == ($3)))])])
 
 
-## ---------##
-## Values.  ##
-## ---------##
+## ----------------- ##
+## Compiler issues.  ##
+## ----------------- ##
+
+# b4_attribute_define
+# -------------------
+# Provide portability for __attribute__.
+m4_define([b4_attribute_define],
+[#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+#  define __attribute__(Spec) /* empty */
+# endif
+#endif
+
+/* Suppress unused-variable warnings by "using" E.  */
+#if ! defined lint || defined __GNUC__
+# define YYUSE(E) ((void) (E))
+#else
+# define YYUSE(E) /* empty */
+#endif
+])
 
 
 # b4_null_define
@@ -254,7 +276,7 @@ m4_define([b4_token_enums],
    enum ]b4_api_prefix[tokentype {
 ]m4_map_sep([     b4_token_enum], [,
 ],
-          [$@])[
+           [$@])[
    };
 #endif
 ]])])
@@ -318,7 +340,7 @@ $1 (b4_c_ansi_formals(m4_shift2($@)))[]dnl
 m4_define([b4_c_ansi_formals],
 [m4_if([$#], [0], [void],
        [$#$1], [1], [void],
-              [m4_map_sep([b4_c_ansi_formal], [, ], [$@])])])
+               [m4_map_sep([b4_c_ansi_formal], [, ], [$@])])])
 
 m4_define([b4_c_ansi_formal],
 [$1])
@@ -339,9 +361,9 @@ m4_define([b4_c_knr_formal_name],
 # Output the K&R argument declarations.
 m4_define([b4_c_knr_formal_decls],
 [m4_map_sep([b4_c_knr_formal_decl],
-           [
+            [
 ],
-           [$@])])
+            [$@])])
 
 m4_define([b4_c_knr_formal_decl],
 [    $1;])
@@ -353,9 +375,18 @@ m4_define([b4_c_knr_formal_decl],
 ## ------------------------------------------------------------ ##
 
 
+# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
+# ----------------------------------------------------------------
+# Declare the function NAME ANSI C style.
+m4_define([b4_c_ansi_function_decl],
+[$2 $1 (b4_c_ansi_formals(m4_shift2($@)));[]dnl
+])
+
+
+
 # b4_c_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
 # -----------------------------------------------------------
-# Declare the function NAME.
+# Declare the function NAME in both K&R and ANSI C.
 m4_define([b4_c_function_decl],
 [#if defined __STDC__ || defined __cplusplus
 b4_c_ansi_function_decl($@)
@@ -365,15 +396,6 @@ $2 $1 ();
 ])
 
 
-# b4_c_ansi_function_decl(NAME, RETURN-VALUE, [DECL1, NAME1], ...)
-# ----------------------------------------------------------------
-# Declare the function NAME.
-m4_define([b4_c_ansi_function_decl],
-[$2 $1 (b4_c_ansi_formals(m4_shift2($@)));[]dnl
-])
-
-
-
 
 ## --------------------- ##
 ## Calling C functions.  ##
@@ -403,7 +425,7 @@ m4_define([b4_c_arg],
 ## ----------- ##
 
 # b4_sync_start(LINE, FILE)
-# -----------------------
+# -------------------------
 m4_define([b4_sync_start], [[#]line $1 $2])
 
 
@@ -418,24 +440,38 @@ m4_define([b4_case],
 $2
     break;])
 
-# b4_symbol_actions(FILENAME, LINENO,
-#                   SYMBOL-TAG, SYMBOL-NUM,
-#                   SYMBOL-ACTION, SYMBOL-TYPENAME)
-# -------------------------------------------------
+# _b4_symbol_actions(FILENAME, LINENO,
+#                    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_define([_b4_symbol_actions],
 [b4_dollar_pushdef([(*yyvaluep)], [$6], [(*yylocationp)])dnl
       case $4: /* $3 */
 b4_syncline([$2], [$1])
-       $5;
+        $5;
 b4_syncline([@oline@], [@ofile@])
-       break;
+        break;
 b4_dollar_popdef[]dnl
 ])
 
+# b4_symbol_actions(KIND)
+# -----------------------
+# Emit the symbol actions for KIND ("printers" or "destructors").
+# Dispatch on "yytype".
+m4_define([b4_symbol_actions],
+[m4_ifval(m4_defn([b4_symbol_$1]),
+[[switch (yytype)
+    {
+]m4_map([_b4_symbol_actions], m4_defn([b4_symbol_$1]))[
+      default:
+        break;
+    }]],
+[YYUSE (yytype);])])
+
 
 # b4_yydestruct_generate(FUNCTION-DECLARATOR)
 # -------------------------------------------
@@ -465,12 +501,7 @@ b4_parse_param_use[]dnl
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
-      default:
-       break;
-    }
+  ]b4_symbol_actions([destructors])[
 }]dnl
 ])
 
@@ -489,9 +520,9 @@ m4_define_default([b4_yy_symbol_print_generate],
 /*ARGSUSED*/
 ]$1([yy_symbol_value_print],
     [static void],
-              [[FILE *yyoutput],                       [yyoutput]],
-              [[int yytype],                           [yytype]],
-              [[YYSTYPE const * const yyvaluep],       [yyvaluep]][]dnl
+               [[FILE *yyoutput],                       [yyoutput]],
+               [[int yytype],                           [yytype]],
+               [[YYSTYPE const * const yyvaluep],       [yyvaluep]][]dnl
 b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
 m4_ifset([b4_parse_param], [, b4_parse_param]))[
 {
@@ -508,12 +539,7 @@ b4_parse_param_use[]dnl
 # else
   YYUSE (yyoutput);
 # endif
-  switch (yytype)
-    {
-]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
-[      default:
-       break;
-    }
+  ]b4_symbol_actions([printers])[
 }
 
 
@@ -523,9 +549,9 @@ b4_parse_param_use[]dnl
 
 ]$1([yy_symbol_print],
     [static void],
-              [[FILE *yyoutput],                       [yyoutput]],
-              [[int yytype],                           [yytype]],
-              [[YYSTYPE const * const yyvaluep],       [yyvaluep]][]dnl
+               [[FILE *yyoutput],                       [yyoutput]],
+               [[int yytype],                           [yytype]],
+               [[YYSTYPE const * const yyvaluep],       [yyvaluep]][]dnl
 b4_locations_if([, [[YYLTYPE const * const yylocationp], [yylocationp]]])[]dnl
 m4_ifset([b4_parse_param], [, b4_parse_param]))[
 {
@@ -600,7 +626,7 @@ m4_define([b4_YYDEBUG_define],
 #  endif
 # else /* ! defined YYDEBUG */
 #  define ]b4_api_PREFIX[DEBUG ]b4_debug_flag[
-# endif /* ! defined ]b4_api_PREFIX[DEBUG */
+# endif /* ! defined YYDEBUG */
 #endif  /* ! defined ]b4_api_PREFIX[DEBUG */]])[]dnl
 ])
 
@@ -641,3 +667,72 @@ m4_define([b4_yylloc_default_define],
     while (YYID (0))
 #endif
 ]])
+
+# b4_yy_location_print_define
+# ---------------------------
+# Define YY_LOCATION_PRINT.
+m4_define([b4_yy_location_print_define],
+[b4_locations_if([[
+/* YY_LOCATION_PRINT -- Print the location on the stream.
+   This macro was not mandated originally: define only if we know
+   we won't break user code: when these are the locations we know.  */
+
+#ifndef YY_LOCATION_PRINT
+# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
+
+/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
+
+__attribute__((__unused__))
+]b4_c_function_def([yy_location_print_],
+    [static unsigned],
+               [[FILE *yyo],                    [yyo]],
+               [[YYLTYPE const * const yylocp], [yylocp]])[
+{
+  unsigned res = 0;
+  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
+  if (0 <= yylocp->first_line)
+    {
+      res += fprintf (yyo, "%d", yylocp->first_line);
+      if (0 <= yylocp->first_column)
+        res += fprintf (yyo, ".%d", yylocp->first_column);
+    }
+  if (0 <= yylocp->last_line)
+    {
+      if (yylocp->first_line < yylocp->last_line)
+        {
+          res += fprintf (yyo, "-%d", yylocp->last_line);
+          if (0 <= end_col)
+            res += fprintf (yyo, ".%d", end_col);
+        }
+      else if (0 <= end_col && yylocp->first_column < end_col)
+        res += fprintf (yyo, "-%d", end_col);
+    }
+  return res;
+ }
+
+#  define YY_LOCATION_PRINT(File, Loc)          \
+  yy_location_print_ (File, &(Loc))
+
+# else
+#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+# endif
+#endif]],
+[[/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif]])
+])
+
+# b4_yyloc_default
+# ----------------
+# Expand to a possible default value for yylloc.
+m4_define([b4_yyloc_default],
+[[
+# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
+  = { ]m4_join([, ],
+               m4_defn([b4_location_initial_line]),
+               m4_defn([b4_location_initial_column]),
+               m4_defn([b4_location_initial_line]),
+               m4_defn([b4_location_initial_column]))[ }
+# endif
+]])
index 97efe89..1a2e6ba 100644 (file)
@@ -2,7 +2,7 @@
 
 # GLR skeleton for Bison
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -179,13 +179,10 @@ m4_define([b4_shared_declarations],
 ## Output files.  ##
 ## -------------- ##
 
-# We do want M4 expansion after # for CPP macros.
-m4_changecom()
-m4_divert_push(0)dnl
-@output(b4_parser_file_name@)@
+b4_output_begin([b4_parser_file_name])
 b4_copyright([Skeleton implementation for Bison GLR parsers in C],
-             [2002-2012])
-[
+             [2002-2013])[
+
 /* C GLR parser skeleton written by Paul Hilfinger.  */
 
 ]b4_identification
@@ -223,11 +220,11 @@ b4_percent_code_get([[top]])[
 #endif
 
 /* Default (constant) value used for initialization for null
-   right-hand sides.  Unlike the standard yacc.c template,
-   here we set the default value of $$ to a zeroed-out value.
-   Since the default value is undefined, this behavior is
-   technically correct.  */
-static YYSTYPE yyval_default;
+   right-hand sides.  Unlike the standard yacc.c template, here we set
+   the default value of $$ to a zeroed-out value.  Since the default
+   value is undefined, this behavior is technically correct.  */
+static YYSTYPE yyval_default;]b4_locations_if([[
+static YYLTYPE yyloc_default][]b4_yyloc_default;])[
 
 /* Copy the second part of user declarations.  */
 ]b4_user_post_prologue
@@ -241,24 +238,17 @@ b4_percent_code_get[]dnl
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
 # endif
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
-
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 ]b4_c_function_def([YYID], [static int], [[int i], [i]])[
 {
@@ -289,31 +279,15 @@ b4_percent_code_get[]dnl
 #ifndef YYSETJMP
 # include <setjmp.h>
 # define YYJMP_BUF jmp_buf
-# define YYSETJMP(env) setjmp (env)
-# define YYLONGJMP(env, val) longjmp (env, val)
-#endif
-
-/*-----------------.
-| GCC extensions.  |
-`-----------------*/
-
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
-# endif
+# define YYSETJMP(Env) setjmp (Env)
+/* Pacify clang.  */
+# define YYLONGJMP(Env, Val) (longjmp (Env, Val), YYASSERT (0))
 #endif
 
-]b4_locations_if([#define YYOPTIONAL_LOC(Name) Name],[
-#ifdef __cplusplus
-# define YYOPTIONAL_LOC(Name) /* empty */
-#else
-# define YYOPTIONAL_LOC(Name) Name __attribute__ ((__unused__))
-#endif])[
+]b4_attribute_define[
 
 #ifndef YYASSERT
-# define YYASSERT(condition) ((void) ((condition) || (abort (), 0)))
+# define YYASSERT(Condition) ((void) ((Condition) || (abort (), 0)))
 #endif
 
 /* YYFINAL -- State number of the termination state.  */
@@ -474,28 +448,10 @@ static const ]b4_int_type_for([b4_stos])[ yystos[] =
 #define YYTERROR 1
 
 ]b4_locations_if([[
-#ifndef YYLLOC_DEFAULT
 ]b4_yylloc_default_define[
 # define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-# define YY_LOCATION_PRINT(File, Loc)                   \
-    fprintf (File, "%d.%d-%d.%d",                       \
-             (Loc).first_line, (Loc).first_column,      \
-             (Loc).last_line,  (Loc).last_column)
-#endif
-]],[
-#ifndef YYLLOC_DEFAULT
-# define YYLLOC_DEFAULT(Current, Rhs, N) ((void) 0)
-#endif
-])[
-
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+]])[
+]b4_yy_location_print_define[
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
 #define YYLEX ]b4_c_function_call([yylex], [int], b4_lex_param)[
@@ -972,8 +928,8 @@ yylhsNonterm (yyRuleNum yyrule)
   return yyr1[yyrule];
 }
 
-#define yypact_value_is_default(yystate) \
-  ]b4_table_value_equals([[pact]], [[yystate]], [b4_pact_ninf])[
+#define yypact_value_is_default(Yystate) \
+  ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
 
 /** True iff LR state STATE has only a default reduction (regardless
  *  of token).  */
@@ -990,8 +946,8 @@ yydefaultAction (yyStateNum yystate)
   return yydefact[yystate];
 }
 
-#define yytable_value_is_error(yytable_value) \
-  ]b4_table_value_equals([[table]], [[yytable_value]], [b4_table_ninf])[
+#define yytable_value_is_error(Yytable_value) \
+  ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
 
 /** Set *YYACTION to the action to take in YYSTATE on seeing YYTOKEN.
  *  Result R means
@@ -2040,10 +1996,10 @@ yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
 #if ! YYERROR_VERBOSE
   yyerror (]b4_lyyerror_args[YY_("syntax error"));
 #else
+  {
   yySymbol yytoken = yychar == YYEMPTY ? YYEMPTY : YYTRANSLATE (yychar);
   size_t yysize0 = yytnamerr (YY_NULL, yytokenName (yytoken));
   size_t yysize = yysize0;
-  size_t yysize1;
   yybool yysize_overflow = yyfalse;
   char* yymsg = YY_NULL;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
@@ -2103,9 +2059,11 @@ yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
                     break;
                   }
                 yyarg[yycount++] = yytokenName (yyx);
-                yysize1 = yysize + yytnamerr (YY_NULL, yytokenName (yyx));
-                yysize_overflow |= yysize1 < yysize;
-                yysize = yysize1;
+                {
+                  size_t yysz = yysize + yytnamerr (YY_NULL, yytokenName (yyx));
+                  yysize_overflow |= yysz < yysize;
+                  yysize = yysz;
+                }
               }
         }
     }
@@ -2125,9 +2083,11 @@ yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
 #undef YYCASE_
     }
 
-  yysize1 = yysize + strlen (yyformat);
-  yysize_overflow |= yysize1 < yysize;
-  yysize = yysize1;
+  {
+    size_t yysz = yysize + strlen (yyformat);
+    yysize_overflow |= yysz < yysize;
+    yysize = yysz;
+  }
 
   if (!yysize_overflow)
     yymsg = (char *) YYMALLOC (yysize);
@@ -2157,6 +2117,7 @@ yyreportSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
       yyerror (]b4_lyyerror_args[YY_("syntax error"));
       yyMemoryExhausted (yystackp);
     }
+  }
 #endif /* YYERROR_VERBOSE */
   yynerrs += 1;
 }
@@ -2294,14 +2255,9 @@ yyrecoverSyntaxError (yyGLRStack* yystackp]b4_user_formals[)
   YYDPRINTF ((stderr, "Starting parse\n"));
 
   yychar = YYEMPTY;
-  yylval = yyval_default;
-]b4_locations_if([
-#if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
-  yylloc.first_line   = yylloc.last_line   = ]b4_location_initial_line[;
-  yylloc.first_column = yylloc.last_column = ]b4_location_initial_column[;
-#endif
-])
-m4_ifdef([b4_initial_action], [
+  yylval = yyval_default;]b4_locations_if([
+  yylloc = yyloc_default;])[
+]m4_ifdef([b4_initial_action], [
 b4_dollar_pushdef([yylval], [], [yylloc])dnl
 /* User initialization code.  */
 b4_user_initial_action
@@ -2600,17 +2556,17 @@ yypdumpstack (yyGLRStack* yystackp)
 }
 #endif
 ]b4_epilogue[]dnl
-dnl
-dnl glr.cc produces its own header.
-dnl
+b4_output_end()
+
+# glr.cc produces its own header.
 m4_if(b4_skeleton, ["glr.c"],
 [b4_defines_if(
-[@output(b4_spec_defines_file@)@
+[b4_output_begin([b4_spec_defines_file])
 b4_copyright([Skeleton interface for Bison GLR parsers in C],
-             [2002-2012])[
+             [2002-2013])[
 
 ]b4_cpp_guard_open([b4_spec_defines_file])[
 ]b4_shared_declarations[
 ]b4_cpp_guard_close([b4_spec_defines_file])[
-]])])dnl
-m4_divert_pop(0)
+]b4_output_end()
+])])
index 826bc80..bb0234a 100644 (file)
@@ -2,7 +2,7 @@
 
 # C++ GLR skeleton for Bison
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -54,7 +54,7 @@ b4_defines_if([],
               [b4_fatal([b4_skeleton[: using %%defines is mandatory]])])
 
 m4_include(b4_pkgdatadir/[c++.m4])
-b4_percent_define_ifdef([[location_type]], [],
+b4_percent_define_ifdef([[api.location.type]], [],
                         [m4_include(b4_pkgdatadir/[location.cc])])
 
 m4_define([b4_parser_class_name],
@@ -87,12 +87,17 @@ m4_define([b4_yy_symbol_print_generate],
 ]b4_parse_param_use[]dnl
 [  yyparser.yy_symbol_print_ (yytype, yyvaluep]b4_locations_if([, yylocationp])[);
 }
-]])
+]])[
 
+# Hijack the initial action to initialize the locations.
+]b4_locations_if([b4_percent_define_ifdef([[api.location.type]], [],
+[m4_define([b4_initial_action],
+[yylloc.initialize ();]m4_ifdef([b4_initial_action], [
+m4_defn([b4_initial_action])]))])])[
 
 # Hijack the post prologue to insert early definition of YYLLOC_DEFAULT
 # and declaration of yyerror.
-m4_append([b4_post_prologue],
+]m4_append([b4_post_prologue],
 [b4_syncline([@oline@], [@ofile@])[
 ]b4_yylloc_default_define[
 #define YYRHSLOC(Rhs, K) ((Rhs)[K].yystate.yyloc)
@@ -162,12 +167,7 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
     std::ostream& yyoutput = debug_stream ();
     std::ostream& yyo = yyoutput;
     YYUSE (yyo);
-    switch (yytype)
-      {
-  ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
-[        default:
-          break;
-      }
+    ]b4_symbol_actions([printers])[
   }
 
 
@@ -211,7 +211,8 @@ m4_pushdef([b4_parse_param], m4_defn([b4_parse_param_orig]))dnl
 
 #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.
@@ -225,10 +226,9 @@ m4_defn([b4_parse_param]))],
 m4_include(b4_pkgdatadir/[glr.c])
 m4_popdef([b4_parse_param])
 
-m4_divert_push(0)
-@output(b4_spec_defines_file@)@
+b4_output_begin([b4_spec_defines_file])
 b4_copyright([Skeleton interface for Bison GLR parsers in C++],
-             [2002-2006, 2009-2012])[
+             [2002-2006, 2009-2013])[
 
 /* C++ GLR parser skeleton written by Akim Demaille.  */
 
@@ -238,7 +238,7 @@ b4_copyright([Skeleton interface for Bison GLR parsers in C++],
 
 # include <string>
 # include <iostream>
-]b4_percent_define_ifdef([[location_type]], [],
+]b4_percent_define_ifdef([[api.location.type]], [],
                          [[# include "location.hh"]])[
 
 ]b4_YYDEBUG_define[
@@ -262,7 +262,7 @@ b4_user_stype
     typedef ]b4_api_PREFIX[STYPE semantic_type;
 # endif
     /// Symbol locations.
-    typedef ]b4_percent_define_get([[location_type]],
+    typedef ]b4_percent_define_get([[api.location.type]],
                                    [[location]])[ location_type;
     /// Tokens.
     struct token
@@ -339,4 +339,4 @@ b4_percent_define_flag_if([[global_tokens_and_yystype]],
 ]b4_namespace_close[
 ]b4_percent_code_get([[provides]])[
 ]b4_cpp_guard_close([b4_spec_defines_file])[
-]m4_divert_pop(0)
+]b4_output_end()
index 81bf02a..384a637 100644 (file)
@@ -2,7 +2,7 @@
 
 # Java skeleton dispatching for Bison.
 
-# Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2013 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
index 18ea30b..7c2cfef 100644 (file)
@@ -2,7 +2,7 @@
 
 # Java language support for Bison
 
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007-2013 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
@@ -155,25 +155,25 @@ m4_define([b4_case], [  case $1:
 ## ---------------- ##
 
 m4_define([b4_yystype], [b4_percent_define_get([[stype]])])
-b4_percent_define_default([[stype]], [[Object]])])
+b4_percent_define_default([[stype]], [[Object]])
 
 # %name-prefix
 m4_define_default([b4_prefix], [[YY]])
 
-b4_percent_define_default([[parser_class_name]], [b4_prefix[]Parser])])
+b4_percent_define_default([[parser_class_name]], [b4_prefix[]Parser])
 m4_define([b4_parser_class_name], [b4_percent_define_get([[parser_class_name]])])
 
-b4_percent_define_default([[lex_throws]], [[java.io.IOException]])])
+b4_percent_define_default([[lex_throws]], [[java.io.IOException]])
 m4_define([b4_lex_throws], [b4_percent_define_get([[lex_throws]])])
 
-b4_percent_define_default([[throws]], [])])
+b4_percent_define_default([[throws]], [])
 m4_define([b4_throws], [b4_percent_define_get([[throws]])])
 
-b4_percent_define_default([[location_type]], [Location])])
-m4_define([b4_location_type], [b4_percent_define_get([[location_type]])])
+b4_percent_define_default([[api.location.type]], [Location])
+m4_define([b4_location_type], [b4_percent_define_get([[api.location.type]])])
 
-b4_percent_define_default([[position_type]], [Position])])
-m4_define([b4_position_type], [b4_percent_define_get([[position_type]])])
+b4_percent_define_default([[api.position.type]], [Position])
+m4_define([b4_position_type], [b4_percent_define_get([[api.position.type]])])
 
 
 ## ----------------- ##
@@ -219,9 +219,9 @@ m4_define([b4_rhs_location],
 # it to be single quoted.  Same for b4_parse_param.
 
 # TODO: should be in bison.m4
-m4_define_default([b4_lex_param], [[]]))
-m4_define([b4_lex_param], b4_lex_param))
-m4_define([b4_parse_param], b4_parse_param))
+m4_define_default([b4_lex_param], [[]])
+m4_define([b4_lex_param], b4_lex_param)
+m4_define([b4_parse_param], b4_parse_param)
 
 # b4_lex_param_decl
 # -------------------
index 82e6824..f656869 100644 (file)
@@ -1,6 +1,6 @@
 # C++ skeleton for Bison
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -24,19 +24,16 @@ m4_define([b4_parser_class_name],
 b4_defines_if([],
               [b4_fatal([b4_skeleton[: using %%defines is mandatory]])])
 
-b4_percent_define_ifdef([[location_type]], [],
+b4_percent_define_ifdef([[api.location.type]], [],
   [# Backward compatibility.
   m4_define([b4_location_constructors])
   m4_include(b4_pkgdatadir/[location.cc])])
 m4_include(b4_pkgdatadir/[stack.hh])
 
-# We do want M4 expansion after # for CPP macros.
-m4_changecom()
-m4_divert_push(0)dnl
 b4_defines_if(
-[@output(b4_spec_defines_file@)@
+[b4_output_begin([b4_spec_defines_file])
 b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
-             [2002-2012])
+             [2002-2013])
 [
 /**
  ** \file ]b4_spec_defines_file[
@@ -52,7 +49,7 @@ b4_copyright([Skeleton interface for Bison LALR(1) parsers in C++],
 #include <string>
 #include <iostream>
 #include "stack.hh"
-]b4_percent_define_ifdef([[location_type]], [],
+]b4_percent_define_ifdef([[api.location.type]], [],
                          [[#include "location.hh"]])[
 
 ]b4_YYDEBUG_define[
@@ -77,7 +74,7 @@ b4_user_stype
     typedef ]b4_api_PREFIX[STYPE semantic_type;
 #endif
     /// Symbol locations.
-    typedef ]b4_percent_define_get([[location_type]],
+    typedef ]b4_percent_define_get([[api.location.type]],
                                    [[location]])[ location_type;
     /// Tokens.
     struct token
@@ -110,6 +107,10 @@ b4_user_stype
 #endif
 
   private:
+    /// This class is not copyable.
+    ]b4_parser_class_name[ (const ]b4_parser_class_name[&);
+    ]b4_parser_class_name[& operator= (const ]b4_parser_class_name[&);
+
     /// Report a syntax error.
     /// \param loc    where the syntax error is found.
     /// \param msg    a description of the syntax error.
@@ -227,6 +228,7 @@ b4_user_stype
 
     /// \brief Reclaim the memory associated to a symbol.
     /// \param yymsg        Why this token is reclaimed.
+    ///                     If null, do not display the symbol, just free it.
     /// \param yytype       The symbol type.
     /// \param yyvaluep     Its semantic value.
     /// \param yylocationp  Its location.
@@ -264,10 +266,13 @@ b4_user_stype
 ])[
 ]b4_percent_code_get([[provides]])[
 ]b4_cpp_guard_close([b4_spec_defines_file])
-])dnl
-@output(b4_parser_file_name@)@
+b4_output_end()
+])
+
+
+b4_output_begin([b4_parser_file_name])
 b4_copyright([Skeleton implementation for Bison LALR(1) parsers in C++],
-             [2002-2012])
+             [2002-2013])
 b4_percent_code_get([[top]])[]dnl
 m4_if(b4_prefix, [yy], [],
 [
@@ -335,9 +340,9 @@ do {                                        \
 #else /* !]b4_api_PREFIX[DEBUG */
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_REDUCE_PRINT(Rule)
-# define YY_STACK_PRINT()
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
+# define YY_REDUCE_PRINT(Rule)        static_cast<void>(0)
+# define YY_STACK_PRINT()             static_cast<void>(0)
 
 #endif /* !]b4_api_PREFIX[DEBUG */
 
@@ -417,12 +422,7 @@ do {                                       \
     std::ostream& yyo = debug_stream ();
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
-    switch (yytype)
-      {
-  ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_printers]))dnl
-[       default:
-         break;
-      }
+    ]b4_symbol_actions([printers])[
   }
 
 
@@ -446,14 +446,10 @@ do {                                      \
     YYUSE (yymsg);
     YYUSE (yyvaluep);
 
-    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+    if (yymsg)
+      YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-    switch (yytype)
-      {
-  ]m4_map([b4_symbol_actions], m4_defn([b4_symbol_destructors]))[
-       default:
-         break;
-      }
+    ]b4_symbol_actions([destructors])[
   }
 
   void
@@ -510,17 +506,18 @@ do {                                      \
     int yychar = yyempty_;
     int yytoken = 0;
 
-    /* State.  */
+    // State.
     int yyn;
     int yylen = 0;
     int yystate = 0;
 
-    /* Error handling.  */
+    // Error handling.
     int yynerrs_ = 0;
     int yyerrstatus_ = 0;
 
     /// Semantic value of the lookahead.
-    semantic_type yylval;
+    static semantic_type yyval_default;
+    semantic_type yylval = yyval_default;
     /// Location of the lookahead.
     location_type yylloc;
     /// The locations where the error started and ended.
@@ -533,6 +530,10 @@ do {                                       \
 
     int yyresult;
 
+    // FIXME: This shoud be completely indented.  It is not yet to
+    // avoid gratuitous conflicts when merging into the master branch.
+    try
+      {
     YYCDEBUG << "Starting parse" << std::endl;
 
 ]m4_ifdef([b4_initial_action], [
@@ -545,9 +546,9 @@ b4_dollar_popdef])[]dnl
        yynewstate, since the latter expects the semantical and the
        location values to have been already stored, initialize these
        stacks with a primary value.  */
-    yystate_stack_ = state_stack_type (0);
-    yysemantic_stack_ = semantic_stack_type (0);
-    yylocation_stack_ = location_stack_type (0);
+    yystate_stack_.clear ();
+    yysemantic_stack_.clear ();
+    yylocation_stack_.clear ();
     yysemantic_stack_.push (yylval);
     yylocation_stack_.push (yylloc);
 
@@ -573,14 +574,13 @@ b4_dollar_popdef])[]dnl
     /* Read a lookahead token.  */
     if (yychar == yyempty_)
       {
-       YYCDEBUG << "Reading a token: ";
-       yychar = ]b4_c_function_call([yylex], [int],
-                                    [b4_api_PREFIX[STYPE*], [&yylval]][]dnl
+        YYCDEBUG << "Reading a token: ";
+        yychar = ]b4_c_function_call([yylex], [int],
+                                     [b4_api_PREFIX[STYPE*], [&yylval]][]dnl
 b4_locations_if([, [[location*], [&yylloc]]])dnl
 m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
       }
 
-
     /* Convert token to internal form.  */
     if (yychar <= yyeof_)
       {
@@ -651,17 +651,21 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
     else
       yyval = yysemantic_stack_[0];
 
+    // Compute the default @@$.
     {
       slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
       YYLLOC_DEFAULT (yyloc, slice, yylen);
     }
+
+    // Perform the reduction.
     YY_REDUCE_PRINT (yyn);
     switch (yyn)
       {
-       ]b4_user_actions[
-       default:
-          break;
+        ]b4_user_actions[
+      default:
+        break;
       }
+
     /* User semantic actions sometimes alter yychar, and that requires
        that yytoken be updated with the new translation.  We take the
        approach of translating immediately before every use of yytoken.
@@ -712,20 +716,19 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
     yyerror_range[1] = yylloc;
     if (yyerrstatus_ == 3)
       {
-       /* If just tried and failed to reuse lookahead token after an
-        error, discard it.  */
-
-       if (yychar <= yyeof_)
-         {
-         /* Return failure if at end of input.  */
-         if (yychar == yyeof_)
-           YYABORT;
-         }
-       else
-         {
-           yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
-           yychar = yyempty_;
-         }
+        /* If just tried and failed to reuse lookahead token after an
+           error, discard it.  */
+        if (yychar <= yyeof_)
+          {
+            /* Return failure if at end of input.  */
+            if (yychar == yyeof_)
+              YYABORT;
+          }
+        else
+          {
+            yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
+            yychar = yyempty_;
+          }
       }
 
     /* Else will try to reuse lookahead token after shifting the error
@@ -774,7 +777,7 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
 
        /* Pop the current state because it cannot handle the error token.  */
        if (yystate_stack_.height () == 1)
-       YYABORT;
+         YYABORT;
 
        yyerror_range[1] = yylocation_stack_[0];
        yydestruct_ ("Error: popping",
@@ -822,16 +825,42 @@ m4_ifdef([b4_lex_param], [, ]b4_lex_param))[;
     /* Do not reclaim the symbols of the rule which action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
-    while (yystate_stack_.height () != 1)
+    while (1 < yystate_stack_.height ())
       {
-       yydestruct_ ("Cleanup: popping",
-                  yystos_[yystate_stack_[0]],
-                  &yysemantic_stack_[0],
-                  &yylocation_stack_[0]);
-       yypop_ ();
+        yydestruct_ ("Cleanup: popping",
+                     yystos_[yystate_stack_[0]],
+                     &yysemantic_stack_[0],
+                     &yylocation_stack_[0]);
+        yypop_ ();
       }
 
     return yyresult;
+    }
+    catch (...)
+      {
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+                 << std::endl;
+        // Do not try to display the values of the reclaimed symbols,
+        // as their printer might throw an exception.
+        if (yychar != yyempty_)
+          {
+            /* Make sure we have latest lookahead translation.  See
+               comments at user semantic actions for why this is
+               necessary.  */
+            yytoken = yytranslate_ (yychar);
+            yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
+          }
+
+        while (1 < yystate_stack_.height ())
+          {
+            yydestruct_ (YY_NULL,
+                         yystos_[yystate_stack_[0]],
+                         &yysemantic_stack_[0],
+                         &yylocation_stack_[0]);
+            yypop_ ();
+          }
+        throw;
+      }
   }
 
   // Generate an error message.
@@ -1105,4 +1134,4 @@ b4_error_verbose_if([int yystate, int yytoken],
 
 ]b4_namespace_close[
 ]b4_epilogue[]dnl
-m4_divert_pop(0)
+b4_output_end()
index d1410a1..7a7f763 100644 (file)
@@ -1,6 +1,6 @@
 # Java skeleton for Bison -*- autoconf -*-
 
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007-2013 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
@@ -22,10 +22,9 @@ m4_ifval(m4_defn([b4_symbol_destructors]),
         [b4_fatal([%s: %%destructor does not make sense in Java], [b4_skeleton])],
         [])
 
-m4_divert_push(0)dnl
-@output(b4_parser_file_name@)@
+b4_output_begin([b4_parser_file_name])
 b4_copyright([Skeleton implementation for Bison LALR(1) parsers in Java],
-             [2007-2012])
+             [2007-2013])
 
 b4_percent_define_ifdef([package], [package b4_percent_define_get([package]);
 ])[/* First part of user declarations.  */
@@ -925,4 +924,4 @@ b4_percent_code_get[]dnl
 }
 
 b4_epilogue
-m4_divert_pop(0)dnl
+b4_output_end()
index b7383d6..f5011c6 100644 (file)
@@ -1,6 +1,6 @@
 # C++ skeleton for Bison
 
-# Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2007, 2009-2013 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
 # You should have received a copy of the GNU General Public License
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
-# We do want M4 expansion after # for CPP macros.
-m4_changecom()
-m4_divert_push(0)dnl
-@output(b4_dir_prefix[]position.hh@)@
+
+b4_output_begin([b4_dir_prefix[]position.hh])
 b4_copyright([Positions for Bison parsers in C++],
-             [2002-2007, 2009-2012])[
+             [2002-2007, 2009-2013])[
 
 /**
  ** \file ]b4_dir_prefix[position.hh
@@ -30,7 +28,7 @@ b4_copyright([Positions for Bison parsers in C++],
 ]b4_cpp_guard_open([b4_dir_prefix[]position.hh])[
 
 # include <algorithm> // std::max
-# include <iosfwd>
+# include <iostream>
 # include <string>
 
 ]b4_null_define[
@@ -87,7 +85,7 @@ b4_copyright([Positions for Bison parsers in C++],
   };
 
   /// Add and assign a position.
-  inline const position&
+  inline position&
   operator+= (position& res, const int width)
   {
     res.columns (width);
@@ -103,7 +101,7 @@ b4_copyright([Positions for Bison parsers in C++],
   }
 
   /// Add and assign a position.
-  inline const position&
+  inline position&
   operator-= (position& res, const int width)
   {
     return res += -width;
@@ -138,8 +136,9 @@ b4_copyright([Positions for Bison parsers in C++],
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
    */
-  inline std::ostream&
-  operator<< (std::ostream& ostr, const position& pos)
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
   {
     if (pos.filename)
       ostr << *pos.filename << ':';
@@ -148,9 +147,12 @@ b4_copyright([Positions for Bison parsers in C++],
 
 ]b4_namespace_close[
 ]b4_cpp_guard_close([b4_dir_prefix[]position.hh])
-@output(b4_dir_prefix[]location.hh@)@
+b4_output_end()
+
+
+b4_output_begin([b4_dir_prefix[]location.hh])
 b4_copyright([Locations for Bison parsers in C++],
-             [2002-2007, 2009-2012])[
+             [2002-2007, 2009-2013])[
 
 /**
  ** \file ]b4_dir_prefix[location.hh
@@ -159,8 +161,6 @@ b4_copyright([Locations for Bison parsers in C++],
 
 ]b4_cpp_guard_open([b4_dir_prefix[]location.hh])[
 
-# include <iostream>
-# include <string>
 # include "position.hh"
 
 ]b4_namespace_open[
@@ -276,7 +276,9 @@ b4_copyright([Locations for Bison parsers in C++],
    **
    ** Avoid duplicate information.
    */
-  inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
     position last = loc.end - 1;
     ostr << loc.begin;
@@ -294,5 +296,4 @@ b4_copyright([Locations for Bison parsers in C++],
 ]b4_namespace_close[
 
 ]b4_cpp_guard_close([b4_dir_prefix[]location.hh])
-m4_divert_pop(0)
-m4_changecom([#])
+b4_output_end()
index 278bc05..12a9ab7 100644 (file)
@@ -2038,10 +2038,10 @@ m4_define([m4_before],
 # - NAME-TO-CHECK == BODY-TO-EXPAND
 #   Which you can use for regular macros with or without arguments, e.g.,
 #     m4_require([AC_PROG_CC], [AC_PROG_CC])
-#     m4_require([AC_CHECK_HEADERS(limits.h)], [AC_CHECK_HEADERS(limits.h)])
+#     m4_require([AC_CHECK_HEADERS(threads.h)], [AC_CHECK_HEADERS(threads.h)])
 #   which is just the same as
 #     m4_require([AC_PROG_CC])
-#     m4_require([AC_CHECK_HEADERS(limits.h)])
+#     m4_require([AC_CHECK_HEADERS(threads.h)])
 #
 # - BODY-TO-EXPAND == m4_indir([NAME-TO-CHECK])
 #   In the case of macros with irregular names.  For instance:
index ddedc79..317a061 100644 (file)
@@ -1,6 +1,6 @@
 # C++ skeleton for Bison
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
 # along with this program.  If not, see <http://www.gnu.org/licenses/>.
 
 m4_pushdef([b4_copyright_years],
-           [2002-2012])
+           [2002-2013])
 
-# We do want M4 expansion after # for CPP macros.
-m4_changecom()
-m4_divert_push(0)dnl
-@output(b4_dir_prefix[]stack.hh@)@
+b4_output_begin([b4_dir_prefix[]stack.hh])
 b4_copyright([Stack handling for Bison parsers in C++],
-             [2002-2012])[
+             [2002-2013])[
 
 /**
  ** \file ]b4_dir_prefix[stack.hh
@@ -80,6 +77,12 @@ b4_copyright([Stack handling for Bison parsers in C++],
         seq_.pop_front ();
     }
 
+    void
+    clear ()
+    {
+      seq_.clear ();
+    }
+
     inline
     unsigned int
     height () const
@@ -91,6 +94,8 @@ b4_copyright([Stack handling for Bison parsers in C++],
     inline const_iterator end () const { return seq_.rend (); }
 
   private:
+    stack (const stack&);
+    stack& operator= (const stack&);
     S seq_;
   };
 
@@ -119,6 +124,6 @@ b4_copyright([Stack handling for Bison parsers in C++],
 ]b4_namespace_close[
 
 ]b4_cpp_guard_close([b4_dir_prefix[]stack.hh])
-m4_divert_pop(0)
-m4_popdef([b4_copyright_years])dnl
-m4_changecom([#])
+b4_output_end()
+
+m4_popdef([b4_copyright_years])
index 353c75a..10e3305 100644 (file)
@@ -3,7 +3,7 @@
 <!--
     bison.xsl - common templates for Bison XSLT.
 
-    Copyright (C) 2007-2012 Free Software Foundation, Inc.
+    Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
     This file is part of Bison, the GNU Compiler Compiler.
 
   <xsl:value-of select="string-length(translate($conflict-data, 's', ''))"/>
 </xsl:template>
 
+<xsl:template name="space">
+  <xsl:param name="repeat">0</xsl:param>
+  <xsl:param name="fill" select="' '"/>
+  <xsl:if test="number($repeat) &gt;= 1">
+    <xsl:call-template name="space">
+      <xsl:with-param name="repeat" select="$repeat - 1"/>
+      <xsl:with-param name="fill" select="$fill"/>
+    </xsl:call-template>
+    <xsl:value-of select="$fill"/>
+  </xsl:if>
+</xsl:template>
+
 </xsl:stylesheet>
index 219faa2..3d7939f 100644 (file)
@@ -3,7 +3,7 @@
 <!--
     xml2dot.xsl - transform Bison XML Report into DOT.
 
-    Copyright (C) 2007-2012 Free Software Foundation, Inc.
+    Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
     This file is part of Bison, the GNU Compiler Compiler.
 
   <xsl:call-template name="escape">
     <xsl:with-param name="subject" select="$filename"/>
   </xsl:call-template>
-  <xsl:text>"&#10;{&#10;</xsl:text>
+  <xsl:text>"&#10;{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+</xsl:text>
   <xsl:apply-templates select="state"/>
   <xsl:text>}&#10;</xsl:text>
 </xsl:template>
   <xsl:call-template name="output-node">
     <xsl:with-param name="number" select="@number"/>
     <xsl:with-param name="label">
-      <xsl:value-of select="@number"/>
       <xsl:apply-templates select="itemset/item"/>
     </xsl:with-param>
   </xsl:call-template>
   <xsl:apply-templates select="actions/transitions"/>
+  <xsl:apply-templates select="actions/reductions">
+    <xsl:with-param name="staten">
+      <xsl:value-of select="@number"/>
+    </xsl:with-param>
+  </xsl:apply-templates>
+</xsl:template>
+
+<xsl:template match="actions/reductions">
+  <xsl:param name="staten"/>
+  <xsl:for-each select='reduction'>
+    <!-- These variables are needed because the current context can't be
+         refered to directly in XPath expressions. -->
+    <xsl:variable name="rul">
+      <xsl:value-of select="@rule"/>
+    </xsl:variable>
+    <xsl:variable name="ena">
+      <xsl:value-of select="@enabled"/>
+    </xsl:variable>
+    <!-- The foreach's body is protected by this, so that we are actually
+         going to iterate once per reduction rule, and not per lookahead. -->
+    <xsl:if test='not(preceding-sibling::*[@rule=$rul and @enabled=$ena])'>
+      <xsl:variable name="rule">
+        <xsl:choose>
+          <!-- The acceptation state is refered to as 'accept' in the XML, but
+               just as '0' in the DOT. -->
+          <xsl:when test="@rule='accept'">
+            <xsl:text>0</xsl:text>
+          </xsl:when>
+          <xsl:otherwise>
+            <xsl:value-of select="@rule"/>
+          </xsl:otherwise>
+        </xsl:choose>
+      </xsl:variable>
+
+      <!-- The edge's beginning -->
+      <xsl:call-template name="reduction-edge-start">
+        <xsl:with-param name="state" select="$staten"/>
+        <xsl:with-param name="rule" select="$rule"/>
+        <xsl:with-param name="enabled" select="@enabled"/>
+      </xsl:call-template>
+
+      <!-- The edge's tokens -->
+      <!-- Don't show labels for the default action. In other cases, there will
+           always be at least one token, so 'label="[]"' will not occur. -->
+      <xsl:if test='$rule!=0 and not(../reduction[@enabled=$ena and @rule=$rule and @symbol="$default"])'>
+        <xsl:text>label="[</xsl:text>
+        <xsl:for-each select='../reduction[@enabled=$ena and @rule=$rule]'>
+          <xsl:call-template name="escape">
+            <xsl:with-param name="subject" select="@symbol"/>
+          </xsl:call-template>
+          <xsl:if test="position() != last ()">
+            <xsl:text>, </xsl:text>
+          </xsl:if>
+        </xsl:for-each>
+        <xsl:text>]", </xsl:text>
+      </xsl:if>
+
+      <!-- The edge's end -->
+      <xsl:text>style=solid]&#10;</xsl:text>
+
+      <!-- The diamond representing the reduction -->
+      <xsl:call-template name="reduction-node">
+        <xsl:with-param name="state" select="$staten"/>
+        <xsl:with-param name="rule" select="$rule"/>
+        <xsl:with-param name="color">
+          <xsl:choose>
+            <xsl:when test='@enabled="true"'>
+              <xsl:text>3</xsl:text>
+            </xsl:when>
+            <xsl:otherwise>
+              <xsl:text>5</xsl:text>
+            </xsl:otherwise>
+          </xsl:choose>
+        </xsl:with-param>
+      </xsl:call-template>
+    </xsl:if>
+  </xsl:for-each>
 </xsl:template>
 
 <xsl:template match="actions/transitions">
 </xsl:template>
 
 <xsl:template match="item">
+  <xsl:param name="prev-rule-number"
+    select="preceding-sibling::item[1]/@rule-number"/>
   <xsl:apply-templates select="key('bison:ruleByNumber', @rule-number)">
     <xsl:with-param name="point" select="@point"/>
+    <xsl:with-param name="num" select="@rule-number"/>
+    <xsl:with-param name="prev-lhs"
+      select="key('bison:ruleByNumber', $prev-rule-number)/lhs[text()]"
+   />
   </xsl:apply-templates>
   <xsl:apply-templates select="lookaheads"/>
 </xsl:template>
 
 <xsl:template match="rule">
   <xsl:param name="point"/>
+  <xsl:param name="num"/>
+  <xsl:param name="prev-lhs"/>
   <xsl:text>&#10;</xsl:text>
-  <xsl:value-of select="lhs"/>
-  <xsl:text> -&gt;</xsl:text>
+  <xsl:choose>
+    <xsl:when test="$num &lt; 10">
+      <xsl:text>  </xsl:text>
+    </xsl:when>
+    <xsl:when test="$num &lt; 100">
+      <xsl:text> </xsl:text>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:text></xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
+  <xsl:value-of select="$num"/>
+  <xsl:text> </xsl:text>
+  <xsl:choose>
+  <xsl:when test="$prev-lhs = lhs[text()]">
+      <xsl:call-template name="lpad">
+        <xsl:with-param name="str" select="'|'"/>
+        <xsl:with-param name="pad" select="number(string-length(lhs[text()])) + 1"/>
+      </xsl:call-template>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:value-of select="lhs"/>
+      <xsl:text>:</xsl:text>
+    </xsl:otherwise>
+  </xsl:choose>
   <xsl:if test="$point = 0">
     <xsl:text> .</xsl:text>
   </xsl:if>
 <xsl:template match="empty"/>
 
 <xsl:template match="lookaheads">
-  <xsl:text>[</xsl:text>
+  <xsl:text>  [</xsl:text>
   <xsl:apply-templates select="symbol"/>
   <xsl:text>]</xsl:text>
 </xsl:template>
   </xsl:if>
 </xsl:template>
 
+<xsl:template name="reduction-edge-start">
+  <xsl:param name="state"/>
+  <xsl:param name="rule"/>
+  <xsl:param name="enabled"/>
+
+  <xsl:text>  </xsl:text>
+  <xsl:value-of select="$state"/>
+  <xsl:text> -> "</xsl:text>
+  <xsl:value-of select="$state"/>
+  <xsl:text>R</xsl:text>
+  <xsl:value-of select="$rule"/>
+  <xsl:if test='$enabled = "false"'>
+    <xsl:text>d</xsl:text>
+  </xsl:if>
+  <xsl:text>" [</xsl:text>
+</xsl:template>
+
+<xsl:template name="reduction-node">
+  <xsl:param name="state"/>
+  <xsl:param name="rule"/>
+  <xsl:param name="color"/>
+
+  <xsl:text> "</xsl:text>
+  <xsl:value-of select="$state"/>
+  <xsl:text>R</xsl:text>
+  <xsl:value-of select="$rule"/>
+  <xsl:if test="$color = 5">
+    <xsl:text>d</xsl:text>
+  </xsl:if>
+  <xsl:text>" [label="</xsl:text>
+  <xsl:choose>
+  <xsl:when test="$rule = 0">
+    <xsl:text>Acc", fillcolor=1</xsl:text>
+  </xsl:when>
+  <xsl:otherwise>
+    <xsl:text>R</xsl:text>
+    <xsl:value-of select="$rule"/>
+    <xsl:text>", fillcolor=</xsl:text>
+    <xsl:value-of select="$color"/>
+  </xsl:otherwise>
+  </xsl:choose>
+  <xsl:text>, shape=diamond, style=filled]&#10;</xsl:text>
+</xsl:template>
+
 <xsl:template match="transition">
   <xsl:call-template name="output-edge">
     <xsl:with-param name="src" select="../../../@number"/>
   <xsl:text>  </xsl:text>
   <xsl:value-of select="$number"/>
   <xsl:text> [label="</xsl:text>
+  <xsl:text>State </xsl:text>
+  <xsl:value-of select="$number"/>
+  <xsl:text>\n</xsl:text>
   <xsl:call-template name="escape">
     <xsl:with-param name="subject" select="$label"/>
   </xsl:call-template>
-  <xsl:text>"]&#10;</xsl:text>
+  <xsl:text>\l"]&#10;</xsl:text>
 </xsl:template>
 
 <xsl:template name="output-edge">
       </xsl:call-template>
     </xsl:with-param>
     <xsl:with-param name="search" select="'&#10;'"/>
-    <xsl:with-param name="replace" select="'\n'"/>
+    <xsl:with-param name="replace" select="'\l'"/>
   </xsl:call-template>
 </xsl:template>
 
   </xsl:choose>
 </xsl:template>
 
+<xsl:template name="lpad">
+  <xsl:param name="str" select="''"/>
+  <xsl:param name="pad" select="0"/>
+  <xsl:variable name="diff" select="$pad - string-length($str)" />
+  <xsl:choose>
+    <xsl:when test="$diff &lt; 0">
+      <xsl:value-of select="$str"/>
+    </xsl:when>
+    <xsl:otherwise>
+      <xsl:call-template name="space">
+        <xsl:with-param name="repeat" select="$diff"/>
+      </xsl:call-template>
+      <xsl:value-of select="$str"/>
+    </xsl:otherwise>
+  </xsl:choose>
+</xsl:template>
+
 </xsl:stylesheet>
index d14f1be..d479a8e 100644 (file)
@@ -3,7 +3,7 @@
 <!--
     xml2text.xsl - transform Bison XML Report into plain text.
 
-    Copyright (C) 2007-2012 Free Software Foundation, Inc.
+    Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
     This file is part of Bison, the GNU Compiler Compiler.
 
 <xsl:template match="automaton/state">
   <xsl:param name="pad"/>
   <xsl:text>&#10;&#10;</xsl:text>
-  <xsl:text>state </xsl:text>
+  <xsl:text>State </xsl:text>
   <xsl:value-of select="@number"/>
   <xsl:text>&#10;&#10;</xsl:text>
   <xsl:apply-templates select="itemset/item">
   </xsl:choose>
 </xsl:template>
 
-<xsl:template name="space">
-  <xsl:param name="repeat">0</xsl:param>
-  <xsl:param name="fill" select="' '"/>
-  <xsl:if test="number($repeat) &gt;= 1">
-    <xsl:call-template name="space">
-      <xsl:with-param name="repeat" select="$repeat - 1"/>
-      <xsl:with-param name="fill" select="$fill"/>
-    </xsl:call-template>
-    <xsl:value-of select="$fill"/>
-  </xsl:if>
-</xsl:template>
-
 <xsl:template name="line-wrap">
   <xsl:param name="line-length"/> <!-- required -->
   <xsl:param name="first-line-length" select="$line-length"/>
index f8126cf..4e747b2 100644 (file)
@@ -3,7 +3,7 @@
 <!--
     xml2html.xsl - transform Bison XML Report into XHTML.
 
-    Copyright (C) 2007-2012 Free Software Foundation, Inc.
+    Copyright (C) 2007-2013 Free Software Foundation, Inc.
 
     This file is part of Bison, the GNU Compiler Compiler.
 
index 0175688..3608923 100644 (file)
@@ -2,7 +2,7 @@
 
 # Yacc compatible skeleton for Bison
 
-# Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation,
+# Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -65,24 +65,36 @@ m4_define_default([b4_stack_depth_init],  [200])
 ## ------------------------ ##
 
 b4_percent_define_default([[api.pure]], [[false]])
-b4_define_flag_if([pure])
-m4_define([b4_pure_flag],
-          [b4_percent_define_flag_if([[api.pure]], [[1]], [[0]])])
-
-# b4_yacc_pure_if(IF-TRUE, IF-FALSE)
-# ----------------------------------
-# Expand IF-TRUE, if %pure-parser and %parse-param, IF-FALSE otherwise.
-m4_define([b4_yacc_pure_if],
-[b4_pure_if([m4_ifset([b4_parse_param],
-                     [$1], [$2])],
-           [$2])])
-
+b4_percent_define_check_values([[[[api.pure]],
+                                 [[false]], [[true]], [[]], [[full]]]])
+
+m4_define([b4_pure_flag], [[0]])
+m4_case(b4_percent_define_get([[api.pure]]),
+        [false], [m4_define([b4_pure_flag], [[0]])],
+        [true],  [m4_define([b4_pure_flag], [[1]])],
+        [],      [m4_define([b4_pure_flag], [[1]])],
+        [full],  [m4_define([b4_pure_flag], [[2]])])
+
+m4_define([b4_pure_if],
+[m4_case(b4_pure_flag,
+         [0], [$2],
+         [1], [$1],
+         [2], [$1])])
+         [m4_fatal([invalid api.pure value: ]$1)])])
+
+# b4_yyerror_arg_loc_if(ARG)
+# --------------------------
+# Expand ARG iff yyerror is to be given a location as argument.
+m4_define([b4_yyerror_arg_loc_if],
+[b4_locations_if([m4_case(b4_pure_flag,
+                          [1], [m4_ifset([b4_parse_param], [$1])],
+                          [2], [$1])])])
 
 # b4_yyerror_args
 # ---------------
 # Arguments passed to yyerror: user args plus yylloc.
 m4_define([b4_yyerror_args],
-[b4_yacc_pure_if([b4_locations_if([&yylloc, ])])dnl
+[b4_yyerror_arg_loc_if([&yylloc, ])dnl
 m4_ifset([b4_parse_param], [b4_c_args(b4_parse_param), ])])
 
 
@@ -170,11 +182,36 @@ m4_define([b4_declare_scanner_communication_variables], [[
 /* The lookahead symbol.  */
 int yychar;
 
+]b4_pure_if([[
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+static YYSTYPE yyval_default;
+# define YY_INITIAL_VALUE(Value) = Value
+#endif]b4_locations_if([[
+static YYLTYPE yyloc_default][]b4_yyloc_default[;]])])[
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;]b4_locations_if([[
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);]b4_locations_if([[
 
 /* Location data for the lookahead symbol.  */
-YYLTYPE yylloc;]])b4_pure_if([], [[
+YYLTYPE yylloc]b4_pure_if([ = yyloc_default], [b4_yyloc_default])[;
+]])b4_pure_if([], [[
 
 /* Number of syntax errors so far.  */
 int yynerrs;]])])
@@ -242,7 +279,7 @@ typedef struct ]b4_prefix[pstate ]b4_prefix[pstate;
   [[b4_prefix[pstate *ps]], [[ps]]]b4_pure_if([,
   [[[int pushed_char]], [[pushed_char]]],
   [[b4_api_PREFIX[STYPE const *pushed_val]], [[pushed_val]]]b4_locations_if([,
-  [[b4_api_PREFIX[LTYPE const *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [,
+  [[b4_api_PREFIX[LTYPE *pushed_loc]], [[pushed_loc]]]])])m4_ifset([b4_parse_param], [,
   b4_parse_param]))
 b4_pull_if([b4_c_function_decl([b4_prefix[pull_parse]], [[int]],
   [[b4_prefix[pstate *ps]], [[ps]]]m4_ifset([b4_parse_param], [,
@@ -289,16 +326,14 @@ m4_define([b4_shared_declarations],
 ]b4_cpp_guard_close([b4_spec_defines_file])[]dnl
 ])
 
+
 ## -------------- ##
 ## Output files.  ##
 ## -------------- ##
 
-# We do want M4 expansion after # for CPP macros.
-m4_changecom()
-m4_divert_push(0)dnl
-@output(b4_parser_file_name@)@
+b4_output_begin([b4_parser_file_name])
 b4_copyright([Bison implementation for Yacc-like parsers in C],
-             [1984, 1989-1990, 2000-2012])[
+             [1984, 1989-1990, 2000-2013])[
 
 /* C LALR(1) parser skeleton written by Richard Stallman, by
    simplifying the original so-called "semantic" parser.  */
@@ -345,9 +380,11 @@ m4_if(b4_api_prefix, [yy], [],
 # define YYERROR_VERBOSE ]b4_error_verbose_flag[
 #endif
 
-/* In a future release of Bison, this section will be replaced
+]m4_ifval(m4_quote(b4_spec_defines_file),
+[[/* In a future release of Bison, this section will be replaced
    by #include "@basename(]b4_spec_defines_file[@)".  */
-]b4_shared_declarations[
+]])dnl
+b4_shared_declarations[
 
 /* Copy the second part of user declarations.  */
 ]b4_user_post_prologue
@@ -402,24 +439,19 @@ typedef short int yytype_int16;
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
 # endif
 #endif
 
-/* Suppress unused-variable warnings by "using" E.  */
-#if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
-#else
-# define YYUSE(e) /* empty */
-#endif
+]b4_attribute_define[
 
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 ]b4_c_function_def([YYID], [static int], [[int yyi], [yyi]])[
 {
@@ -678,11 +710,11 @@ static const ]b4_int_type_for([b4_table])[ yytable[] =
   ]b4_table[
 };
 
-#define yypact_value_is_default(yystate) \
-  ]b4_table_value_equals([[pact]], [[yystate]], [b4_pact_ninf])[
+#define yypact_value_is_default(Yystate) \
+  ]b4_table_value_equals([[pact]], [[Yystate]], [b4_pact_ninf])[
 
-#define yytable_value_is_error(yytable_value) \
-  ]b4_table_value_equals([[table]], [[yytable_value]], [b4_table_ninf])[
+#define yytable_value_is_error(Yytable_value) \
+  ]b4_table_value_equals([[table]], [[Yytable_value]], [b4_table_ninf])[
 
 static const ]b4_int_type_for([b4_check])[ yycheck[] =
 {
@@ -741,40 +773,17 @@ do                                                              \
     }                                                          \
 while (YYID (0))
 
-
+/* Error token number */
 #define YYTERROR       1
 #define YYERRCODE      256
 
+]b4_locations_if([[
 ]b4_yylloc_default_define[
 #define YYRHSLOC(Rhs, K) ((Rhs)[K])
-]b4_locations_if([[
-
-
-/* YY_LOCATION_PRINT -- Print the location on the stream.
-   This macro was not mandated originally: define only if we know
-   we won't break user code: when these are the locations we know.  */
-
-#ifndef YY_LOCATION_PRINT
-# if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)                 \
-     fprintf (File, "%d.%d-%d.%d",                     \
-             (Loc).first_line, (Loc).first_column,     \
-             (Loc).last_line,  (Loc).last_column)
-# else
-#  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-# endif
-#endif]], [[
-
-
-/* This macro is provided for backward compatibility. */
-
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif]])[
-
+]])[
+]b4_yy_location_print_define[
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
-
 #ifdef YYLEX_PARAM
 # define YYLEX yylex (]b4_pure_if([&yylval[]b4_locations_if([, &yylloc]), ])[YYLEX_PARAM)
 #else
@@ -1233,7 +1242,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 {
   YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
-  YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
   const char *yyformat = YY_NULL;
@@ -1314,11 +1322,13 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                     break;
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
-                if (! (yysize <= yysize1
-                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                  return 2;
-                yysize = yysize1;
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
               }
         }]b4_lac_if([[
 # if ]b4_api_PREFIX[DEBUG
@@ -1342,10 +1352,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 # undef YYCASE_
     }
 
-  yysize1 = yysize + yystrlen (yyformat);
-  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-    return 2;
-  yysize = yysize1;
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
 
   if (*yymsg_alloc < yysize)
     {
@@ -1407,7 +1419,8 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   yypstate *yyps_local;]b4_pure_if([[
   int yychar;
   YYSTYPE yylval;]b4_locations_if([[
-  YYLTYPE yylloc;]])])[
+  static YYLTYPE yyloc_default][]b4_yyloc_default[;
+  YYLTYPE yylloc = yyloc_default;]])])[
   if (yyps)
     yyps_local = yyps;
   else
@@ -1487,7 +1500,7 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   [[[yypstate *yyps]], [[yyps]]]b4_pure_if([,
   [[[int yypushed_char]], [[yypushed_char]]],
   [[[YYSTYPE const *yypushed_val]], [[yypushed_val]]]b4_locations_if([,
-  [[[YYLTYPE const *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
+  [[[YYLTYPE *yypushed_loc]], [[yypushed_loc]]]])])m4_ifset([b4_parse_param], [,
   b4_parse_param]))], [[
 
 
@@ -1513,7 +1526,7 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;]b4_locations_if([[
@@ -1538,10 +1551,9 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
       goto yyread_pushed_token;
     }]])[
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;]b4_locations_if([[
-  yyls = yylsa;]])[
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;]b4_locations_if([[
+  yylsp = yyls = yylsa;]])[
   yystacksize = YYINITDEPTH;]b4_lac_if([[
 
   yyes = yyesa;
@@ -1555,30 +1567,16 @@ b4_c_function_def([[yyparse]], [[int]], b4_parse_param)[
   yyerrstatus = 0;
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
-
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;]b4_locations_if([[
-  yylsp = yyls;
-
-#if defined ]b4_api_PREFIX[LTYPE_IS_TRIVIAL && ]b4_api_PREFIX[LTYPE_IS_TRIVIAL
-  /* Initialize the default location before parsing starts.  */
-  yylloc.first_line   = yylloc.last_line   = ]b4_location_initial_line[;
-  yylloc.first_column = yylloc.last_column = ]b4_location_initial_column[;
-#endif]])
-m4_ifdef([b4_initial_action],[
+]m4_ifdef([b4_initial_action], [
 b4_dollar_pushdef([m4_define([b4_dollar_dollar_used])yylval], [],
-                  [m4_define([b4_at_dollar_used])yylloc])dnl
+                  [b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])])dnl
 /* User initialization code.  */
 b4_user_initial_action
 b4_dollar_popdef[]dnl
 m4_ifdef([b4_dollar_dollar_used],[[  yyvsp[0] = yylval;
-]])dnl
-m4_ifdef([b4_at_dollar_used], [[  yylsp[0] = yylloc;
 ]])])dnl
+b4_locations_if([[  yylsp[0] = ]b4_push_if([b4_pure_if([*])yypushed_loc], [yylloc])[;
+]])dnl
 [  goto yysetstate;
 
 /*------------------------------------------------------------.
@@ -1749,7 +1747,9 @@ yyread_pushed_token:]])[
   YY_LAC_DISCARD ("shift");]])[
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 ]b4_locations_if([  *++yylsp = yylloc;])[
   goto yynewstate;
 
@@ -1969,7 +1969,9 @@ yyerrlab1:
      current lookahead token, the shift below will for sure.  */
   YY_LAC_DISCARD ("error recovery");]])[
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 ]b4_locations_if([[
   yyerror_range[2] = yylloc;
   /* Using YYLLOC is tempting, but would change the location of
@@ -2046,11 +2048,13 @@ yypushreturn:]])[
 
 
 ]b4_epilogue[]dnl
+b4_output_end()
+
 b4_defines_if(
-[@output(b4_spec_defines_file@)@
-b4_copyright([Bison interface for Yacc-like parsers in C],
-             [1984, 1989-1990, 2000-2012])[
+[b4_output_begin([b4_spec_defines_file])[
+]b4_copyright([Bison interface for Yacc-like parsers in C],
+              [1984, 1989-1990, 2000-2013])[
 
 ]b4_shared_declarations[
-]])dnl b4_defines_if
-m4_divert_pop(0)
+]b4_output_end()
+])
index fe6b987..ddfae02 100644 (file)
@@ -1,7 +1,7 @@
 # DJGPP Maintainer's Makefile                                    -*-Makefile-*-
 # Requires GNU sed
 
-## Copyright (C) 2005-2012 Free Software Foundation, Inc.
+## Copyright (C) 2005-2013 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
index 60fd952..bde9b5a 100644 (file)
@@ -1,6 +1,6 @@
 This is a port of GNU Bison @VERSION@ to MSDOS/DJGPP.
 
-Copyright (C) 2005-2012 Free Software Foundation, Inc.
+Copyright (C) 2005-2013 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
index ab566d7..cd909eb 100644 (file)
@@ -4,7 +4,7 @@ Rem Configure Bison for DJGPP.
 Rem WARNING WARNING WARNING: This file needs to have DOS CRLF end-of-line\r
 Rem format, or else stock DOS/Windows shells will refuse to run it.\r
 \r
-Rem Copyright (C) 2005-2012 Free Software Foundation, Inc.\r
+Rem Copyright (C) 2005-2013 Free Software Foundation, Inc.\r
 \r
 Rem This program is free software: you can redistribute it and/or modify\r
 Rem it under the terms of the GNU General Public License as published by\r
index d5a5807..bf64b51 100644 (file)
@@ -2,7 +2,7 @@
 # Sed script for additional DJGPP specific editing
 # of the configure script generated by autoconf 2.62.
 
-# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 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
index 7ca4107..685ae9d 100644 (file)
@@ -3,7 +3,7 @@
 # This is the config.site file for configuring GNU packages
 # which are to be built with DJGPP tools.
 
-# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 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
index f616abc..a2d0233 100644 (file)
@@ -1,6 +1,6 @@
 # sed script for DJGPP specific editing of config.hin
 
-# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 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
index b4de3ac..5ba7137 100644 (file)
@@ -7,7 +7,7 @@ Rem This batch file unpacks the Bison distribution while simultaneously
 Rem renaming some of the files whose names are invalid on DOS or conflict\r
 Rem with other file names after truncation to DOS 8+3 namespace.\r
 Rem\r
-Rem Copyright (C) 2005-2012 Free Software Foundation, Inc.\r
+Rem Copyright (C) 2005-2013 Free Software Foundation, Inc.\r
 Rem\r
 Rem This program is free software: you can redistribute it and/or modify\r
 Rem it under the terms of the GNU General Public License as published by\r
index f85e8f9..6cfc3cc 100644 (file)
@@ -1,6 +1,6 @@
 /* Subprocesses with pipes.
 
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
index d7a30dc..e431b27 100644 (file)
@@ -1,6 +1,6 @@
 /* Subprocesses with pipes.
 
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
index 4d551b3..2d3373c 100644 (file)
@@ -2,7 +2,7 @@
 # Sed script for additional DJGPP specific editing\r
 # of the testsuite script generated by autoconf 2.61.\r
 \r
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.\r
+# Copyright (C) 2007-2013 Free Software Foundation, Inc.\r
 \r
 # This program is free software: you can redistribute it and/or modify\r
 # it under the terms of the GNU General Public License as published by\r
index b555751..e36a1ce 100644 (file)
@@ -940,7 +940,7 @@ EXTERNAL_GROUPS        = YES
 # The PERL_PATH should be the absolute path and name of the perl script
 # interpreter (i.e. the result of `which perl').
 
-PERL_PATH              = /usr/bin/perl
+PERL_PATH              = @PERL@
 
 #---------------------------------------------------------------------------
 # Configuration options related to the dot tool
index d87f00f..d364a9b 100644 (file)
@@ -1,6 +1,6 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
 
-## Copyright (C) 2001-2003, 2005-2012 Free Software Foundation, Inc.
+## Copyright (C) 2001-2003, 2005-2013 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
@@ -30,7 +30,7 @@ $(srcdir)/cross-options.texi: $(top_srcdir)/src/getargs.c $(CROSS_OPTIONS_PL)
        $(AM_V_at)rm -f $@.tmp
        $(AM_V_at)cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) bison
        $(AM_V_at)$(top_builddir)/src/bison --help \
-         | perl $(CROSS_OPTIONS_PL) $(top_srcdir)/src/scan-gram.l >$@.tmp
+         | $(PERL) $(CROSS_OPTIONS_PL) $(top_srcdir)/src/scan-gram.l >$@.tmp
        $(AM_V_at)diff -u $@~ $@.tmp || true
        $(AM_V_at)mv $@.tmp $@
 MAINTAINERCLEANFILES = $(srcdir)/cross-options.texi
@@ -96,6 +96,37 @@ PREPATH = $(top_builddir)/src
 
 nodist_man_MANS = yacc.1
 
+## ------------------------------ ##
+## Graphviz examples generation.  ##
+## ------------------------------ ##
+
+CLEANDIRS += figs
+FIGS_DOT = figs/example.dot figs/example-reduce.dot figs/example-shift.dot
+EXTRA_DIST +=                                                          \
+  figs/example.y                                                       \
+  $(FIGS_DOT)                                                          \
+  $(FIGS_DOT:.dot=.eps) $(FIGS_DOT:.dot=.pdf) $(FIGS_DOT:.dot=.png)
+SUFFIXES += .dot .eps .pdf .png
+
+bison.dvi:  $(FIGS_DOT:.dot=.eps)
+bison.html: $(FIGS_DOT:.dot=.png)
+bison.pdf:  $(FIGS_DOT:.dot=.pdf)
+
+.dot.eps:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Teps $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
+.dot.pdf:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Tpdf $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
+.dot.png:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Tpng $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
 ## -------------- ##
 ## Doxygenation.  ##
 ## -------------- ##
index 3c3c0e0..a198674 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -62,11 +62,11 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = doc
-DIST_COMMON = $(bison_TEXINFOS) $(dist_man_MANS) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in $(srcdir)/stamp-vti \
-       $(srcdir)/version.texi $(srcdir)/yacc.1.in \
-       $(top_srcdir)/build-aux/mdate-sh \
-       $(top_srcdir)/build-aux/texinfo.tex
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(srcdir)/yacc.1.in $(bison_TEXINFOS) \
+       $(top_srcdir)/build-aux/mdate-sh $(srcdir)/version.texi \
+       $(srcdir)/stamp-vti $(top_srcdir)/build-aux/texinfo.tex \
+       $(dist_man_MANS)
 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 \
@@ -82,6 +82,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -89,11 +90,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -257,6 +259,7 @@ am__uninstall_files_from_dir = { \
 man1dir = $(mandir)/man1
 NROFF = nroff
 MANS = $(dist_man_MANS) $(nodist_man_MANS)
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -274,6 +277,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -293,9 +297,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -567,6 +574,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -906,6 +914,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1092,6 +1101,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1102,6 +1112,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1232,6 +1243,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1326,6 +1338,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1402,10 +1415,12 @@ AM_MAKEINFOFLAGS = --no-split
 info_TEXINFOS = bison.texi
 bison_TEXINFOS = $(srcdir)/cross-options.texi gpl-3.0.texi fdl.texi
 CLEANFILES = bison.fns refcard.dvi refcard.log refcard.ps Doxyfile
-CLEANDIRS = *.t2d html latex
+CLEANDIRS = *.t2d figs html latex
 CROSS_OPTIONS_PL = $(top_srcdir)/build-aux/cross-options.pl
 MAINTAINERCLEANFILES = $(srcdir)/cross-options.texi $(dist_man_MANS)
-EXTRA_DIST = refcard.tex $(dist_man_MANS:.1=.x) common.x Doxyfile.in
+EXTRA_DIST = refcard.tex $(dist_man_MANS:.1=.x) common.x \
+       figs/example.y $(FIGS_DOT) $(FIGS_DOT:.dot=.eps) \
+       $(FIGS_DOT:.dot=.pdf) $(FIGS_DOT:.dot=.png) Doxyfile.in
 dist_man_MANS = $(srcdir)/bison.1
 
 # Depend on configure to get version number changes.
@@ -1417,9 +1432,10 @@ remove_time_stamp = \
   sed 's/^\(\.TH[^"]*"[^"]*"[^"]*\)"[^"]*"/\1/'
 
 MOSTLYCLEANFILES = $(srcdir)/*.t
-SUFFIXES = .x .1
+SUFFIXES = .x .1 .dot .eps .pdf .png
 PREPATH = $(top_builddir)/src
 nodist_man_MANS = yacc.1
+FIGS_DOT = figs/example.dot figs/example-reduce.dot figs/example-shift.dot
 DOXYGEN = doxygen
 edit = sed -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
           -e 's,@PACKAGE_VERSION\@,$(PACKAGE_VERSION),g' \
@@ -1429,7 +1445,7 @@ edit = sed -e 's,@PACKAGE_NAME\@,$(PACKAGE_NAME),g' \
 all: all-am
 
 .SUFFIXES:
-.SUFFIXES: .x .1 .dvi .html .info .pdf .ps .texi
+.SUFFIXES: .x .1 .dot .eps .pdf .png .dvi .html .info .ps .texi
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -1439,9 +1455,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits doc/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu doc/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits doc/Makefile
+         $(AUTOMAKE) --gnu doc/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1488,12 +1504,14 @@ yacc.1: $(top_builddir)/config.status $(srcdir)/yacc.1.in
 .texi.dvi:
        $(AM_V_TEXI2DVI)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
        MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-       $(TEXI2DVI) $(AM_V_texinfo) --clean $< $(AM_V_texidevnull)
+       $(TEXI2DVI) $(AM_V_texinfo) --build-dir=$(@:.dvi=.t2d) -o $@ $(AM_V_texidevnull) \
+       $<
 
 .texi.pdf:
        $(AM_V_TEXI2PDF)TEXINPUTS="$(am__TEXINFO_TEX_DIR)$(PATH_SEPARATOR)$$TEXINPUTS" \
        MAKEINFO='$(MAKEINFO) $(AM_MAKEINFOFLAGS) $(MAKEINFOFLAGS) -I $(srcdir)' \
-       $(TEXI2PDF) $(AM_V_texinfo) --clean $< $(AM_V_texidevnull)
+       $(TEXI2PDF) $(AM_V_texinfo) --build-dir=$(@:.pdf=.t2p) -o $@ $(AM_V_texidevnull) \
+       $<
 
 .texi.html:
        $(AM_V_MAKEINFO)rm -rf $(@:.html=.htp)
@@ -1509,9 +1527,6 @@ yacc.1: $(top_builddir)/config.status $(srcdir)/yacc.1.in
          exit 1; \
        fi
 $(srcdir)/bison.info: bison.texi $(srcdir)/version.texi $(bison_TEXINFOS)
-bison.dvi: bison.texi $(srcdir)/version.texi $(bison_TEXINFOS)
-bison.pdf: bison.texi $(srcdir)/version.texi $(bison_TEXINFOS)
-bison.html: bison.texi $(srcdir)/version.texi $(bison_TEXINFOS)
 $(srcdir)/version.texi:  $(srcdir)/stamp-vti
 $(srcdir)/stamp-vti: bison.texi $(top_srcdir)/configure
        @(dir=.; test -f ./bison.texi || dir=$(srcdir); \
@@ -1612,8 +1627,7 @@ dist-info: $(INFO_DEPS)
        done
 
 mostlyclean-aminfo:
-       -rm -rf bison.aux bison.cp bison.cps bison.fn bison.ky bison.kys bison.log \
-         bison.pg bison.pgs bison.tmp bison.toc bison.tp bison.vr
+       -rm -rf bison.t2d bison.t2p
 
 clean-aminfo:
        -test -z "bison.dvi bison.pdf bison.ps bison.html" \
@@ -1668,29 +1682,14 @@ uninstall-man1:
        } | sed -e 's,.*/,,;h;s,.*\.,,;s,^[^1][0-9a-z]*$$,1,;x' \
              -e 's,\.[0-9a-z]*$$,,;$(transform);G;s,\n,.,'`; \
        dir='$(DESTDIR)$(man1dir)'; $(am__uninstall_files_from_dir)
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
 
 distdir: $(DISTFILES)
-       @list='$(MANS)'; if test -n "$$list"; then \
-         list=`for p in $$list; do \
-           if test -f $$p; then d=; else d="$(srcdir)/"; fi; \
-           if test -f "$$d$$p"; then echo "$$d$$p"; else :; fi; done`; \
-         if test -n "$$list" && \
-           grep 'ab help2man is required to generate this page' $$list >/dev/null; then \
-           echo "error: found man pages containing the 'missing help2man' replacement text:" >&2; \
-           grep -l 'ab help2man is required to generate this page' $$list | sed 's/^/         /' >&2; \
-           echo "       to fix them, install help2man, remove and regenerate the man pages;" >&2; \
-           echo "       typically 'make maintainer-clean' will remove them" >&2; \
-           exit 1; \
-         else :; fi; \
-       else :; fi
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        topsrcdirstrip=`echo "$(top_srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
        list='$(DISTFILES)'; \
@@ -1927,19 +1926,19 @@ uninstall-man: uninstall-man1
 .MAKE: install-am install-strip
 
 .PHONY: all all-am check check-am clean clean-aminfo clean-generic \
-       clean-local dist-info distclean distclean-generic distdir dvi \
-       dvi-am html html-am html-local info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-man1 \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-aminfo \
+       clean-local cscopelist-am ctags-am dist-info distclean \
+       distclean-generic distdir dvi dvi-am html html-am html-local \
+       info info-am install install-am install-data install-data-am \
+       install-dvi install-dvi-am install-exec install-exec-am \
+       install-html install-html-am install-info install-info-am \
+       install-man install-man1 install-pdf install-pdf-am install-ps \
+       install-ps-am install-strip installcheck installcheck-am \
+       installdirs maintainer-clean maintainer-clean-aminfo \
        maintainer-clean-generic maintainer-clean-vti mostlyclean \
        mostlyclean-aminfo mostlyclean-generic mostlyclean-vti pdf \
-       pdf-am ps ps-am uninstall uninstall-am uninstall-dvi-am \
-       uninstall-html-am uninstall-info-am uninstall-man \
-       uninstall-man1 uninstall-pdf-am uninstall-ps-am
+       pdf-am ps ps-am tags-am uninstall uninstall-am \
+       uninstall-dvi-am uninstall-html-am uninstall-info-am \
+       uninstall-man uninstall-man1 uninstall-pdf-am uninstall-ps-am
 
 clean-local:
        rm -rf $(CLEANDIRS)
@@ -1948,7 +1947,7 @@ $(srcdir)/cross-options.texi: $(top_srcdir)/src/getargs.c $(CROSS_OPTIONS_PL)
        $(AM_V_at)rm -f $@.tmp
        $(AM_V_at)cd $(top_builddir)/src && $(MAKE) $(AM_MAKEFLAGS) bison
        $(AM_V_at)$(top_builddir)/src/bison --help \
-         | perl $(CROSS_OPTIONS_PL) $(top_srcdir)/src/scan-gram.l >$@.tmp
+         | $(PERL) $(CROSS_OPTIONS_PL) $(top_srcdir)/src/scan-gram.l >$@.tmp
        $(AM_V_at)diff -u $@~ $@.tmp || true
        $(AM_V_at)mv $@.tmp $@
 
@@ -1980,6 +1979,25 @@ $(srcdir)/bison.1:      $(common_dep) $(top_srcdir)/src/getargs.c
        fi
        $(AM_V_at)rm -f $@*.t
 
+bison.dvi:  $(FIGS_DOT:.dot=.eps)
+bison.html: $(FIGS_DOT:.dot=.png)
+bison.pdf:  $(FIGS_DOT:.dot=.pdf)
+
+.dot.eps:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Teps $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
+.dot.pdf:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Tpdf $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
+.dot.png:
+       $(AM_V_GEN) $(MKDIR_P) `echo "./$@" | sed -e 's,/[^/]*$$,,'`
+       $(AM_V_at) $(DOT) -Gmargin=0 -Tpng $< >$@.tmp
+       $(AM_V_at) mv $@.tmp $@
+
 .PHONY: doc html
 
 doc: html
index 4a58b98..5b80101 100644 (file)
@@ -1,5 +1,5 @@
-.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.40.10.
-.TH BISON "1" "August 2012" "bison 2.6.2" "User Commands"
+.\" DO NOT MODIFY THIS FILE!  It was generated by help2man 1.41.1.
+.TH BISON "1" "April 2013" "bison 2.7.12-4996" "User Commands"
 .SH NAME
 bison \- GNU Project parser generator (yacc replacement)
 .SH SYNOPSIS
@@ -83,11 +83,13 @@ emulate POSIX Yacc
 .TP
 \fB\-W\fR, \fB\-\-warnings\fR[=\fICATEGORY\fR]
 report the warnings falling in CATEGORY
+.TP
+\fB\-f\fR, \fB\-\-feature\fR[=\fIFEATURE\fR]
+activate miscellaneous features
 .SS "Parser:"
 .TP
 \fB\-L\fR, \fB\-\-language\fR=\fILANGUAGE\fR
 specify the output programming language
-(this is an experimental feature)
 .TP
 \fB\-S\fR, \fB\-\-skeleton\fR=\fIFILE\fR
 specify the skeleton to use
@@ -156,6 +158,9 @@ S/R conflicts (enabled by default)
 `conflicts\-rr'
 R/R conflicts (enabled by default)
 .TP
+`deprecated'
+obsolete constructs
+.TP
 `other'
 all other warnings (enabled by default)
 .TP
@@ -189,12 +194,31 @@ include all the above information
 .TP
 `none'
 disable the report
+.SS "FEATURE is a list of comma separated words that can include:"
+.TP
+`caret'
+show errors with carets
+.TP
+`all'
+all of the above
+.TP
+`none'
+disable all of the above
 .SH AUTHOR
 Written by Robert Corbett and Richard Stallman.
 .SH "REPORTING BUGS"
 Report bugs to <bug\-bison@gnu.org>.
+.br
+GNU Bison home page: <http://www.gnu.org/software/bison/>.
+.br
+General help using GNU software: <http://www.gnu.org/gethelp/>.
+.PP
+.br
+Report translation bugs to <http://translationproject.org/team/>.
+.br
+For complete documentation, run: info bison.
 .SH COPYRIGHT
-Copyright \(co 2012 Free Software Foundation, Inc.
+Copyright \(co 2013 Free Software Foundation, Inc.
 .br
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
index 701a0b2..c08ea40 100644 (file)
@@ -1,10 +1,10 @@
 This is ../../../doc/bison.info, produced by makeinfo version 4.13 from
 ../../../doc/bison.texi.
 
-This manual (27 July 2012) is for GNU Bison (version 2.6.2), the GNU
-parser generator.
+This manual (8 April 2013) is for GNU Bison (version 2.7.12-4996), the
+GNU parser generator.
 
-   Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
+   Copyright (C) 1988-1993, 1995, 1998-2013 Free Software Foundation,
 Inc.
 
      Permission is granted to copy, distribute and/or modify this
@@ -30,10 +30,10 @@ File: bison.info,  Node: Top,  Next: Introduction,  Up: (dir)
 Bison
 *****
 
-This manual (27 July 2012) is for GNU Bison (version 2.6.2), the GNU
-parser generator.
+This manual (8 April 2013) is for GNU Bison (version 2.7.12-4996), the
+GNU parser generator.
 
-   Copyright (C) 1988-1993, 1995, 1998-2012 Free Software Foundation,
+   Copyright (C) 1988-1993, 1995, 1998-2013 Free Software Foundation,
 Inc.
 
      Permission is granted to copy, distribute and/or modify this
@@ -171,6 +171,12 @@ Defining Language Semantics
                       This says when, why and how to use the exceptional
                         action in the middle of a rule.
 
+Actions in Mid-Rule
+
+* Using Mid-Rule Actions::       Putting an action in the middle of a rule.
+* Mid-Rule Action Translation::  How mid-rule actions are actually processed.
+* Mid-Rule Conflicts::           Mid-rule actions can cause conflicts.
+
 Tracking Locations
 
 * Location Type::               Specifying a data type for locations.
@@ -239,6 +245,7 @@ Operator Precedence
 * Using Precedence::  How to specify precedence in Bison grammars.
 * Precedence Examples::  How these features are used in the previous example.
 * How Precedence::    How they work.
+* Non Operators::     Using precedence for general conflicts.
 
 Tuning LR
 
@@ -257,6 +264,8 @@ Handling Context Dependencies
 Debugging Your Parser
 
 * Understanding::     Understanding the structure of your parser.
+* Graphviz::          Getting a visual representation of the parser.
+* Xml::               Getting a markup representation of the parser.
 * Tracing::           Tracing the execution of your parser.
 
 Tracing Your Parser
@@ -290,6 +299,7 @@ C++ Location Values
 
 * C++ position::                One point in the source file
 * C++ location::                Two points in the source file
+* User Defined Location Type::  Required interface for locations
 
 A Complete C++ Example
 
@@ -362,7 +372,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.2 of Bison.
+   This edition corresponds to version 2.7.12-4996 of Bison.
 
 \1f
 File: bison.info,  Node: Conditions,  Next: Copying,  Prev: Introduction,  Up: Top
@@ -2900,7 +2910,7 @@ function that initializes the symbol table.  Here it is, and
      void
      yyerror (char const *s)
      {
-       printf ("%s\n", s);
+       fprintf (stderr, "%s\n", s);
      }
 
      struct init
@@ -3979,9 +3989,21 @@ Occasionally it is useful to put an action in the middle of a rule.
 These actions are written just like usual end-of-rule actions, but they
 are executed before the parser even recognizes the following components.
 
-   A mid-rule action may refer to the components preceding it using
-`$N', but it may not refer to subsequent components because it is run
-before they are parsed.
+* Menu:
+
+* Using Mid-Rule Actions::       Putting an action in the middle of a rule.
+* Mid-Rule Action Translation::  How mid-rule actions are actually processed.
+* Mid-Rule Conflicts::           Mid-rule actions can cause conflicts.
+
+\1f
+File: bison.info,  Node: Using Mid-Rule Actions,  Next: Mid-Rule Action Translation,  Up: Mid-Rule Actions
+
+3.5.5.1 Using Mid-Rule Actions
+..............................
+
+A mid-rule action may refer to the components preceding it using `$N',
+but it may not refer to subsequent components because it is run before
+they are parsed.
 
    The mid-rule action itself counts as one of the components of the
 rule.  This makes a difference when there is another action later in
@@ -4009,18 +4031,39 @@ symbol table while STATEMENT is parsed, then remove it afterward.  Here
 is how it is done:
 
      stmt:
-       LET '(' var ')'
-         { $<context>$ = push_context (); declare_variable ($3); }
+       "let" '(' var ')'
+         {
+           $<context>$ = push_context ();
+           declare_variable ($3);
+         }
        stmt
-         { $$ = $6; pop_context ($<context>5); }
+         {
+           $$ = $6;
+           pop_context ($<context>5);
+         }
 
 As soon as `let (VARIABLE)' has been recognized, the first action is
 run.  It saves a copy of the current semantic context (the list of
 accessible variables) as its semantic value, using alternative
 `context' in the data-type union.  Then it calls `declare_variable' to
 add the new variable to that list.  Once the first action is finished,
-the embedded statement `stmt' can be parsed.  Note that the mid-rule
-action is component number 5, so the `stmt' is component number 6.
+the embedded statement `stmt' can be parsed.
+
+   Note that the mid-rule action is component number 5, so the `stmt' is
+component number 6.  Named references can be used to improve the
+readability and maintainability (*note Named References::):
+
+     stmt:
+       "let" '(' var ')'
+         {
+           $<context>let = push_context ();
+           declare_variable ($3);
+         }[let]
+       stmt
+         {
+           $$ = $6;
+           pop_context ($<context>let);
+         }
 
    After the embedded statement is parsed, its semantic value becomes
 the value of the entire `let'-statement.  Then the semantic value from
@@ -4048,13 +4091,13 @@ symbol and to declare a destructor for that symbol:
        let stmt
          {
            $$ = $2;
-           pop_context ($1);
+           pop_context ($let);
          };
 
      let:
-       LET '(' var ')'
+       "let" '(' var ')'
          {
-           $$ = push_context ();
+           $let = push_context ();
            declare_variable ($3);
          };
 
@@ -4062,7 +4105,64 @@ Note that the action is now at the end of its rule.  Any mid-rule
 action can be converted to an end-of-rule action in this way, and this
 is what Bison actually does to implement mid-rule actions.
 
-   Taking action before a rule is completely recognized often leads to
+\1f
+File: bison.info,  Node: Mid-Rule Action Translation,  Next: Mid-Rule Conflicts,  Prev: Using Mid-Rule Actions,  Up: Mid-Rule Actions
+
+3.5.5.2 Mid-Rule Action Translation
+...................................
+
+As hinted earlier, mid-rule actions are actually transformed into
+regular rules and actions.  The various reports generated by Bison
+(textual, graphical, etc., see *note Understanding Your Parser:
+Understanding.)  reveal this translation, best explained by means of an
+example.  The following rule:
+
+     exp: { a(); } "b" { c(); } { d(); } "e" { f(); };
+
+is translated into:
+
+     $@1: /* empty */ { a(); };
+     $@2: /* empty */ { c(); };
+     $@3: /* empty */ { d(); };
+     exp: $@1 "b" $@2 $@3 "e" { f(); };
+
+with new nonterminal symbols `$@N', where N is a number.
+
+   A mid-rule action is expected to generate a value if it uses `$$', or
+the (final) action uses `$N' where N denote the mid-rule action.  In
+that case its nonterminal is rather named `@N':
+
+     exp: { a(); } "b" { $$ = c(); } { d(); } "e" { f = $1; };
+
+is translated into
+
+     @1: /* empty */ { a(); };
+     @2: /* empty */ { $$ = c(); };
+     $@3: /* empty */ { d(); };
+     exp: @1 "b" @2 $@3 "e" { f = $1; }
+
+   There are probably two errors in the above example: the first
+mid-rule action does not generate a value (it does not use `$$'
+although the final action uses it), and the value of the second one is
+not used (the final action does not use `$3').  Bison reports these
+errors when the `midrule-value' warnings are enabled (*note Invoking
+Bison: Invocation.):
+
+     $ bison -fcaret -Wmidrule-value mid.y
+     mid.y:2.6-13: warning: unset value: $$
+      exp: { a(); } "b" { $$ = c(); } { d(); } "e" { f = $1; };
+           ^^^^^^^^
+     mid.y:2.19-31: warning: unused value: $3
+      exp: { a(); } "b" { $$ = c(); } { d(); } "e" { f = $1; };
+                        ^^^^^^^^^^^^^
+
+\1f
+File: bison.info,  Node: Mid-Rule Conflicts,  Prev: Mid-Rule Action Translation,  Up: Mid-Rule Actions
+
+3.5.5.3 Conflicts due to Mid-Rule Actions
+.........................................
+
+Taking action before a rule is completely recognized often leads to
 conflicts since the parser must commit to a parse in order to execute
 the action.  For example, the following two rules, without mid-rule
 actions, can coexist in a working parser because the parser can shift
@@ -4761,6 +4861,10 @@ discards the mid-rule symbol.
    * the current lookahead and the entire stack (except the current
      right-hand side symbols) when the parser returns immediately, and
 
+   * the current lookahead and the entire stack (including the current
+     right-hand side symbols) when the C++ parser (`lalr1.cc') catches
+     an exception in `parse',
+
    * the start symbol, when the parser succeeds.
 
    The parser can "return immediately" because of an explicit call to
@@ -4909,7 +5013,7 @@ including `yylval' and `yylloc'.)
 declaration `%define api.pure' says that you want the parser to be
 reentrant.  It looks like this:
 
-     %define api.pure
+     %define api.pure full
 
    The result is that the communication variables `yylval' and `yylloc'
 become local variables in `yyparse', and a different calling convention
@@ -4954,7 +5058,7 @@ time you should create an impure push parser is to have backwards
 compatibility with the impure Yacc pull mode interface.  Unless you know
 what you are doing, your declarations should look like this:
 
-     %define api.pure
+     %define api.pure full
      %define api.push-pull push
 
    There is a major notable functional difference between the pure push
@@ -5020,7 +5124,7 @@ example of using the `yypull_parse' function would look like this:
      yypull_parse (ps); /* Will call the lexer */
      yypstate_delete (ps);
 
-   Adding the `%define api.pure' declaration does exactly the same
+   Adding the `%define api.pure full' declaration does exactly the same
 thing to the generated parser with `%define api.push-pull both' as it
 did for `%define api.push-pull push'.
 
@@ -5077,10 +5181,10 @@ directives:
 
  -- Directive: %debug
      In the parser implementation file, define the macro `YYDEBUG' (or
-     `PREFIXDEBUG' with `%define api.prefix PREFIX'), see *note
-     Multiple Parsers in the Same Program: Multiple Parsers.) to 1 if
-     it is not already defined, so that the debugging facilities are
-     compiled.  *Note Tracing Your Parser: Tracing.
+     `PREFIXDEBUG' with `%define api.prefix PREFIX', see *note Multiple
+     Parsers in the Same Program: Multiple Parsers.) to 1 if it is not
+     already defined, so that the debugging facilities are compiled.
+     *Note Tracing Your Parser: Tracing.
 
  -- Directive: %define VARIABLE
  -- Directive: %define VARIABLE VALUE
@@ -5122,6 +5226,20 @@ directives:
      If you have declared `%code requires' or `%code provides', the
      output header also contains their code.  *Note %code Summary::.
 
+     The generated header is protected against multiple inclusions with
+     a C preprocessor guard: `YY_PREFIX_FILE_INCLUDED', where PREFIX
+     and FILE are the prefix (*note Multiple Parsers in the Same
+     Program: Multiple Parsers.) and generated file name turned
+     uppercase, with each series of non alphanumerical characters
+     converted to a single underscore.
+
+     For instance with `%define api.prefix "calc"' and `%defines
+     "lib/parse.h"', the header will be guarded as follows.
+          #ifndef YY_CALC_LIB_PARSE_H_INCLUDED
+          # define YY_CALC_LIB_PARSE_H_INCLUDED
+          ...
+          #endif /* ! YY_CALC_LIB_PARSE_H_INCLUDED */
+
  -- Directive: %defines DEFINES-FILE
      Same as above, but save in the file DEFINES-FILE.
 
@@ -5139,8 +5257,6 @@ directives:
      Currently supported languages include C, C++, and Java.  LANGUAGE
      is case-insensitive.
 
-     This directive is experimental and its effect may be modified in
-     future releases.
 
  -- Directive: %locations
      Generate the code processing the locations (*note Special Features
@@ -5270,11 +5386,24 @@ skeleton (*note %language: Decl Summary, *note %skeleton: Decl
 Summary.).  Unaccepted VARIABLEs produce an error.  Some of the
 accepted VARIABLEs are:
 
+   * `api.location.type' 
+
+        * Language(s): C++, Java
+
+        * Purpose: Define the location type.  *Note User Defined
+          Location Type::.
+
+        * Accepted Values: String
+
+        * Default Value: none
+
+        * History: introduced in Bison 2.7
+
    * `api.prefix' 
 
         * Language(s): All
 
-        * Purpose: Rename exported symbols *Note Multiple Parsers in
+        * Purpose: Rename exported symbols *Note Multiple Parsers in
           the Same Program: Multiple Parsers.
 
         * Accepted Values: String
@@ -5290,10 +5419,39 @@ accepted VARIABLEs are:
         * Purpose: Request a pure (reentrant) parser program.  *Note A
           Pure (Reentrant) Parser: Pure Decl.
 
-        * Accepted Values: Boolean
+        * Accepted Values: `true', `false', `full'
+
+          The value may be omitted: this is equivalent to specifying
+          `true', as is the case for Boolean values.
+
+          When `%define api.pure full' is used, the parser is made
+          reentrant. This changes the signature for `yylex' (*note Pure
+          Calling::), and also that of `yyerror' when the tracking of
+          locations has been activated, as shown below.
+
+          The `true' value is very similar to the `full' value, the only
+          difference is in the signature of `yyerror' on Yacc parsers
+          without `%parse-param', for historical reasons.
+
+          I.e., if `%locations %define api.pure' is passed then the
+          prototypes for `yyerror' are:
+
+               void yyerror (char const *msg);                 // Yacc parsers.
+               void yyerror (YYLTYPE *locp, char const *msg);  // GLR parsers.
+
+          But if `%locations %define api.pure %parse-param {int
+          *nastiness}' is used, then both parsers have the same
+          signature:
+
+               void yyerror (YYLTYPE *llocp, int *nastiness, char const *msg);
+
+          (*note The Error Reporting Function `yyerror': Error
+          Reporting.)
 
         * Default Value: `false'
 
+        * History: the `full' value was introduced in Bison 2.7
+
    * `api.push-pull' 
 
         * Language(s): C (deterministic parsers only)
@@ -5667,6 +5825,19 @@ In the grammar actions, use expressions like this to refer to the data:
 
      exp: ...    { ...; *randomness += 1; ... }
 
+Using the following:
+     %parse-param {int *randomness}
+
+   Results in these signatures:
+     void yyerror (int *randomness, const char *msg);
+     int  yyparse (int *randomness);
+
+Or, if both `%define api.pure full' (or just `%define api.pure') and
+`%locations' are used:
+
+     void yyerror (YYLTYPE *llocp, int *randomness, const char *msg);
+     int  yyparse (int *randomness);
+
 \1f
 File: bison.info,  Node: Push Parser Function,  Next: Pull Parser Function,  Prev: Parser Function,  Up: Interface
 
@@ -5907,7 +6078,7 @@ File: bison.info,  Node: Pure Calling,  Prev: Token Locations,  Up: Lexical
 4.6.4 Calling Conventions for Pure Parsers
 ------------------------------------------
 
-When you use the Bison declaration `%define api.pure' to request a
+When you use the Bison declaration `%define api.pure full' to request a
 pure, reentrant parser, the global communication variables `yylval' and
 `yylloc' cannot be used.  (*Note A Pure (Reentrant) Parser: Pure Decl.)
 In such parsers the two global variables are replaced by pointers
@@ -5935,26 +6106,17 @@ one argument.
      Declare that the braced-code ARGUMENT-DECLARATION is an additional
      `yylex' argument declaration.
 
-   For instance:
+For instance:
 
-     %parse-param {int *nastiness}
      %lex-param   {int *nastiness}
-     %parse-param {int *randomness}
-
-results in the following signatures:
-
-     int yylex   (int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
 
-   If `%define api.pure' is added:
+results in the following signature:
 
-     int yylex   (YYSTYPE *lvalp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
+     int yylex (int *nastiness);
 
-and finally, if both `%define api.pure' and `%locations' are used:
+If `%define api.pure full' (or just `%define api.pure') is added:
 
-     int yylex   (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
+     int yylex (YYSTYPE *lvalp, int *nastiness);
 
 \1f
 File: bison.info,  Node: Error Reporting,  Next: Action Features,  Prev: Lexical,  Up: Interface
@@ -6005,40 +6167,15 @@ recovery if you have written suitable error recovery grammar rules
 immediately return 1.
 
    Obviously, in location tracking pure parsers, `yyerror' should have
-an access to the current location.  This is indeed the case for the GLR
-parsers, but not for the Yacc parser, for historical reasons.  I.e., if
-`%locations %define api.pure' is passed then the prototypes for
-`yyerror' are:
+an access to the current location. With `%define api.pure', this is
+indeed the case for the GLR parsers, but not for the Yacc parser, for
+historical reasons, and this is the why `%define api.pure full' should
+be prefered over `%define api.pure'.
 
-     void yyerror (char const *msg);                 /* Yacc parsers.  */
-     void yyerror (YYLTYPE *locp, char const *msg);  /* GLR parsers.   */
+   When `%locations %define api.pure full' is used, `yyerror' has the
+following signature:
 
-   If `%parse-param {int *nastiness}' is used, then:
-
-     void yyerror (int *nastiness, char const *msg);  /* Yacc parsers.  */
-     void yyerror (int *nastiness, char const *msg);  /* GLR parsers.   */
-
-   Finally, GLR and Yacc parsers share the same `yyerror' calling
-convention for absolutely pure parsers, i.e., when the calling
-convention of `yylex' _and_ the calling convention of `%define
-api.pure' are pure.  I.e.:
-
-     /* Location tracking.  */
-     %locations
-     /* Pure yylex.  */
-     %define api.pure
-     %lex-param   {int *nastiness}
-     /* Pure yyparse.  */
-     %parse-param {int *nastiness}
-     %parse-param {int *randomness}
-
-results in the following signatures for all the parser kinds:
-
-     int yylex (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
-     void yyerror (YYLTYPE *locp,
-                   int *nastiness, int *randomness,
-                   char const *msg);
+     void yyerror (YYLTYPE *locp, char const *msg);
 
 The prototypes are only indications of how the code produced by Bison
 uses `yyerror'.  Bison-generated code always ignores the returned
@@ -6184,7 +6321,7 @@ following steps.  Here we assume a package that uses GNU Autoconf and
 GNU Automake.
 
   1. Into the directory containing the GNU Autoconf macros used by the
-     package--often called `m4'--copy the `bison-i18n.m4' file
+     package --often called `m4'-- copy the `bison-i18n.m4' file
      installed by Bison under `share/aclocal/bison-i18n.m4' in Bison's
      installation directory.  For example:
 
@@ -6313,7 +6450,7 @@ unary factorial operators (`!'), and allow parentheses for grouping.
      term:
        '(' expr ')'
      | term '!'
-     | NUMBER
+     | "number"
      ;
 
    Suppose that the tokens `1 + 2' have been read and shifted; what
@@ -6344,17 +6481,17 @@ Suppose we are parsing a language which has if-then and if-then-else
 statements, with a pair of rules like this:
 
      if_stmt:
-       IF expr THEN stmt
-     | IF expr THEN stmt ELSE stmt
+       "if" expr "then" stmt
+     | "if" expr "then" stmt "else" stmt
      ;
 
-Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
-specific keyword tokens.
+Here `"if"', `"then"' and `"else"' are terminal symbols for specific
+keyword tokens.
 
-   When the `ELSE' token is read and becomes the lookahead token, the
+   When the `"else"' token is read and becomes the lookahead token, the
 contents of the stack (assuming the input is valid) are just right for
 reduction by the first rule.  But it is also legitimate to shift the
-`ELSE', because that would lead to eventual reduction by the second
+`"else"', because that would lead to eventual reduction by the second
 rule.
 
    This situation, where either a shift or a reduction would be valid,
@@ -6363,21 +6500,21 @@ these conflicts by choosing to shift, unless otherwise directed by
 operator precedence declarations.  To see the reason for this, let's
 contrast it with the other alternative.
 
-   Since the parser prefers to shift the `ELSE', the result is to attach
-the else-clause to the innermost if-statement, making these two inputs
-equivalent:
+   Since the parser prefers to shift the `"else"', the result is to
+attach the else-clause to the innermost if-statement, making these two
+inputs equivalent:
 
-     if x then if y then win (); else lose;
+     if x then if y then win; else lose;
 
-     if x then do; if y then win (); else lose; end;
+     if x then do; if y then win; else lose; end;
 
    But if the parser chose to reduce when possible rather than shift,
 the result would be to attach the else-clause to the outermost
 if-statement, making these two inputs equivalent:
 
-     if x then if y then win (); else lose;
+     if x then if y then win; else lose;
 
-     if x then do; if y then win (); end; else lose;
+     if x then do; if y then win; end; else lose;
 
    The conflict exists because the grammar as written is ambiguous:
 either parsing of the simple nested if-statement is legitimate.  The
@@ -6390,17 +6527,21 @@ encountered in the specifications of Algol 60 and is called the
 "dangling `else'" ambiguity.
 
    To avoid warnings from Bison about predictable, legitimate
-shift/reduce conflicts, use the `%expect N' declaration.  There will be
-no warning as long as the number of shift/reduce conflicts is exactly
-N, and Bison will report an error if there is a different number.
-*Note Suppressing Conflict Warnings: Expect Decl.
+shift/reduce conflicts, you can use the `%expect N' declaration.  There
+will be no warning as long as the number of shift/reduce conflicts is
+exactly N, and Bison will report an error if there is a different
+number.  *Note Suppressing Conflict Warnings: Expect Decl.  However, we
+don't recommend the use of `%expect' (except `%expect 0'!), as an equal
+number of conflicts does not mean that they are the _same_.  When
+possible, you should rather use precedence directives to _fix_ the
+conflicts explicitly (*note Using Precedence For Non Operators: Non
+Operators.).
 
    The definition of `if_stmt' above is solely to blame for the
 conflict, but the conflict does not actually appear without additional
 rules.  Here is a complete Bison grammar file that actually manifests
 the conflict:
 
-     %token IF THEN ELSE variable
      %%
      stmt:
        expr
@@ -6408,12 +6549,12 @@ the conflict:
      ;
 
      if_stmt:
-       IF expr THEN stmt
-     | IF expr THEN stmt ELSE stmt
+       "if" expr "then" stmt
+     | "if" expr "then" stmt "else" stmt
      ;
 
      expr:
-       variable
+       "identifier"
      ;
 
 \1f
@@ -6433,6 +6574,7 @@ shift and when to reduce.
 * Using Precedence::  How to specify precedence in Bison grammars.
 * Precedence Examples::  How these features are used in the previous example.
 * How Precedence::    How they work.
+* Non Operators::     Using precedence for general conflicts.
 
 \1f
 File: bison.info,  Node: Why Precedence,  Next: Using Precedence,  Up: Precedence
@@ -6512,16 +6654,12 @@ In our example, we would want the following declarations:
 we would declare them in groups of equal precedence.  For example,
 `'+'' is declared with `'-'':
 
-     %left '<' '>' '=' NE LE GE
+     %left '<' '>' '=' "!=" "<=" ">="
      %left '+' '-'
      %left '*' '/'
 
-(Here `NE' and so on stand for the operators for "not equal" and so on.
-We assume that these tokens are more than one character long and
-therefore are represented by names, not character literals.)
-
 \1f
-File: bison.info,  Node: How Precedence,  Prev: Precedence Examples,  Up: Precedence
+File: bison.info,  Node: How Precedence,  Next: Non Operators,  Prev: Precedence Examples,  Up: Precedence
 
 5.3.4 How Precedence Works
 --------------------------
@@ -6546,6 +6684,41 @@ rule or the lookahead token has no precedence, then the default is to
 shift.
 
 \1f
+File: bison.info,  Node: Non Operators,  Prev: How Precedence,  Up: Precedence
+
+5.3.5 Using Precedence For Non Operators
+----------------------------------------
+
+Using properly precedence and associativity directives can help fixing
+shift/reduce conflicts that do not involve arithmetics-like operators.
+For instance, the "dangling `else'" problem (*note Shift/Reduce
+Conflicts: Shift/Reduce.) can be solved elegantly in two different ways.
+
+   In the present case, the conflict is between the token `"else"'
+willing to be shifted, and the rule `if_stmt: "if" expr "then" stmt',
+asking for reduction.  By default, the precedence of a rule is that of
+its last token, here `"then"', so the conflict will be solved
+appropriately by giving `"else"' a precedence higher than that of
+`"then"', for instance as follows:
+
+     %nonassoc "then"
+     %nonassoc "else"
+
+   Alternatively, you may give both tokens the same precedence, in
+which case associativity is used to solve the conflict.  To preserve
+the shift action, use right associativity:
+
+     %right "then" "else"
+
+   Neither solution is perfect however.  Since Bison does not provide,
+so far, support for "scoped" precedence, both force you to declare the
+precedence of these keywords with respect to the other operators your
+grammar.  Therefore, instead of being warned about new conflicts you
+would be unaware of (e.g., a shift/reduce conflict due to `if test then
+1 else 2 + 3' being ambiguous: `if test then 1 else (2 + 3)' or `(if
+test then 1 else 2) + 3'?), the conflict will be already "fixed".
+
+\1f
 File: bison.info,  Node: Contextual Precedence,  Next: Parser States,  Prev: Precedence,  Up: Algorithm
 
 5.4 Context-Dependent Precedence
@@ -6729,6 +6902,47 @@ empty:
      | redirects redirect
      ;
 
+   Yet this proposal introduces another kind of ambiguity!  The input
+`word word' can be parsed as a single `words' composed of two `word's,
+or as two one-`word' `words' (and likewise for `redirect'/`redirects').
+However this ambiguity is now a shift/reduce conflict, and therefore it
+can now be addressed with precedence directives.
+
+   To simplify the matter, we will proceed with `word' and `redirect'
+being tokens: `"word"' and `"redirect"'.
+
+   To prefer the longest `words', the conflict between the token
+`"word"' and the rule `sequence: sequence words' must be resolved as a
+shift.  To this end, we use the same techniques as exposed above, see
+*note Using Precedence For Non Operators: Non Operators.  One solution
+relies on precedences: use `%prec' to give a lower precedence to the
+rule:
+
+     %nonassoc "word"
+     %nonassoc "sequence"
+     %%
+     sequence:
+       /* empty */
+     | sequence word      %prec "sequence"
+     | sequence redirect  %prec "sequence"
+     ;
+
+     words:
+       word
+     | words "word"
+     ;
+
+   Another solution relies on associativity: provide both the token and
+the rule with the same precedence, but make them right-associative:
+
+     %right "word" "redirect"
+     %%
+     sequence:
+       /* empty */
+     | sequence word      %prec "word"
+     | sequence redirect  %prec "redirect"
+     ;
+
 \1f
 File: bison.info,  Node: Mysterious Conflicts,  Next: Tuning LR,  Prev: Reduce/Reduce,  Up: Algorithm
 
@@ -6738,8 +6952,6 @@ File: bison.info,  Node: Mysterious Conflicts,  Next: Tuning LR,  Prev: Reduce/R
 Sometimes reduce/reduce conflicts can occur that don't look warranted.
 Here is an example:
 
-     %token ID
-
      %%
      def: param_spec return_spec ',';
      param_spec:
@@ -6750,20 +6962,20 @@ Here is an example:
        type
      | name ':' type
      ;
-     type: ID;
-     name: ID;
+     type: "id";
+     name: "id";
      name_list:
        name
      | name ',' name_list
      ;
 
    It would seem that this grammar can be parsed with only a single
-token of lookahead: when a `param_spec' is being read, an `ID' is a
-`name' if a comma or colon follows, or a `type' if another `ID'
+token of lookahead: when a `param_spec' is being read, an `"id"' is a
+`name' if a comma or colon follows, or a `type' if another `"id"'
 follows.  In other words, this grammar is LR(1).
 
    However, for historical reasons, Bison cannot by default handle all
-LR(1) grammars.  In this grammar, two contexts, that after an `ID' at
+LR(1) grammars.  In this grammar, two contexts, that after an `"id"' at
 the beginning of a `param_spec' and likewise at the beginning of a
 `return_spec', are similar enough that Bison assumes they are the same.
 They appear similar because the same set of rules would be active--the
@@ -6790,25 +7002,22 @@ that are being confused, and adding something to make them look
 distinct.  In the above example, adding one rule to `return_spec' as
 follows makes the problem go away:
 
-     %token BOGUS
-     ...
-     %%
      ...
      return_spec:
        type
      | name ':' type
-     | ID BOGUS       /* This rule is never used.  */
+     | "id" "bogus"       /* This rule is never used.  */
      ;
 
    This corrects the problem because it introduces the possibility of an
-additional active rule in the context after the `ID' at the beginning of
-`return_spec'.  This rule is not active in the corresponding context in
-a `param_spec', so the two contexts receive distinct parser states.  As
-long as the token `BOGUS' is never generated by `yylex', the added rule
-cannot alter the way actual input is parsed.
+additional active rule in the context after the `"id"' at the beginning
+of `return_spec'.  This rule is not active in the corresponding context
+in a `param_spec', so the two contexts receive distinct parser states.
+As long as the token `"bogus"' is never generated by `yylex', the added
+rule cannot alter the way actual input is parsed.
 
    In this particular example, there is another way to solve the
-problem: rewrite the rule for `return_spec' to use `ID' directly
+problem: rewrite the rule for `return_spec' to use `"id"' directly
 instead of via `name'.  This also causes the two confusing contexts to
 have different sets of active rules, because the one for `return_spec'
 activates the altered rule for `return_spec' rather than the one for
@@ -6820,7 +7029,7 @@ activates the altered rule for `return_spec' rather than the one for
      ;
      return_spec:
        type
-     | ID ':' type
+     | "id" ':' type
      ;
 
    For a more detailed exposition of LALR(1) parsers and parser
@@ -7668,17 +7877,31 @@ File: bison.info,  Node: Debugging,  Next: Invocation,  Prev: Context Dependency
 
 Developing a parser can be a challenge, especially if you don't
 understand the algorithm (*note The Bison Parser Algorithm:
-Algorithm.).  This chapter explains how to generate and read the
-detailed description of the automaton, and how to enable and understand
-the parser run-time traces.
+Algorithm.).  This chapter explains how understand and debug a parser.
+
+   The first sections focus on the static part of the parser: its
+structure.  They explain how to generate and read the detailed
+description of the automaton.  There are several formats available:
+   - as text, see *note Understanding Your Parser: Understanding.;
+
+   - as a graph, see *note Visualizing Your Parser: Graphviz.;
+
+   - or as a markup report that can be turned, for instance, into HTML,
+     see *note Visualizing your parser in multiple formats: Xml.
+
+   The last section focuses on the dynamic part of the parser: how to
+enable and understand the parser run-time traces (*note Tracing Your
+Parser: Tracing.).
 
 * Menu:
 
 * Understanding::     Understanding the structure of your parser.
+* Graphviz::          Getting a visual representation of the parser.
+* Xml::               Getting a markup representation of the parser.
 * Tracing::           Tracing the execution of your parser.
 
 \1f
-File: bison.info,  Node: Understanding,  Next: Tracing,  Up: Debugging
+File: bison.info,  Node: Understanding,  Next: Graphviz,  Up: Debugging
 
 8.1 Understanding Your Parser
 =============================
@@ -7686,8 +7909,7 @@ File: bison.info,  Node: Understanding,  Next: Tracing,  Up: Debugging
 As documented elsewhere (*note The Bison Parser Algorithm: Algorithm.)
 Bison parsers are "shift/reduce automata".  In some cases (much more
 frequent than one would hope), looking at this automaton is required to
-tune or simply fix a parser.  Bison provides two different
-representation of it, either textually or graphically (as a DOT file).
+tune or simply fix a parser.
 
    The textual file is generated when the options `--report' or
 `--verbose' are specified, see *note Invoking Bison: Invocation.  Its
@@ -7717,8 +7939,8 @@ file is called `foo.output'.
 
      calc.y: warning: 1 nonterminal useless in grammar
      calc.y: warning: 1 rule useless in grammar
-     calc.y:11.1-7: warning: nonterminal useless in grammar: useless
-     calc.y:11.10-12: warning: rule useless in grammar: useless: STR
+     calc.y:12.1-7: warning: nonterminal useless in grammar: useless
+     calc.y:12.10-12: warning: rule useless in grammar: useless: STR
      calc.y: conflicts: 7 shift/reduce
 
    When given `--report=state', in addition to `calc.tab.c', it creates
@@ -7785,7 +8007,7 @@ with its set of "items", also known as "pointed rules".  Each item is a
 production rule together with a point (`.') marking the location of the
 input cursor.
 
-     state 0
+     State 0
 
          0 $accept: . exp $end
 
@@ -7809,7 +8031,7 @@ so-called "core" or "kernel" of the item set, but if you want to see
 more detail you can invoke `bison' with `--report=itemset' to list the
 derived items as well:
 
-     state 0
+     State 0
 
          0 $accept: . exp $end
          1 exp: . exp '+' exp
@@ -7824,18 +8046,18 @@ derived items as well:
 
 In the state 1...
 
-     state 1
+     State 1
 
          5 exp: NUM .
 
          $default  reduce using rule 5 (exp)
 
 the rule 5, `exp: NUM;', is completed.  Whatever the lookahead token
-(`$default'), the parser will reduce it.  If it was coming from state
+(`$default'), the parser will reduce it.  If it was coming from State
 0, then, after this reduction it will return to state 0, and will jump
 to state 2 (`exp: go to state 2').
 
-     state 2
+     State 2
 
          0 $accept: exp . $end
          1 exp: exp . '+' exp
@@ -7857,7 +8079,7 @@ default action, any lookahead not listed triggers a syntax error.
 
    The state 3 is named the "final state", or the "accepting state":
 
-     state 3
+     State 3
 
          0 $accept: exp $end .
 
@@ -7869,7 +8091,7 @@ were read), the parsing exits successfully.
    The interpretation of states 4 to 7 is straightforward, and is left
 to the reader.
 
-     state 4
+     State 4
 
          1 exp: exp '+' . exp
 
@@ -7878,7 +8100,7 @@ to the reader.
          exp  go to state 8
 
 
-     state 5
+     State 5
 
          2 exp: exp '-' . exp
 
@@ -7887,7 +8109,7 @@ to the reader.
          exp  go to state 9
 
 
-     state 6
+     State 6
 
          3 exp: exp '*' . exp
 
@@ -7896,7 +8118,7 @@ to the reader.
          exp  go to state 10
 
 
-     state 7
+     State 7
 
          4 exp: exp '/' . exp
 
@@ -7907,7 +8129,7 @@ to the reader.
    As was announced in beginning of the report, `State 8 conflicts: 1
 shift/reduce':
 
-     state 8
+     State 8
 
          1 exp: exp . '+' exp
          1    | exp '+' exp .
@@ -7948,7 +8170,7 @@ generally, some items are eligible only with some set of possible
 lookahead tokens.  When run with `--report=lookahead', Bison specifies
 these lookahead tokens:
 
-     state 8
+     State 8
 
          1 exp: exp . '+' exp
          1    | exp '+' exp .  [$end, '+', '-', '/']
@@ -7974,7 +8196,7 @@ solved conflicts in the report:
 
    The remaining states are similar:
 
-     state 9
+     State 9
 
          1 exp: exp . '+' exp
          2    | exp . '-' exp
@@ -7988,7 +8210,7 @@ solved conflicts in the report:
          '/'       [reduce using rule 2 (exp)]
          $default  reduce using rule 2 (exp)
 
-     state 10
+     State 10
 
          1 exp: exp . '+' exp
          2    | exp . '-' exp
@@ -8001,7 +8223,7 @@ solved conflicts in the report:
          '/'       [reduce using rule 3 (exp)]
          $default  reduce using rule 3 (exp)
 
-     state 11
+     State 11
 
          1 exp: exp . '+' exp
          2    | exp . '-' exp
@@ -8024,10 +8246,183 @@ Observe that state 11 contains conflicts not only due to the lack of
 precedence of `/' with respect to `+', `-', and `*', but also because
 the associativity of `/' is not specified.
 
+   Bison may also produce an HTML version of this output, via an XML
+file and XSLT processing (*note Visualizing your parser in multiple
+formats: Xml.).
+
 \1f
-File: bison.info,  Node: Tracing,  Prev: Understanding,  Up: Debugging
+File: bison.info,  Node: Graphviz,  Next: Xml,  Prev: Understanding,  Up: Debugging
+
+8.2 Visualizing Your Parser
+===========================
+
+As another means to gain better understanding of the shift/reduce
+automaton corresponding to the Bison parser, a DOT file can be
+generated. Note that debugging a real grammar with this is tedious at
+best, and impractical most of the times, because the generated files
+are huge (the generation of a PDF or PNG file from it will take very
+long, and more often than not it will fail due to memory exhaustion).
+This option was rather designed for beginners, to help them understand
+LR parsers.
+
+   This file is generated when the `--graph' option is specified (*note
+Invoking Bison: Invocation.).  Its name is made by removing `.tab.c' or
+`.c' from the parser implementation file name, and adding `.dot'
+instead.  If the grammar file is `foo.y', the Graphviz output file is
+called `foo.dot'.  A DOT file may also be produced via an XML file and
+XSLT processing (*note Visualizing your parser in multiple formats:
+Xml.).
+
+   The following grammar file, `rr.y', will be used in the sequel:
+
+     %%
+     exp: a ";" | b ".";
+     a: "0";
+     b: "0";
+
+   The graphical output is very similar to the textual one, and as such
+it is easier understood by making direct comparisons between them.
+*Note Debugging Your Parser: Debugging, for a detailled analysis of the
+textual report.
+
+Graphical Representation of States
+----------------------------------
+
+The items (pointed rules) for each state are grouped together in graph
+nodes.  Their numbering is the same as in the verbose file. See the
+following points, about transitions, for examples
+
+   When invoked with `--report=lookaheads', the lookahead tokens, when
+needed, are shown next to the relevant rule between square brackets as a
+comma separated list. This is the case in the figure for the
+representation of reductions, below.
+
+
+   The transitions are represented as directed edges between the
+current and the target states.
+
+Graphical Representation of Shifts
+----------------------------------
 
-8.2 Tracing Your Parser
+Shifts are shown as solid arrows, labelled with the lookahead token for
+that shift. The following describes a reduction in the `rr.output' file:
+
+     State 3
+
+         1 exp: a . ";"
+
+         ";"  shift, and go to state 6
+
+   A Graphviz rendering of this portion of the graph could be:
+
+.----------------.
+|    State 3     |
+| 1 exp: a . ";" |
+`----------------'
+        |
+        | ";"
+        |
+        v
+.----------------.
+|    State 6     |
+| 1 exp: a ";" . |
+`----------------'
+
+Graphical Representation of Reductions
+--------------------------------------
+
+Reductions are shown as solid arrows, leading to a diamond-shaped node
+bearing the number of the reduction rule. The arrow is labelled with the
+appropriate comma separated lookahead tokens. If the reduction is the
+default action for the given state, there is no such label.
+
+   This is how reductions are represented in the verbose file
+`rr.output':
+     State 1
+
+         3 a: "0" .  [";"]
+         4 b: "0" .  ["."]
+
+         "."       reduce using rule 4 (b)
+         $default  reduce using rule 3 (a)
+
+   A Graphviz rendering of this portion of the graph could be:
+
+       .------------------.
+       |     State 1      |
+       | 3 a: "0" . [";"] |
+       | 4 b: "0" . ["."] |
+       `------------------'
+             /     \
+            /       \ ["."]
+           /         \
+          v           v
+         / \         / \
+        / R \       / R \
+(green) \ 3 /       \ 4 / (green)
+         \ /         \ /
+
+When unresolved conflicts are present, because in deterministic parsing
+a single decision can be made, Bison can arbitrarily choose to disable a
+reduction, see *note Shift/Reduce Conflicts: Shift/Reduce.  Discarded
+actions are distinguished by a red filling color on these nodes, just
+like how they are reported between square brackets in the verbose file.
+
+   The reduction corresponding to the rule number 0 is the acceptation
+state. It is shown as a blue diamond, labelled "Acc".
+
+Graphical representation of go tos
+----------------------------------
+
+The `go to' jump transitions are represented as dotted lines bearing
+the name of the rule being jumped to.
+
+\1f
+File: bison.info,  Node: Xml,  Next: Tracing,  Prev: Graphviz,  Up: Debugging
+
+8.3 Visualizing your parser in multiple formats
+===============================================
+
+Bison supports two major report formats: textual output (*note
+Understanding Your Parser: Understanding.) when invoked with option
+`--verbose', and DOT (*note Visualizing Your Parser: Graphviz.) when
+invoked with option `--graph'. However, another alternative is to
+output an XML file that may then be, with `xsltproc', rendered as
+either a raw text format equivalent to the verbose file, or as an HTML
+version of the same file, with clickable transitions, or even as a DOT.
+The `.output' and DOT files obtained via XSLT have no difference
+whatsoever with those obtained by invoking `bison' with options
+`--verbose' or `--graph'.
+
+   The XML file is generated when the options `-x' or `--xml[=FILE]'
+are specified, see *note Invoking Bison: Invocation.  If not specified,
+its name is made by removing `.tab.c' or `.c' from the parser
+implementation file name, and adding `.xml' instead.  For instance, if
+the grammar file is `foo.y', the default XML output file is `foo.xml'.
+
+   Bison ships with a `data/xslt' directory, containing XSL
+Transformation files to apply to the XML file. Their names are
+non-ambiguous:
+
+`xml2dot.xsl'
+     Used to output a copy of the DOT visualization of the automaton.
+
+`xml2text.xsl'
+     Used to output a copy of the `.output' file.
+
+`xml2xhtml.xsl'
+     Used to output an xhtml enhancement of the `.output' file.
+
+   Sample usage (requires `xsltproc'):
+     $ bison -x gr.y
+     $ bison --print-datadir
+     /usr/local/share/bison
+     $ xsltproc /usr/local/share/bison/xslt/xml2xhtml.xsl gr.xml >gr.html
+
+\1f
+File: bison.info,  Node: Tracing,  Prev: Xml,  Up: Debugging
+
+8.4 Tracing Your Parser
 =======================
 
 When a Bison grammar compiles properly but parses "incorrectly", the
@@ -8042,7 +8437,7 @@ When a Bison grammar compiles properly but parses "incorrectly", the
 \1f
 File: bison.info,  Node: Enabling Traces,  Next: Mfcalc Traces,  Up: Tracing
 
-8.2.1 Enabling Traces
+8.4.1 Enabling Traces
 ---------------------
 
 There are several means to enable compilation of trace facilities:
@@ -8057,8 +8452,8 @@ the macro `YYDEBUG'
      If the `%define' variable `api.prefix' is used (*note Multiple
      Parsers in the Same Program: Multiple Parsers.), for instance
      `%define api.prefix x', then if `CDEBUG' is defined, its value
-     controls the tracing feature (enabled iff nonzero); otherwise
-     tracing is enabled iff `YYDEBUG' is nonzero.
+     controls the tracing feature (enabled if and only if nonzero);
+     otherwise tracing is enabled if and only if `YYDEBUG' is nonzero.
 
 the option `-t' (POSIX Yacc compliant)
 the option `--debug' (Bison extension)
@@ -8117,7 +8512,7 @@ values of variables show where in the grammar it is working.
 \1f
 File: bison.info,  Node: Mfcalc Traces,  Next: The YYPRINT Macro,  Prev: Enabling Traces,  Up: Tracing
 
-8.2.2 Enabling Debug Traces for `mfcalc'
+8.4.2 Enabling Debug Traces for `mfcalc'
 ----------------------------------------
 
 The debugging information normally gives the token type of each token
@@ -8193,7 +8588,7 @@ formatted per our `%printer' specification: `sin()'.  The parser stores
      Entering state 24
 
 The previous reduction demonstrates the `%printer' directive for
-`<val>': both the token `NUM' and the resulting non-terminal `exp' have
+`<val>': both the token `NUM' and the resulting nonterminal `exp' have
 `1' as value.
 
      Reading a token: Next token is token '-' ()
@@ -8265,7 +8660,7 @@ the completion of the parsing.
 \1f
 File: bison.info,  Node: The YYPRINT Macro,  Prev: Mfcalc Traces,  Up: Tracing
 
-8.2.3 The `YYPRINT' Macro
+8.4.3 The `YYPRINT' Macro
 -------------------------
 
 Before `%printer' support, semantic values could be displayed using the
@@ -8443,6 +8838,41 @@ Operations modes:
      instance, `-Wno-yacc' will hide the warnings about POSIX Yacc
      incompatibilities.
 
+`-f [FEATURE]'
+`--feature[=FEATURE]'
+     Activate miscellaneous FEATURE. FEATURE can be one of:
+    `caret'
+    `diagnostics-show-caret'
+          Show caret errors, in a manner similar to GCC's
+          `-fdiagnostics-show-caret', or Clang's `-fcaret-diagnotics'.
+          The location provided with the message is used to quote the
+          corresponding line of the source file, underlining the
+          important part of it with carets (^). Here is an example,
+          using the following file `in.y':
+
+               %type <ival> exp
+               %%
+               exp: exp '+' exp { $exp = $1 + $2; };
+
+          When invoked with `-fcaret', Bison will report:
+
+               in.y:3.20-23: error: ambiguous reference: '$exp'
+                exp: exp '+' exp { $exp = $1 + $2; };
+                                   ^^^^
+               in.y:3.1-3:       refers to: $exp at $$
+                exp: exp '+' exp { $exp = $1 + $2; };
+                ^^^
+               in.y:3.6-8:       refers to: $exp at $1
+                exp: exp '+' exp { $exp = $1 + $2; };
+                     ^^^
+               in.y:3.14-16:     refers to: $exp at $3
+                exp: exp '+' exp { $exp = $1 + $2; };
+                             ^^^
+               in.y:3.32-33: error: $2 of 'exp' has no declared type
+                exp: exp '+' exp { $exp = $1 + $2; };
+                                               ^^
+
+
 Tuning the parser:
 
 `-t'
@@ -8484,9 +8914,6 @@ Tuning the parser:
      Summary.).  Currently supported languages include C, C++, and Java.
      LANGUAGE is case-insensitive.
 
-     This option is experimental and its effect may be modified in
-     future releases.
-
 `--locations'
      Pretend that `%locations' was specified.  *Note Decl Summary::.
 
@@ -8547,15 +8974,25 @@ Adjust the output:
           Description of the grammar, conflicts (resolved and
           unresolved), and parser's automaton.
 
-    `lookahead'
-          Implies `state' and augments the description of the automaton
-          with each rule's lookahead set.
-
     `itemset'
           Implies `state' and augments the description of the automaton
           with the full set of items for each state, instead of its
           core only.
 
+    `lookahead'
+          Implies `state' and augments the description of the automaton
+          with each rule's lookahead set.
+
+    `solved'
+          Implies `state'.  Explain how conflicts were solved thanks to
+          precedence and associativity directives.
+
+    `all'
+          Enable all the items.
+
+    `none'
+          Do not generate the report.
+
 `--report-file=FILE'
      Specify the FILE for the verbose description.
 
@@ -8602,6 +9039,7 @@ Long Option                     Short Option        Bison Directive
 `--debug'                       `-t'                `%debug'
 `--define=NAME[=VALUE]'         `-D NAME[=VALUE]'   `%define NAME ["VALUE"]'
 `--defines[=FILE]'              `-d'                `%defines ["FILE"]'
+`--feature[=FEATURE]'           `-f [FEATURE]'      
 `--file-prefix=PREFIX'          `-b PREFIX'         `%file-prefix "PREFIX"'
 `--force-define=NAME[=VALUE]'   `-F NAME[=VALUE]'   `%define NAME ["VALUE"]'
 `--graph[=FILE]'                `-g [FILE]'         
@@ -8691,7 +9129,9 @@ the following files:
 `position.hh'
 `location.hh'
      The definition of the classes `position' and `location', used for
-     location tracking.  *Note C++ Location Values::.
+     location tracking.  These files are not generated if the `%define'
+     variable `api.location.type' is defined.  *Note C++ Location
+     Values::.
 
 `stack.hh'
      An auxiliary class `stack' used by the parser.
@@ -8743,18 +9183,22 @@ File: bison.info,  Node: C++ Location Values,  Next: C++ Parser Interface,  Prev
 --------------------------
 
 When the directive `%locations' is used, the C++ parser supports
-location tracking, see *note Tracking Locations::.  Two auxiliary
-classes define a `position', a single point in a file, and a
-`location', a range composed of a pair of `position's (possibly
-spanning several files).
+location tracking, see *note Tracking Locations::.
+
+   By default, two auxiliary classes define a `position', a single point
+in a file, and a `location', a range composed of a pair of `position's
+(possibly spanning several files).  But if the `%define' variable
+`api.location.type' is defined, then these classes will not be
+generated, and the user defined type will be used.
 
    In this section `uint' is an abbreviation for `unsigned int': in
 genuine code only the latter is used.
 
 * Menu:
 
-* C++ position::         One point in the source file
-* C++ location::         Two points in the source file
+* C++ position::                One point in the source file
+* C++ location::                Two points in the source file
+* User Defined Location Type::  Required interface for locations
 
 \1f
 File: bison.info,  Node: C++ position,  Next: C++ location,  Up: C++ Location Values
@@ -8806,7 +9250,7 @@ File: bison.info,  Node: C++ position,  Next: C++ location,  Up: C++ Location Va
      FILE is null.
 
 \1f
-File: bison.info,  Node: C++ location,  Prev: C++ position,  Up: C++ Location Values
+File: bison.info,  Node: C++ location,  Next: User Defined Location Type,  Prev: C++ position,  Up: C++ Location Values
 
 10.1.3.2 C++ `location'
 .......................
@@ -8853,6 +9297,49 @@ File: bison.info,  Node: C++ location,  Prev: C++ position,  Up: C++ Location Va
      defined, or equal filename/line or column.
 
 \1f
+File: bison.info,  Node: User Defined Location Type,  Prev: C++ location,  Up: C++ Location Values
+
+10.1.3.3 User Defined Location Type
+...................................
+
+Instead of using the built-in types you may use the `%define' variable
+`api.location.type' to specify your own type:
+
+     %define api.location.type LOCATIONTYPE
+
+   The requirements over your LOCATIONTYPE are:
+   * it must be copyable;
+
+   * in order to compute the (default) value of `@$' in a reduction, the
+     parser basically runs
+          @$.begin = @$1.begin;
+          @$.end   = @$N.end; // The location of last right-hand side symbol.
+     so there must be copyable `begin' and `end' members;
+
+   * alternatively you may redefine the computation of the default
+     location, in which case these members are not required (*note
+     Location Default Action::);
+
+   * if traces are enabled, then there must exist an `std::ostream&
+     operator<< (std::ostream& o, const LOCATIONTYPE& s)' function.
+
+
+   In programs with several C++ parsers, you may also use the `%define'
+variable `api.location.type' to share a common set of built-in
+definitions for `position' and `location'.  For instance, one parser
+`master/parser.yy' might use:
+
+     %defines
+     %locations
+     %define namespace "master::"
+
+to generate the `master/position.hh' and `master/location.hh' files,
+reused by other parsers as follows:
+
+     %define api.location.type "master::location"
+     %code requires { #include <master/location.hh> }
+
+\1f
 File: bison.info,  Node: C++ Parser Interface,  Next: C++ Scanner Interface,  Prev: C++ Location Values,  Up: C++ Parsers
 
 10.1.4 C++ Parser Interface
@@ -8884,6 +9371,10 @@ additional argument for its constructor.
  -- Method on parser: int parse ()
      Run the syntactic analysis, and return 0 on success, 1 otherwise.
 
+     The whole function is wrapped in a `try'/`catch' block, so that
+     when an exception is thrown, the `%destructor's are called to
+     release the lookahead symbol, and the symbols pushed on the stack.
+
  -- Method on parser: std::ostream& debug_stream ()
  -- Method on parser: void set_debug_stream (std::ostream& O)
      Get or set the stream used for tracing the parsing.  It defaults to
@@ -8908,7 +9399,8 @@ File: bison.info,  Node: C++ Scanner Interface,  Next: A Complete C++ Example,
 
 The parser invokes the scanner by calling `yylex'.  Contrary to C
 parsers, C++ parsers are always pure: there is no point in using the
-`%define api.pure' directive.  Therefore the interface is as follows.
+`%define api.pure full' directive.  Therefore the interface is as
+follows.
 
  -- Method on parser: int yylex (semantic_type* YYLVAL, location_type*
           YYLLOC, TYPE1 ARG1, ...)
@@ -9088,7 +9580,7 @@ changed several times, it is safer to require the version you designed
 the grammar for.
 
      %skeleton "lalr1.cc" /* -*- C++ -*- */
-     %require "2.6.2"
+     %require "2.7.12-4996"
      %defines
      %define parser_class_name "calcxx_parser"
 
@@ -9268,19 +9760,26 @@ instance.
      %{
        typedef yy::calcxx_parser::token token;
      %}
-                /* Convert ints to the actual type of tokens.  */
-     [-+*/]     return yy::calcxx_parser::token_type (yytext[0]);
-     ":="       return token::ASSIGN;
-     {int}      {
-       errno = 0;
-       long n = strtol (yytext, NULL, 10);
-       if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
-         driver.error (*yylloc, "integer is out of range");
-       yylval->ival = n;
-       return token::NUMBER;
-     }
-     {id}       yylval->sval = new std::string (yytext); return token::IDENTIFIER;
-     .          driver.error (*yylloc, "invalid character");
+              /* Convert ints to the actual type of tokens.  */
+     [-+*/]   return yy::calcxx_parser::token_type (yytext[0]);
+
+     ":="     return token::ASSIGN;
+
+     {int}    {
+                errno = 0;
+                long n = strtol (yytext, NULL, 10);
+                if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
+                  driver.error (*yylloc, "integer is out of range");
+                yylval->ival = n;
+                return token::NUMBER;
+              }
+
+     {id}     {
+                yylval->sval = new std::string (yytext);
+                return token::IDENTIFIER;
+              }
+
+     .        driver.error (*yylloc, "invalid character");
      %%
 
 Finally, because the scanner related driver's member function depend on
@@ -9372,7 +9871,8 @@ implementation file contains a single class for the parser.
    Contrary to C parsers, Java parsers do not use global variables; the
 state of the parser is always local to an instance of the parser class.
 Therefore, all Java parsers are "pure", and the `%pure-parser' and
-`%define api.pure' directives does not do anything when used in Java.
+`%define api.pure full' directives does not do anything when used in
+Java.
 
    Push parsers are currently unsupported in Java and `%define
 api.push-pull' have no effect.
@@ -9441,13 +9941,13 @@ user-defined class defines a "position", a single point in a file;
 Bison itself defines a class representing a "location", a range
 composed of a pair of positions (possibly spanning several files).  The
 location class is an inner class of the parser; the name is `Location'
-by default, and may also be renamed using `%define location_type
+by default, and may also be renamed using `%define api.location.type
 "CLASS-NAME"'.
 
    The location class treats the position as a completely opaque value.
 By default, the class name is `Position', but this can be changed with
-`%define position_type "CLASS-NAME"'.  This class must be supplied by
-the user.
+`%define api.position.type "CLASS-NAME"'.  This class must be supplied
+by the user.
 
  -- Instance Variable of Location: Position begin
  -- Instance Variable of Location: Position end
@@ -9563,7 +10063,8 @@ in this case.
  -- Method on Lexer: void yyerror (Location LOC, String MSG)
      This method is defined by the user to emit an error message.  The
      first parameter is omitted if location tracking is not active.
-     Its type can be changed using `%define location_type "CLASS-NAME".'
+     Its type can be changed using `%define api.location.type
+     "CLASS-NAME".'
 
  -- Method on Lexer: int yylex ()
      Return the next token.  Its type is the return value, its semantic
@@ -9579,7 +10080,7 @@ in this case.
      `yylex' returned, and the first position beyond it.  These methods
      are not needed unless location tracking is active.
 
-     The return type can be changed using `%define position_type
+     The return type can be changed using `%define api.position.type
      "CLASS-NAME".'
 
  -- Method on Lexer: Object getLVal ()
@@ -9790,11 +10291,11 @@ meaning when used in a Java parser.
      comma-separated list.  Default is `java.io.IOException'.  *Note
      Java Scanner Interface::.
 
- -- Directive: %define location_type "CLASS"
+ -- Directive: %define api.location.type "CLASS"
      The name of the class used for locations (a range between two
      positions).  This class is generated as an inner class of the
-     parser class by `bison'.  Default is `Location'.  *Note Java
-     Location Values::.
+     parser class by `bison'.  Default is `Location'.  Formerly named
+     `location_type'.  *Note Java Location Values::.
 
  -- Directive: %define package "PACKAGE"
      The package to put the parser class in.  Default is none.  *Note
@@ -9804,10 +10305,10 @@ meaning when used in a Java parser.
      The name of the parser class.  Default is `YYParser' or
      `NAME-PREFIXParser'.  *Note Java Bison Interface::.
 
- -- Directive: %define position_type "CLASS"
+ -- Directive: %define api.position.type "CLASS"
      The name of the class used for positions. This class must be
-     supplied by the user.  Default is `Position'.  *Note Java Location
-     Values::.
+     supplied by the user.  Default is `Position'.  Formerly named
+     `position_type'.  *Note Java Location Values::.
 
  -- Directive: %define public
      Whether the parser class is declared `public'.  Default is false.
@@ -9879,7 +10380,7 @@ or
 
      My parser includes support for an `#include'-like feature, in
      which case I run `yyparse' from `yyparse'.  This fails although I
-     did specify `%define api.pure'.
+     did specify `%define api.pure full'.
 
    These problems typically come not from Bison itself, but from
 Lex-generated scanners.  Because these scanners use large buffers for
@@ -10205,17 +10706,24 @@ Appendix A Bison Symbols
      *Note Tracking Locations::.
 
  -- Variable: @N
+ -- Symbol: @N
      In an action, the location of the N-th symbol of the right-hand
      side of the rule.  *Note Tracking Locations::.
 
- -- Variable: @NAME
-     In an action, the location of a symbol addressed by name.  *Note
-     Tracking Locations::.
+     In a grammar, the Bison-generated nonterminal symbol for a
+     mid-rule action with a semantical value.  *Note Mid-Rule Action
+     Translation::.
 
+ -- Variable: @NAME
  -- Variable: @[NAME]
-     In an action, the location of a symbol addressed by name.  *Note
+     In an action, the location of a symbol addressed by NAME.  *Note
      Tracking Locations::.
 
+ -- Symbol: $@N
+     In a grammar, the Bison-generated nonterminal symbol for a
+     mid-rule action with no semantical value.  *Note Mid-Rule Action
+     Translation::.
+
  -- Variable: $$
      In an action, the semantic value of the left-hand side of the rule.
      *Note Actions::.
@@ -10225,11 +10733,8 @@ Appendix A Bison Symbols
      right-hand side of the rule.  *Note Actions::.
 
  -- Variable: $NAME
-     In an action, the semantic value of a symbol addressed by name.
-     *Note Actions::.
-
  -- Variable: $[NAME]
-     In an action, the semantic value of a symbol addressed by name.
+     In an action, the semantic value of a symbol addressed by NAME.
      *Note Actions::.
 
  -- Delimiter: %%
@@ -10242,8 +10747,9 @@ Appendix A Bison Symbols
      parser implementation file.  Such code forms the prologue of the
      grammar file.  *Note Outline of a Bison Grammar: Grammar Outline.
 
- -- Construct: /*...*/
-     Comment delimiters, as in C.
+ -- Construct: /* ... */
+ -- Construct: // ...
+     Comments, as in C/C++.
 
  -- Delimiter: :
      Separates a rule's result from its components.  *Note Syntax of
@@ -10636,7 +11142,8 @@ Appendix B Glossary
 
 Accepting state
      A state whose only action is the accept action.  The accepting
-     state is thus a consistent state.  *Note Understanding::.
+     state is thus a consistent state.  *Note Understanding Your
+     Parser: Understanding.
 
 Backus-Naur Form (BNF; also called "Backus Normal Form")
      Formal method of specifying context-free grammars originally
@@ -11390,73 +11897,85 @@ Index of Terms
 \0\b[index\0\b]
 * Menu:
 
-* $ <1>:                                 Action Features.     (line  14)
-* $ <2>:                                 Table of Symbols.    (line  31)
-* $ <3>:                                 Java Action Features.
+* $ <1>:                                 Table of Symbols.    (line  25)
+* $ <2>:                                 Java Action Features.
                                                               (line  13)
-* $:                                     Table of Symbols.    (line  35)
+* $ <3>:                                 Table of Symbols.    (line  39)
+* $ <4>:                                 Action Features.     (line  14)
+* $:                                     Table of Symbols.    (line  34)
 * $$ <1>:                                Java Action Features.
                                                               (line  21)
-* $$ <2>:                                Actions.             (line   6)
-* $$ <3>:                                Action Features.     (line  10)
-* $$:                                    Table of Symbols.    (line  23)
-* $< <1>:                                Action Features.     (line  23)
-* $<:                                    Java Action Features.
+* $$ <2>:                                Action Features.     (line  10)
+* $$ <3>:                                Table of Symbols.    (line  30)
+* $$:                                    Actions.             (line   6)
+* $< <1>:                                Java Action Features.
                                                               (line  17)
+* $< <2>:                                Action Features.     (line  18)
+* $<:                                    Java Action Features.
+                                                              (line  29)
+* $@N:                                   Mid-Rule Action Translation.
+                                                              (line   6)
 * $[NAME]:                               Actions.             (line   6)
-* $accept:                               Table of Symbols.    (line  81)
-* $end:                                  Table of Symbols.    (line 119)
+* $accept:                               Table of Symbols.    (line  86)
+* $end:                                  Table of Symbols.    (line 124)
 * $N:                                    Actions.             (line   6)
 * $NAME:                                 Actions.             (line   6)
-* $undefined:                            Table of Symbols.    (line 240)
-* % <1>:                                 Table of Symbols.    (line  44)
-* %:                                     Java Declarations Summary.
+* $undefined:                            Table of Symbols.    (line 245)
+* % <1>:                                 Java Declarations Summary.
                                                               (line  53)
-* %% <1>:                                Table of Symbols.    (line  39)
+* %:                                     Table of Symbols.    (line  48)
+* %% <1>:                                Table of Symbols.    (line  43)
 * %%:                                    Java Declarations Summary.
                                                               (line  49)
-* %code <1>:                             Decl Summary.        (line  47)
-* %code <2>:                             Java Declarations Summary.
-                                                              (line  37)
-* %code <3>:                             %code Summary.       (line   6)
+* %code <1>:                             Table of Symbols.    (line  92)
+* %code <2>:                             %code Summary.       (line   6)
+* %code <3>:                             Calc++ Parser.       (line  65)
 * %code <4>:                             Prologue Alternatives.
                                                               (line   6)
-* %code <5>:                             Table of Symbols.    (line  86)
-* %code <6>:                             %code Summary.       (line  27)
-* %code <7>:                             Table of Symbols.    (line  87)
-* %code:                                 Calc++ Parser.       (line  65)
-* %code imports <1>:                     Java Declarations Summary.
+* %code <5>:                             Decl Summary.        (line  46)
+* %code <6>:                             Java Declarations Summary.
+                                                              (line  37)
+* %code <7>:                             Table of Symbols.    (line  91)
+* %code:                                 Decl Summary.        (line  47)
+* %code imports <1>:                     %code Summary.       (line  83)
+* %code imports:                         Java Declarations Summary.
                                                               (line  41)
-* %code imports:                         %code Summary.       (line  83)
 * %code lexer:                           Java Declarations Summary.
                                                               (line  45)
-* %code provides <1>:                    Decl Summary.        (line  95)
-* %code provides <2>:                    %code Summary.       (line  55)
-* %code provides:                        Prologue Alternatives.
+* %code provides <1>:                    %code Summary.       (line  55)
+* %code provides <2>:                    Prologue Alternatives.
                                                               (line   6)
-* %code requires <1>:                    Prologue Alternatives.
+* %code provides:                        Decl Summary.        (line  95)
+* %code requires <1>:                    Decl Summary.        (line  95)
+* %code requires <2>:                    %code Summary.       (line  41)
+* %code requires <3>:                    Calc++ Parser.       (line  17)
+* %code requires:                        Prologue Alternatives.
                                                               (line   6)
-* %code requires <2>:                    Decl Summary.        (line  95)
-* %code requires <3>:                    %code Summary.       (line  41)
-* %code requires:                        Calc++ Parser.       (line  17)
 * %code top <1>:                         Prologue Alternatives.
                                                               (line   6)
 * %code top:                             %code Summary.       (line  67)
-* %debug <1>:                            Table of Symbols.    (line  92)
-* %debug <2>:                            Enabling Traces.     (line  28)
-* %debug:                                Decl Summary.        (line  52)
-* %define <1>:                           Decl Summary.        (line  61)
-* %define <2>:                           %define Summary.     (line  15)
-* %define <3>:                           Decl Summary.        (line  59)
-* %define <4>:                           Table of Symbols.    (line  95)
+* %debug <1>:                            Decl Summary.        (line  52)
+* %debug <2>:                            Table of Symbols.    (line  97)
+* %debug:                                Enabling Traces.     (line  28)
+* %define <1>:                           %define Summary.     (line  16)
+* %define <2>:                           Decl Summary.        (line  59)
+* %define <3>:                           Table of Symbols.    (line 100)
+* %define <4>:                           Decl Summary.        (line  60)
 * %define:                               %define Summary.     (line  14)
 * %define abstract:                      Java Declarations Summary.
                                                               (line  57)
-* %define api.prefix:                    %define Summary.     (line  49)
-* %define api.pure <1>:                  %define Summary.     (line  62)
-* %define api.pure:                      Pure Decl.           (line   6)
+* %define api.location.type <1>:         %define Summary.     (line  49)
+* %define api.location.type <2>:         Java Declarations Summary.
+                                                              (line  78)
+* %define api.location.type:             User Defined Location Type.
+                                                              (line   6)
+* %define api.position.type:             Java Declarations Summary.
+                                                              (line  92)
+* %define api.prefix:                    %define Summary.     (line  62)
+* %define api.pure <1>:                  Pure Decl.           (line   6)
+* %define api.pure:                      %define Summary.     (line  75)
 * %define api.push-pull <1>:             Push Decl.           (line   6)
-* %define api.push-pull:                 %define Summary.     (line  73)
+* %define api.push-pull:                 %define Summary.     (line 115)
 * %define extends:                       Java Declarations Summary.
                                                               (line  61)
 * %define final:                         Java Declarations Summary.
@@ -11465,31 +11984,24 @@ Index of Terms
                                                               (line  69)
 * %define lex_throws:                    Java Declarations Summary.
                                                               (line  73)
-* %define location_type:                 Java Declarations Summary.
-                                                              (line  78)
-* %define lr.default-reductions <1>:     Default Reductions.  (line   6)
-* %define lr.default-reductions:         %define Summary.     (line  86)
-* %define lr.default-reductions WHERE:   Default Reductions.  (line  84)
-* %define lr.keep-unreachable-states <1>: %define Summary.    (line 103)
-* %define lr.keep-unreachable-states:    Unreachable States.  (line   6)
-* %define lr.keep-unreachable-states VALUE: Unreachable States.
-                                                              (line  17)
-* %define lr.type <1>:                   %define Summary.     (line 114)
-* %define lr.type:                       LR Table Construction.
+* %define lr.default-reductions <1>:     %define Summary.     (line 128)
+* %define lr.default-reductions:         Default Reductions.  (line   6)
+* %define lr.keep-unreachable-states <1>: Unreachable States. (line   6)
+* %define lr.keep-unreachable-states <2>: %define Summary.    (line 145)
+* %define lr.keep-unreachable-states:    Unreachable States.  (line  17)
+* %define lr.type <1>:                   LR Table Construction.
                                                               (line   6)
-* %define lr.type TYPE:                  LR Table Construction.
+* %define lr.type <2>:                   %define Summary.     (line 156)
+* %define lr.type:                       LR Table Construction.
                                                               (line  24)
-* %define namespace <1>:                 %define Summary.     (line 126)
+* %define namespace <1>:                 %define Summary.     (line 168)
 * %define namespace:                     C++ Bison Interface. (line  10)
 * %define package:                       Java Declarations Summary.
                                                               (line  84)
-* %define parse.lac <1>:                 LAC.                 (line   6)
-* %define parse.lac:                     %define Summary.     (line 166)
-* %define parse.lac VALUE:               LAC.                 (line  29)
+* %define parse.lac <1>:                 %define Summary.     (line 208)
+* %define parse.lac:                     LAC.                 (line  29)
 * %define parser_class_name:             Java Declarations Summary.
                                                               (line  88)
-* %define position_type:                 Java Declarations Summary.
-                                                              (line  92)
 * %define public:                        Java Declarations Summary.
                                                               (line  97)
 * %define strictfp:                      Java Declarations Summary.
@@ -11498,128 +12010,138 @@ Index of Terms
                                                               (line 101)
 * %define throws:                        Java Declarations Summary.
                                                               (line 109)
-* %defines <1>:                          Decl Summary.        (line  65)
-* %defines:                              Table of Symbols.    (line 101)
-* %destructor <1>:                       Table of Symbols.    (line 109)
-* %destructor <2>:                       Decl Summary.        (line 102)
-* %destructor <3>:                       Destructor Decl.     (line   6)
-* %destructor:                           Mid-Rule Actions.    (line  59)
-* %dprec <1>:                            Merging GLR Parses.  (line   6)
-* %dprec:                                Table of Symbols.    (line 114)
-* %error-verbose <1>:                    Error Reporting.     (line  17)
-* %error-verbose:                        Table of Symbols.    (line 133)
-* %expect <1>:                           Decl Summary.        (line  38)
-* %expect:                               Expect Decl.         (line   6)
-* %expect-rr <1>:                        Expect Decl.         (line   6)
-* %expect-rr:                            Simple GLR Parsers.  (line   6)
-* %file-prefix <1>:                      Table of Symbols.    (line 137)
-* %file-prefix:                          Decl Summary.        (line 107)
+* %defines <1>:                          Decl Summary.        (line 113)
+* %defines:                              Table of Symbols.    (line 110)
+* %destructor <1>:                       Table of Symbols.    (line 114)
+* %destructor <2>:                       Destructor Decl.     (line  22)
+* %destructor <3>:                       Using Mid-Rule Actions.
+                                                              (line  76)
+* %destructor <4>:                       Destructor Decl.     (line   6)
+* %destructor <5>:                       Decl Summary.        (line 116)
+* %destructor:                           Destructor Decl.     (line  22)
+* %dprec <1>:                            Table of Symbols.    (line 119)
+* %dprec:                                Merging GLR Parses.  (line   6)
+* %error-verbose <1>:                    Table of Symbols.    (line 138)
+* %error-verbose:                        Error Reporting.     (line  17)
+* %expect <1>:                           Expect Decl.         (line   6)
+* %expect:                               Decl Summary.        (line  38)
+* %expect-rr <1>:                        Simple GLR Parsers.  (line   6)
+* %expect-rr:                            Expect Decl.         (line   6)
+* %file-prefix <1>:                      Decl Summary.        (line 121)
+* %file-prefix:                          Table of Symbols.    (line 142)
 * %glr-parser <1>:                       Simple GLR Parsers.  (line   6)
-* %glr-parser <2>:                       Table of Symbols.    (line 141)
-* %glr-parser:                           GLR Parsers.         (line   6)
-* %initial-action <1>:                   Table of Symbols.    (line 145)
-* %initial-action:                       Initial Action Decl. (line  11)
-* %language <1>:                         Table of Symbols.    (line 149)
-* %language:                             Decl Summary.        (line 111)
+* %glr-parser <2>:                       GLR Parsers.         (line   6)
+* %glr-parser:                           Table of Symbols.    (line 146)
+* %initial-action <1>:                   Initial Action Decl. (line  11)
+* %initial-action <2>:                   Table of Symbols.    (line 150)
+* %initial-action:                       Initial Action Decl. (line   6)
+* %language <1>:                         Decl Summary.        (line 125)
+* %language:                             Table of Symbols.    (line 154)
 * %language "Java":                      Java Declarations Summary.
                                                               (line  10)
-* %left <1>:                             Table of Symbols.    (line 153)
-* %left <2>:                             Using Precedence.    (line   6)
-* %left:                                 Decl Summary.        (line  21)
-* %lex-param <1>:                        Table of Symbols.    (line 157)
-* %lex-param <2>:                        Java Declarations Summary.
+* %left <1>:                             Table of Symbols.    (line 158)
+* %left <2>:                             Decl Summary.        (line  21)
+* %left:                                 Using Precedence.    (line   6)
+* %lex-param <1>:                        Pure Calling.        (line  31)
+* %lex-param <2>:                        Table of Symbols.    (line 162)
+* %lex-param:                            Java Declarations Summary.
                                                               (line  13)
-* %lex-param:                            Pure Calling.        (line  31)
-* %locations:                            Decl Summary.        (line 119)
+* %locations:                            Decl Summary.        (line 131)
 * %merge <1>:                            Merging GLR Parses.  (line   6)
-* %merge:                                Table of Symbols.    (line 162)
-* %name-prefix <1>:                      Java Declarations Summary.
+* %merge:                                Table of Symbols.    (line 167)
+* %name-prefix <1>:                      Table of Symbols.    (line 174)
+* %name-prefix:                          Java Declarations Summary.
                                                               (line  19)
-* %name-prefix:                          Table of Symbols.    (line 169)
-* %no-lines <1>:                         Table of Symbols.    (line 186)
-* %no-lines:                             Decl Summary.        (line 126)
+* %no-lines <1>:                         Decl Summary.        (line 138)
+* %no-lines:                             Table of Symbols.    (line 191)
 * %nonassoc <1>:                         Decl Summary.        (line  25)
-* %nonassoc <2>:                         Table of Symbols.    (line 190)
-* %nonassoc <3>:                         Default Reductions.  (line   6)
-* %nonassoc <4>:                         LR Table Construction.
+* %nonassoc <2>:                         Table of Symbols.    (line 195)
+* %nonassoc <3>:                         LR Table Construction.
                                                               (line 103)
-* %nonassoc:                             Using Precedence.    (line   6)
-* %output <1>:                           Table of Symbols.    (line 194)
-* %output:                               Decl Summary.        (line 135)
-* %parse-param <1>:                      Parser Function.     (line  36)
-* %parse-param <2>:                      Java Declarations Summary.
+* %nonassoc <4>:                         Using Precedence.    (line   6)
+* %nonassoc:                             Default Reductions.  (line   6)
+* %output <1>:                           Decl Summary.        (line 147)
+* %output:                               Table of Symbols.    (line 199)
+* %parse-param <1>:                      Table of Symbols.    (line 203)
+* %parse-param <2>:                      Parser Function.     (line  36)
+* %parse-param <3>:                      Java Declarations Summary.
                                                               (line  24)
-* %parse-param <3>:                      Parser Function.     (line  36)
-* %parse-param:                          Table of Symbols.    (line 198)
+* %parse-param:                          Parser Function.     (line  36)
 * %prec <1>:                             Contextual Precedence.
                                                               (line   6)
-* %prec:                                 Table of Symbols.    (line 203)
+* %prec:                                 Table of Symbols.    (line 208)
 * %printer:                              Printer Decl.        (line   6)
-* %pure-parser <1>:                      Table of Symbols.    (line 207)
-* %pure-parser:                          Decl Summary.        (line 138)
-* %require <1>:                          Require Decl.        (line   6)
-* %require <2>:                          Decl Summary.        (line 143)
-* %require:                              Table of Symbols.    (line 212)
-* %right <1>:                            Using Precedence.    (line   6)
-* %right <2>:                            Table of Symbols.    (line 216)
-* %right:                                Decl Summary.        (line  17)
-* %skeleton <1>:                         Table of Symbols.    (line 220)
-* %skeleton:                             Decl Summary.        (line 147)
+* %pure-parser <1>:                      Table of Symbols.    (line 212)
+* %pure-parser:                          Decl Summary.        (line 150)
+* %require <1>:                          Decl Summary.        (line 155)
+* %require <2>:                          Table of Symbols.    (line 217)
+* %require:                              Require Decl.        (line   6)
+* %right <1>:                            Decl Summary.        (line  17)
+* %right <2>:                            Using Precedence.    (line   6)
+* %right:                                Table of Symbols.    (line 221)
+* %skeleton <1>:                         Decl Summary.        (line 159)
+* %skeleton:                             Table of Symbols.    (line 225)
 * %start <1>:                            Start Decl.          (line   6)
-* %start <2>:                            Decl Summary.        (line  34)
-* %start:                                Table of Symbols.    (line 224)
-* %token <1>:                            Decl Summary.        (line  13)
+* %start <2>:                            Table of Symbols.    (line 229)
+* %start:                                Decl Summary.        (line  34)
+* %token <1>:                            Table of Symbols.    (line 233)
 * %token <2>:                            Java Declarations Summary.
                                                               (line  29)
-* %token <3>:                            Table of Symbols.    (line 228)
-* %token:                                Token Decl.          (line   6)
-* %token-table <1>:                      Decl Summary.        (line 155)
-* %token-table:                          Table of Symbols.    (line 232)
+* %token <3>:                            Token Decl.          (line   6)
+* %token:                                Decl Summary.        (line  13)
+* %token-table <1>:                      Decl Summary.        (line 167)
+* %token-table:                          Table of Symbols.    (line 237)
 * %type <1>:                             Type Decl.           (line   6)
-* %type <2>:                             Table of Symbols.    (line 236)
-* %type <3>:                             Decl Summary.        (line  30)
-* %type:                                 Java Declarations Summary.
+* %type <2>:                             Table of Symbols.    (line 241)
+* %type <3>:                             Java Declarations Summary.
                                                               (line  33)
-* %union <1>:                            Decl Summary.        (line   9)
-* %union <2>:                            Union Decl.          (line   6)
-* %union:                                Table of Symbols.    (line 245)
-* %verbose:                              Decl Summary.        (line 188)
-* %yacc:                                 Decl Summary.        (line 194)
-* /*:                                    Table of Symbols.    (line  49)
-* ::                                     Table of Symbols.    (line  52)
-* ;:                                     Table of Symbols.    (line  56)
+* %type:                                 Decl Summary.        (line  30)
+* %union <1>:                            Table of Symbols.    (line 250)
+* %union <2>:                            Decl Summary.        (line   9)
+* %union:                                Union Decl.          (line   6)
+* %verbose:                              Decl Summary.        (line 200)
+* %yacc:                                 Decl Summary.        (line 206)
+* /*:                                    Table of Symbols.    (line  53)
+* /* ... */:                             Grammar Outline.     (line   6)
+* //:                                    Table of Symbols.    (line  54)
+* // ...:                                Grammar Outline.     (line   6)
+* ::                                     Table of Symbols.    (line  57)
+* ;:                                     Table of Symbols.    (line  61)
 * <*> <1>:                               Printer Decl.        (line   6)
-* <*> <2>:                               Table of Symbols.    (line  63)
-* <*>:                                   Destructor Decl.     (line   6)
-* <> <1>:                                Printer Decl.        (line   6)
-* <> <2>:                                Table of Symbols.    (line  72)
+* <*> <2>:                               Destructor Decl.     (line   6)
+* <*>:                                   Table of Symbols.    (line  68)
+* <> <1>:                                Table of Symbols.    (line  77)
+* <> <2>:                                Printer Decl.        (line   6)
 * <>:                                    Destructor Decl.     (line   6)
-* @$ <1>:                                Table of Symbols.    (line   7)
-* @$ <2>:                                Actions and Locations.
+* @$ <1>:                                Action Features.     (line  98)
+* @$ <2>:                                Table of Symbols.    (line   7)
+* @$ <3>:                                Actions and Locations.
                                                               (line   6)
-* @$ <3>:                                Action Features.     (line  98)
 * @$:                                    Java Action Features.
                                                               (line  39)
-* @[:                                    Table of Symbols.    (line  19)
+* @[:                                    Table of Symbols.    (line  21)
 * @[NAME]:                               Actions and Locations.
                                                               (line   6)
 * @N <1>:                                Action Features.     (line 104)
-* @N <2>:                                Actions and Locations.
+* @N <2>:                                Table of Symbols.    (line  12)
+* @N <3>:                                Action Features.     (line 104)
+* @N <4>:                                Actions and Locations.
+                                                              (line   6)
+* @N <5>:                                Mid-Rule Action Translation.
                                                               (line   6)
-* @N <3>:                                Java Action Features.
+* @N:                                    Java Action Features.
                                                               (line  35)
-* @N:                                    Table of Symbols.    (line  11)
 * @NAME <1>:                             Actions and Locations.
                                                               (line   6)
-* @NAME:                                 Table of Symbols.    (line  15)
+* @NAME:                                 Table of Symbols.    (line  20)
 * abstract syntax tree:                  Implementing Gotos/Loops.
                                                               (line  17)
-* accepting state:                       Understanding.       (line 178)
+* accepting state:                       Understanding.       (line 177)
 * action:                                Actions.             (line   6)
 * action data types:                     Action Types.        (line   6)
 * action features summary:               Action Features.     (line   6)
-* actions in mid-rule <1>:               Destructor Decl.     (line  88)
-* actions in mid-rule:                   Mid-Rule Actions.    (line   6)
+* actions in mid-rule <1>:               Mid-Rule Actions.    (line   6)
+* actions in mid-rule:                   Destructor Decl.     (line  88)
 * actions, location:                     Actions and Locations.
                                                               (line   6)
 * actions, semantic:                     Semantic Actions.    (line   6)
@@ -11666,18 +12188,19 @@ Index of Terms
 * calculator, multi-function:            Multi-function Calc. (line   6)
 * calculator, simple:                    RPN Calc.            (line   6)
 * canonical LR <1>:                      Mysterious Conflicts.
-                                                              (line  45)
+                                                              (line  43)
 * canonical LR:                          LR Table Construction.
                                                               (line   6)
 * character token:                       Symbols.             (line  37)
 * column of position:                    C++ position.        (line  29)
 * columns on location:                   C++ location.        (line  26)
 * columns on position:                   C++ position.        (line  32)
+* comment:                               Grammar Outline.     (line   6)
 * compiling the parser:                  Rpcalc Compile.      (line   6)
-* conflicts <1>:                         Shift/Reduce.        (line   6)
-* conflicts <2>:                         Merging GLR Parses.  (line   6)
-* conflicts <3>:                         Simple GLR Parsers.  (line   6)
-* conflicts:                             GLR Parsers.         (line   6)
+* conflicts <1>:                         Merging GLR Parses.  (line   6)
+* conflicts <2>:                         Shift/Reduce.        (line   6)
+* conflicts <3>:                         GLR Parsers.         (line   6)
+* conflicts:                             Simple GLR Parsers.  (line   6)
 * conflicts, reduce/reduce:              Reduce/Reduce.       (line   6)
 * conflicts, suppressing warnings of:    Expect Decl.         (line   6)
 * consistent states:                     Default Reductions.  (line  17)
@@ -11686,15 +12209,15 @@ Index of Terms
 * context-free grammar:                  Language and Grammar.
                                                               (line   6)
 * controlling function:                  Rpcalc Main.         (line   6)
-* core, item set:                        Understanding.       (line 125)
+* core, item set:                        Understanding.       (line 124)
 * dangling else:                         Shift/Reduce.        (line   6)
 * data type of locations:                Location Type.       (line   6)
 * data types in actions:                 Action Types.        (line   6)
 * data types of semantic values:         Value Type.          (line   6)
 * debug_level on parser:                 C++ Parser Interface.
-                                                              (line  38)
+                                                              (line  42)
 * debug_stream on parser:                C++ Parser Interface.
-                                                              (line  33)
+                                                              (line  37)
 * debugging:                             Tracing.             (line   6)
 * declaration summary:                   Decl Summary.        (line   6)
 * declarations:                          Prologue.            (line   6)
@@ -11717,28 +12240,33 @@ Index of Terms
 * deferred semantic actions:             GLR Semantic Actions.
                                                               (line   6)
 * defining language semantics:           Semantics.           (line   6)
-* delayed syntax error detection <1>:    LR Table Construction.
+* delayed syntax error detection <1>:    Default Reductions.  (line  43)
+* delayed syntax error detection:        LR Table Construction.
                                                               (line 103)
-* delayed syntax error detection:        Default Reductions.  (line  43)
 * delayed yylex invocations:             Default Reductions.  (line  17)
 * discarded symbols:                     Destructor Decl.     (line  98)
-* discarded symbols, mid-rule actions:   Mid-Rule Actions.    (line  59)
+* discarded symbols, mid-rule actions:   Using Mid-Rule Actions.
+                                                              (line  76)
+* dot:                                   Graphviz.            (line   6)
 * else, dangling:                        Shift/Reduce.        (line   6)
-* end of location:                       C++ location.        (line  23)
 * end of Location:                       Java Location Values.
                                                               (line  22)
+* end of location:                       C++ location.        (line  23)
 * epilogue:                              Epilogue.            (line   6)
-* error <1>:                             Error Recovery.      (line  20)
-* error:                                 Table of Symbols.    (line 123)
+* error <1>:                             Table of Symbols.    (line 128)
+* error:                                 Error Recovery.      (line  20)
 * error on parser:                       C++ Parser Interface.
-                                                              (line  44)
+                                                              (line  48)
 * error recovery:                        Error Recovery.      (line   6)
-* error recovery, mid-rule actions:      Mid-Rule Actions.    (line  59)
+* error recovery, mid-rule actions:      Using Mid-Rule Actions.
+                                                              (line  76)
 * error recovery, simple:                Simple Error Recovery.
                                                               (line   6)
 * error reporting function:              Error Reporting.     (line   6)
 * error reporting routine:               Rpcalc Error.        (line   6)
 * examples, simple:                      Examples.            (line   6)
+* exceptions:                            C++ Parser Interface.
+                                                              (line  32)
 * exercises:                             Exercises.           (line   6)
 * file format:                           Grammar Layout.      (line   6)
 * file of position:                      C++ position.        (line  17)
@@ -11749,9 +12277,9 @@ Index of Terms
 * frequently asked questions:            FAQ.                 (line   6)
 * generalized LR (GLR) parsing <1>:      Language and Grammar.
                                                               (line  34)
-* generalized LR (GLR) parsing <2>:      GLR Parsers.         (line   6)
-* generalized LR (GLR) parsing:          Generalized LR Parsing.
+* generalized LR (GLR) parsing <2>:      Generalized LR Parsing.
                                                               (line   6)
+* generalized LR (GLR) parsing:          GLR Parsers.         (line   6)
 * generalized LR (GLR) parsing, ambiguous grammars: Merging GLR Parses.
                                                               (line   6)
 * generalized LR (GLR) parsing, unambiguous grammars: Simple GLR Parsers.
@@ -11761,11 +12289,11 @@ Index of Terms
 * getDebugStream on YYParser:            Java Parser Interface.
                                                               (line  62)
 * getEndPos on Lexer:                    Java Scanner Interface.
-                                                              (line  39)
+                                                              (line  40)
 * getLVal on Lexer:                      Java Scanner Interface.
-                                                              (line  47)
+                                                              (line  48)
 * getStartPos on Lexer:                  Java Scanner Interface.
-                                                              (line  38)
+                                                              (line  39)
 * gettext:                               Internationalization.
                                                               (line   6)
 * glossary:                              Glossary.            (line   6)
@@ -11800,12 +12328,13 @@ Index of Terms
                                                               (line   6)
 * grouping, syntactic:                   Language and Grammar.
                                                               (line  48)
+* Header guard:                          Decl Summary.        (line  98)
 * i18n:                                  Internationalization.
                                                               (line   6)
 * IELR <1>:                              LR Table Construction.
                                                               (line   6)
 * IELR:                                  Mysterious Conflicts.
-                                                              (line  45)
+                                                              (line  43)
 * IELR grammars:                         Language and Grammar.
                                                               (line  22)
 * infix notation calculator:             Infix Calc.          (line   6)
@@ -11818,17 +12347,17 @@ Index of Terms
                                                               (line   6)
 * introduction:                          Introduction.        (line   6)
 * invoking Bison:                        Invocation.          (line   6)
-* item:                                  Understanding.       (line 103)
-* item set core:                         Understanding.       (line 125)
-* kernel, item set:                      Understanding.       (line 125)
+* item:                                  Understanding.       (line 102)
+* item set core:                         Understanding.       (line 124)
+* kernel, item set:                      Understanding.       (line 124)
 * LAC <1>:                               LR Table Construction.
                                                               (line 103)
-* LAC <2>:                               Default Reductions.  (line  54)
-* LAC:                                   LAC.                 (line   6)
-* LALR <1>:                              Mysterious Conflicts.
-                                                              (line  33)
-* LALR:                                  LR Table Construction.
+* LAC <2>:                               LAC.                 (line   6)
+* LAC:                                   Default Reductions.  (line  54)
+* LALR <1>:                              LR Table Construction.
                                                               (line   6)
+* LALR:                                  Mysterious Conflicts.
+                                                              (line  31)
 * LALR grammars:                         Language and Grammar.
                                                               (line  22)
 * language semantics, defining:          Semantics.           (line   6)
@@ -11844,25 +12373,24 @@ Index of Terms
 * lines on position:                     C++ position.        (line  26)
 * literal string token:                  Symbols.             (line  59)
 * literal token:                         Symbols.             (line  37)
-* location <1>:                          Tracking Locations.  (line   6)
-* location:                              Locations.           (line   6)
+* location <1>:                          Locations.           (line   6)
+* location:                              Tracking Locations.  (line   6)
 * location actions:                      Actions and Locations.
                                                               (line   6)
-* Location on Location:                  Java Location Values.
-                                                              (line  29)
 * location on location:                  C++ location.        (line   8)
 * Location on Location:                  Java Location Values.
                                                               (line  25)
+* location on location:                  C++ location.        (line  12)
 * location tracking calculator:          Location Tracking Calc.
                                                               (line   6)
-* location, textual <1>:                 Locations.           (line   6)
-* location, textual:                     Tracking Locations.  (line   6)
+* location, textual <1>:                 Tracking Locations.  (line   6)
+* location, textual:                     Locations.           (line   6)
 * location_type:                         C++ Parser Interface.
                                                               (line  16)
 * lookahead correction:                  LAC.                 (line   6)
 * lookahead token:                       Lookahead.           (line   6)
 * LR:                                    Mysterious Conflicts.
-                                                              (line  33)
+                                                              (line  31)
 * LR grammars:                           Language and Grammar.
                                                               (line  22)
 * ltcalc:                                Location Tracking Calc.
@@ -11871,8 +12399,8 @@ Index of Terms
 * memory exhaustion:                     Memory Management.   (line   6)
 * memory management:                     Memory Management.   (line   6)
 * mfcalc:                                Multi-function Calc. (line   6)
-* mid-rule actions <1>:                  Mid-Rule Actions.    (line   6)
-* mid-rule actions:                      Destructor Decl.     (line  88)
+* mid-rule actions <1>:                  Destructor Decl.     (line  88)
+* mid-rule actions:                      Mid-Rule Actions.    (line   6)
 * multi-function calculator:             Multi-function Calc. (line   6)
 * multicharacter literal:                Symbols.             (line  59)
 * mutual recursion:                      Recursion.           (line  34)
@@ -11883,17 +12411,17 @@ Index of Terms
 * named references:                      Named References.    (line   6)
 * NLS:                                   Internationalization.
                                                               (line   6)
-* nondeterministic parsing <1>:          Generalized LR Parsing.
-                                                              (line   6)
-* nondeterministic parsing:              Language and Grammar.
+* nondeterministic parsing <1>:          Language and Grammar.
                                                               (line  34)
+* nondeterministic parsing:              Generalized LR Parsing.
+                                                              (line   6)
 * nonterminal symbol:                    Symbols.             (line   6)
-* nonterminal, useless:                  Understanding.       (line  49)
+* nonterminal, useless:                  Understanding.       (line  48)
 * operator precedence:                   Precedence.          (line   6)
 * operator precedence, declaring:        Precedence Decl.     (line   6)
 * operator!= on location:                C++ location.        (line  39)
 * operator!= on position:                C++ position.        (line  42)
-* operator+ on location:                 C++ location.        (line  30)
+* operator+ on location:                 C++ location.        (line  31)
 * operator+ on position:                 C++ position.        (line  36)
 * operator+= on location:                C++ location.        (line  32)
 * operator+= on position:                C++ position.        (line  35)
@@ -11916,7 +12444,7 @@ Index of Terms
 * parser stack:                          Algorithm.           (line   6)
 * parser stack overflow:                 Memory Management.   (line   6)
 * parser state:                          Parser States.       (line   6)
-* pointed rule:                          Understanding.       (line 103)
+* pointed rule:                          Understanding.       (line 102)
 * polish notation calculator:            RPN Calc.            (line   6)
 * position on position:                  C++ position.        (line   8)
 * precedence declarations:               Precedence Decl.     (line   6)
@@ -11927,8 +12455,8 @@ Index of Terms
                                                               (line   6)
 * preventing warnings about conflicts:   Expect Decl.         (line   6)
 * printing semantic values:              Printer Decl.        (line   6)
-* Prologue <1>:                          Prologue.            (line   6)
-* Prologue:                              %code Summary.       (line   6)
+* Prologue <1>:                          %code Summary.       (line   6)
+* Prologue:                              Prologue.            (line   6)
 * Prologue Alternatives:                 Prologue Alternatives.
                                                               (line   6)
 * pure parser:                           Pure Decl.           (line   6)
@@ -11941,9 +12469,9 @@ Index of Terms
 * recovery from errors:                  Error Recovery.      (line   6)
 * recursive rule:                        Recursion.           (line   6)
 * reduce/reduce conflict:                Reduce/Reduce.       (line   6)
-* reduce/reduce conflicts <1>:           Merging GLR Parses.  (line   6)
+* reduce/reduce conflicts <1>:           Simple GLR Parsers.  (line   6)
 * reduce/reduce conflicts <2>:           GLR Parsers.         (line   6)
-* reduce/reduce conflicts:               Simple GLR Parsers.  (line   6)
+* reduce/reduce conflicts:               Merging GLR Parses.  (line   6)
 * reduction:                             Algorithm.           (line   6)
 * reentrant parser:                      Pure Decl.           (line   6)
 * requiring a version of Bison:          Require Decl.        (line   6)
@@ -11951,8 +12479,8 @@ Index of Terms
 * right recursion:                       Recursion.           (line  17)
 * rpcalc:                                RPN Calc.            (line   6)
 * rule syntax:                           Rules.               (line   6)
-* rule, pointed:                         Understanding.       (line 103)
-* rule, useless:                         Understanding.       (line  49)
+* rule, pointed:                         Understanding.       (line 102)
+* rule, useless:                         Understanding.       (line  48)
 * rules section for grammar:             Grammar Rules.       (line   6)
 * running Bison (introduction):          Rpcalc Generate.     (line   6)
 * semantic actions:                      Semantic Actions.    (line   6)
@@ -11961,16 +12489,16 @@ Index of Terms
 * semantic_type:                         C++ Parser Interface.
                                                               (line  15)
 * set_debug_level on parser:             C++ Parser Interface.
-                                                              (line  39)
+                                                              (line  43)
 * set_debug_stream on parser:            C++ Parser Interface.
-                                                              (line  34)
+                                                              (line  38)
 * setDebugLevel on YYParser:             Java Parser Interface.
                                                               (line  68)
 * setDebugStream on YYParser:            Java Parser Interface.
                                                               (line  63)
-* shift/reduce conflicts <1>:            Shift/Reduce.        (line   6)
-* shift/reduce conflicts <2>:            Simple GLR Parsers.  (line   6)
-* shift/reduce conflicts:                GLR Parsers.         (line   6)
+* shift/reduce conflicts <1>:            Simple GLR Parsers.  (line   6)
+* shift/reduce conflicts <2>:            GLR Parsers.         (line   6)
+* shift/reduce conflicts:                Shift/Reduce.        (line   6)
 * shifting:                              Algorithm.           (line   6)
 * simple examples:                       Examples.            (line   6)
 * single-character literal:              Symbols.             (line  37)
@@ -12004,17 +12532,17 @@ Index of Terms
                                                               (line  19)
 * token type:                            Symbols.             (line   6)
 * token type names, declaring:           Token Decl.          (line   6)
-* token, useless:                        Understanding.       (line  49)
+* token, useless:                        Understanding.       (line  48)
 * toString on Location:                  Java Location Values.
                                                               (line  32)
 * tracing the parser:                    Tracing.             (line   6)
-* uint:                                  C++ Location Values. (line  12)
+* uint:                                  C++ Location Values. (line  15)
 * unary operator precedence:             Contextual Precedence.
                                                               (line   6)
 * unreachable states:                    Unreachable States.  (line   6)
-* useless nonterminal:                   Understanding.       (line  49)
-* useless rule:                          Understanding.       (line  49)
-* useless token:                         Understanding.       (line  49)
+* useless nonterminal:                   Understanding.       (line  48)
+* useless rule:                          Understanding.       (line  48)
+* useless token:                         Understanding.       (line  48)
 * using Bison:                           Stages.              (line   6)
 * value type, semantic:                  Value Type.          (line   6)
 * value types, declaring:                Union Decl.          (line   6)
@@ -12023,292 +12551,301 @@ Index of Terms
 * version requirement:                   Require Decl.        (line   6)
 * warnings, preventing:                  Expect Decl.         (line   6)
 * writing a lexical analyzer:            Rpcalc Lexer.        (line   6)
-* YYABORT <1>:                           Java Action Features.
+* xml:                                   Xml.                 (line   6)
+* YYABORT <1>:                           Parser Function.     (line  29)
+* YYABORT <2>:                           Table of Symbols.    (line 254)
+* YYABORT <3>:                           Action Features.     (line  28)
+* YYABORT:                               Java Action Features.
                                                               (line  43)
-* YYABORT <2>:                           Parser Function.     (line  29)
-* YYABORT <3>:                           Table of Symbols.    (line 249)
-* YYABORT:                               Action Features.     (line  28)
-* YYACCEPT <1>:                          Action Features.     (line  32)
-* YYACCEPT <2>:                          Java Action Features.
+* YYACCEPT <1>:                          Table of Symbols.    (line 263)
+* YYACCEPT <2>:                          Parser Function.     (line  26)
+* YYACCEPT <3>:                          Java Action Features.
                                                               (line  47)
-* YYACCEPT <3>:                          Table of Symbols.    (line 258)
-* YYACCEPT:                              Parser Function.     (line  26)
-* YYBACKUP <1>:                          Table of Symbols.    (line 266)
+* YYACCEPT <4>:                          Parser Function.     (line  26)
+* YYACCEPT:                              Action Features.     (line  32)
+* YYBACKUP <1>:                          Table of Symbols.    (line 271)
 * YYBACKUP:                              Action Features.     (line  36)
-* yychar <1>:                            Table of Symbols.    (line 270)
-* yychar <2>:                            Lookahead.           (line  49)
-* yychar <3>:                            Action Features.     (line  69)
-* yychar:                                GLR Semantic Actions.
+* yychar <1>:                            Action Features.     (line  69)
+* yychar <2>:                            GLR Semantic Actions.
                                                               (line  10)
-* yyclearin <1>:                         Table of Symbols.    (line 276)
-* yyclearin <2>:                         Error Recovery.      (line  99)
-* yyclearin <3>:                         GLR Semantic Actions.
+* yychar <3>:                            Lookahead.           (line  49)
+* yychar:                                Table of Symbols.    (line 275)
+* yyclearin <1>:                         GLR Semantic Actions.
                                                               (line  18)
-* yyclearin:                             Action Features.     (line  76)
-* YYDEBUG:                               Table of Symbols.    (line 280)
-* yydebug <1>:                           Table of Symbols.    (line 284)
-* yydebug:                               Tracing.             (line   6)
+* yyclearin <2>:                         Error Recovery.      (line  99)
+* yyclearin <3>:                         Action Features.     (line  76)
+* yyclearin:                             Table of Symbols.    (line 281)
 * YYDEBUG:                               Enabling Traces.     (line   9)
+* yydebug:                               Tracing.             (line   6)
+* YYDEBUG:                               Table of Symbols.    (line 285)
+* yydebug:                               Table of Symbols.    (line 289)
 * YYEMPTY:                               Action Features.     (line  49)
 * YYENABLE_NLS:                          Internationalization.
                                                               (line  27)
 * YYEOF:                                 Action Features.     (line  52)
-* yyerrok <1>:                           Error Recovery.      (line  94)
-* yyerrok <2>:                           Action Features.     (line  81)
-* yyerrok:                               Table of Symbols.    (line 289)
+* yyerrok <1>:                           Action Features.     (line  81)
+* yyerrok <2>:                           Table of Symbols.    (line 294)
+* yyerrok:                               Error Recovery.      (line  94)
 * yyerror:                               Java Action Features.
-                                                              (line  61)
-* YYERROR:                               Java Action Features.
+                                                              (line  60)
+* YYERROR <1>:                           Java Action Features.
                                                               (line  51)
-* yyerror:                               Java Action Features.
-                                                              (line  62)
-* YYERROR:                               Table of Symbols.    (line 293)
-* yyerror:                               Table of Symbols.    (line 304)
-* YYERROR <1>:                           GLR Semantic Actions.
-                                                              (line  28)
 * YYERROR:                               Action Features.     (line  56)
-* yyerror:                               Error Reporting.     (line   6)
+* yyerror <1>:                           Error Reporting.     (line   6)
+* yyerror:                               Table of Symbols.    (line 309)
+* YYERROR <1>:                           Table of Symbols.    (line 298)
+* YYERROR:                               GLR Semantic Actions.
+                                                              (line  28)
+* yyerror:                               Java Action Features.
+                                                              (line  61)
 * yyerror on Lexer:                      Java Scanner Interface.
                                                               (line  25)
-* YYERROR_VERBOSE:                       Table of Symbols.    (line 308)
-* YYFPRINTF <1>:                         Table of Symbols.    (line 316)
-* YYFPRINTF:                             Enabling Traces.     (line  36)
+* YYERROR_VERBOSE:                       Table of Symbols.    (line 313)
+* YYFPRINTF <1>:                         Enabling Traces.     (line  36)
+* YYFPRINTF:                             Table of Symbols.    (line 321)
 * YYINITDEPTH <1>:                       Memory Management.   (line  32)
-* YYINITDEPTH:                           Table of Symbols.    (line 319)
-* yylex <1>:                             Table of Symbols.    (line 323)
-* yylex:                                 Lexical.             (line   6)
+* YYINITDEPTH:                           Table of Symbols.    (line 324)
+* yylex <1>:                             Lexical.             (line   6)
+* yylex:                                 Table of Symbols.    (line 328)
 * yylex on Lexer:                        Java Scanner Interface.
-                                                              (line  30)
+                                                              (line  31)
 * yylex on parser:                       C++ Scanner Interface.
-                                                              (line  12)
-* YYLEX_PARAM:                           Table of Symbols.    (line 328)
+                                                              (line  13)
+* YYLEX_PARAM:                           Table of Symbols.    (line 333)
 * yylloc <1>:                            GLR Semantic Actions.
                                                               (line  10)
-* yylloc <2>:                            Table of Symbols.    (line 334)
-* yylloc <3>:                            Action Features.     (line  86)
-* yylloc <4>:                            Actions and Locations.
+* yylloc <2>:                            Actions and Locations.
                                                               (line  67)
-* yylloc <5>:                            Token Locations.     (line   6)
-* yylloc:                                Lookahead.           (line  49)
+* yylloc <3>:                            Lookahead.           (line  49)
+* yylloc <4>:                            Action Features.     (line  86)
+* yylloc <5>:                            Table of Symbols.    (line 339)
+* yylloc:                                Token Locations.     (line   6)
 * YYLLOC_DEFAULT:                        Location Default Action.
                                                               (line   6)
-* YYLTYPE <1>:                           Table of Symbols.    (line 344)
+* YYLTYPE <1>:                           Table of Symbols.    (line 349)
 * YYLTYPE:                               Token Locations.     (line  19)
-* yylval <1>:                            Lookahead.           (line  49)
-* yylval <2>:                            Token Values.        (line   6)
-* yylval <3>:                            GLR Semantic Actions.
-                                                              (line  10)
+* yylval <1>:                            Token Values.        (line   6)
+* yylval <2>:                            Lookahead.           (line  49)
+* yylval <3>:                            Table of Symbols.    (line 353)
 * yylval <4>:                            Actions.             (line  87)
-* yylval <5>:                            Table of Symbols.    (line 348)
+* yylval <5>:                            GLR Semantic Actions.
+                                                              (line  10)
 * yylval:                                Action Features.     (line  92)
-* YYMAXDEPTH <1>:                        Table of Symbols.    (line 356)
-* YYMAXDEPTH:                            Memory Management.   (line  14)
-* yynerrs <1>:                           Error Reporting.     (line  94)
-* yynerrs:                               Table of Symbols.    (line 360)
+* YYMAXDEPTH <1>:                        Memory Management.   (line  14)
+* YYMAXDEPTH:                            Table of Symbols.    (line 361)
+* yynerrs <1>:                           Table of Symbols.    (line 365)
+* yynerrs:                               Error Reporting.     (line  69)
 * yyoutput:                              Printer Decl.        (line  16)
-* yyparse <1>:                           Parser Function.     (line   6)
-* yyparse <2>:                           Table of Symbols.    (line 366)
-* yyparse:                               Parser Function.     (line  13)
-* YYPARSE_PARAM:                         Table of Symbols.    (line 404)
+* yyparse <1>:                           Parser Function.     (line  13)
+* yyparse:                               Table of Symbols.    (line 371)
+* YYPARSE_PARAM:                         Table of Symbols.    (line 409)
 * YYParser on YYParser:                  Java Parser Interface.
-                                                              (line  46)
-* YYPRINT <1>:                           Table of Symbols.    (line 370)
+                                                              (line  41)
+* YYPRINT <1>:                           The YYPRINT Macro.   (line   6)
+* YYPRINT <2>:                           Table of Symbols.    (line 375)
 * YYPRINT:                               The YYPRINT Macro.   (line  11)
-* yypstate_delete <1>:                   Parser Delete Function.
+* yypstate_delete <1>:                   Table of Symbols.    (line 380)
+* yypstate_delete:                       Parser Delete Function.
                                                               (line  15)
-* yypstate_delete:                       Table of Symbols.    (line 375)
-* yypstate_new <1>:                      Table of Symbols.    (line 383)
+* yypstate_new <1>:                      Parser Create Function.
+                                                              (line  15)
+* yypstate_new <2>:                      Table of Symbols.    (line 388)
 * yypstate_new:                          Parser Create Function.
                                                               (line   6)
-* yypull_parse <1>:                      Table of Symbols.    (line 390)
+* yypull_parse <1>:                      Table of Symbols.    (line 395)
 * yypull_parse:                          Pull Parser Function.
                                                               (line  14)
-* yypush_parse <1>:                      Push Parser Function.
-                                                              (line  15)
-* yypush_parse <2>:                      Table of Symbols.    (line 397)
+* yypush_parse <1>:                      Table of Symbols.    (line 402)
 * yypush_parse:                          Push Parser Function.
                                                               (line   6)
-* YYRECOVERING <1>:                      Table of Symbols.    (line 410)
-* YYRECOVERING <2>:                      Error Recovery.      (line 111)
-* YYRECOVERING:                          Action Features.     (line  64)
-* YYSTACK_USE_ALLOCA:                    Table of Symbols.    (line 415)
-* YYSTYPE:                               Table of Symbols.    (line 431)
-* | <1>:                                 Table of Symbols.    (line  59)
-* |:                                     Rules.               (line  48)
+* YYRECOVERING <1>:                      Error Recovery.      (line 111)
+* YYRECOVERING <2>:                      Action Features.     (line  64)
+* YYRECOVERING:                          Table of Symbols.    (line 415)
+* YYSTACK_USE_ALLOCA:                    Table of Symbols.    (line 420)
+* YYSTYPE:                               Table of Symbols.    (line 436)
+* | <1>:                                 Rules.               (line  48)
+* |:                                     Table of Symbols.    (line  64)
 
 
 \1f
 Tag Table:
-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
+Node: Top\7f1065
+Node: Introduction\7f15120
+Node: Conditions\7f16799
+Node: Copying\7f18710
+Node: Concepts\7f56248
+Node: Language and Grammar\7f57440
+Node: Grammar in Bison\7f63375
+Node: Semantic Values\7f65289
+Node: Semantic Actions\7f67395
+Node: GLR Parsers\7f68569
+Node: Simple GLR Parsers\7f71314
+Node: Merging GLR Parses\7f77727
+Node: GLR Semantic Actions\7f82269
+Node: Compiler Requirements\7f84163
+Node: Locations\7f84915
+Node: Bison Parser\7f86368
+Node: Stages\7f89489
+Node: Grammar Layout\7f90777
+Node: Examples\7f92109
+Node: RPN Calc\7f93305
+Node: Rpcalc Declarations\7f94307
+Node: Rpcalc Rules\7f96235
+Node: Rpcalc Input\7f97968
+Node: Rpcalc Line\7f99439
+Node: Rpcalc Expr\7f100560
+Node: Rpcalc Lexer\7f102449
+Node: Rpcalc Main\7f105051
+Node: Rpcalc Error\7f105458
+Node: Rpcalc Generate\7f106491
+Node: Rpcalc Compile\7f107727
+Node: Infix Calc\7f108651
+Node: Simple Error Recovery\7f111365
+Node: Location Tracking Calc\7f113247
+Node: Ltcalc Declarations\7f113943
+Node: Ltcalc Rules\7f115032
+Node: Ltcalc Lexer\7f116897
+Node: Multi-function Calc\7f119220
+Node: Mfcalc Declarations\7f120796
+Node: Mfcalc Rules\7f122808
+Node: Mfcalc Symbol Table\7f124130
+Node: Exercises\7f130974
+Node: Grammar File\7f131488
+Node: Grammar Outline\7f132396
+Node: Prologue\7f133246
+Node: Prologue Alternatives\7f135050
+Node: Bison Declarations\7f144622
+Node: Grammar Rules\7f145050
+Node: Epilogue\7f145521
+Node: Symbols\7f146566
+Node: Rules\7f153641
+Node: Recursion\7f156061
+Node: Semantics\7f157736
+Node: Value Type\7f158844
+Node: Multiple Types\7f159679
+Node: Actions\7f160846
+Node: Action Types\7f164659
+Node: Mid-Rule Actions\7f165953
+Node: Using Mid-Rule Actions\7f166537
+Node: Mid-Rule Action Translation\7f170617
+Node: Mid-Rule Conflicts\7f172493
+Node: Tracking Locations\7f175119
+Node: Location Type\7f175783
+Node: Actions and Locations\7f176803
+Node: Location Default Action\7f179253
+Node: Named References\7f182751
+Node: Declarations\7f185387
+Node: Require Decl\7f187124
+Node: Token Decl\7f187443
+Node: Precedence Decl\7f189869
+Node: Union Decl\7f191879
+Node: Type Decl\7f193653
+Node: Initial Action Decl\7f194579
+Node: Destructor Decl\7f195365
+Node: Printer Decl\7f201030
+Node: Expect Decl\7f203326
+Node: Start Decl\7f205322
+Node: Pure Decl\7f205712
+Node: Push Decl\7f207467
+Node: Decl Summary\7f211958
+Node: %define Summary\7f220645
+Node: %code Summary\7f227675
+Node: Multiple Parsers\7f231393
+Node: Interface\7f234462
+Node: Parser Function\7f235780
+Node: Push Parser Function\7f238179
+Node: Pull Parser Function\7f238965
+Node: Parser Create Function\7f239614
+Node: Parser Delete Function\7f240434
+Node: Lexical\7f241201
+Node: Calling Convention\7f242644
+Node: Token Values\7f245619
+Node: Token Locations\7f246783
+Node: Pure Calling\7f247667
+Node: Error Reporting\7f249214
+Node: Action Features\7f252509
+Node: Internationalization\7f256810
+Node: Algorithm\7f259353
+Node: Lookahead\7f261783
+Node: Shift/Reduce\7f263960
+Node: Precedence\7f267137
+Node: Why Precedence\7f267855
+Node: Using Precedence\7f269691
+Node: Precedence Examples\7f270668
+Node: How Precedence\7f271185
+Node: Non Operators\7f272364
+Node: Contextual Precedence\7f273922
+Node: Parser States\7f275700
+Node: Reduce/Reduce\7f276944
+Node: Mysterious Conflicts\7f281594
+Node: Tuning LR\7f285100
+Node: LR Table Construction\7f286408
+Node: Default Reductions\7f292096
+Node: LAC\7f296930
+Node: Unreachable States\7f302482
+Node: Generalized LR Parsing\7f304473
+Node: Memory Management\7f308847
+Node: Error Recovery\7f311079
+Node: Context Dependency\7f316334
+Node: Semantic Tokens\7f317183
+Node: Lexical Tie-ins\7f320175
+Node: Tie-in Recovery\7f321613
+Node: Debugging\7f323707
+Node: Understanding\7f324946
+Node: Graphviz\7f335532
+Node: Xml\7f339767
+Node: Tracing\7f341485
+Node: Enabling Traces\7f341919
+Node: Mfcalc Traces\7f345381
+Node: The YYPRINT Macro\7f350653
+Node: Invocation\7f351816
+Node: Bison Options\7f353231
+Node: Option Cross Key\7f363724
+Node: Yacc Library\7f365647
+Node: Other Languages\7f366472
+Node: C++ Parsers\7f366799
+Node: C++ Bison Interface\7f367296
+Node: C++ Semantic Values\7f368685
+Ref: C++ Semantic Values-Footnote-1\7f369627
+Node: C++ Location Values\7f369780
+Node: C++ position\7f370705
+Node: C++ location\7f372581
+Node: User Defined Location Type\7f374337
+Node: C++ Parser Interface\7f375836
+Node: C++ Scanner Interface\7f378068
+Node: A Complete C++ Example\7f378769
+Node: Calc++ --- C++ Calculator\7f379711
+Node: Calc++ Parsing Driver\7f380225
+Node: Calc++ Parser\7f384006
+Node: Calc++ Scanner\7f387838
+Node: Calc++ Top Level\7f391363
+Node: Java Parsers\7f392019
+Node: Java Bison Interface\7f392696
+Node: Java Semantic Values\7f394747
+Node: Java Location Values\7f396361
+Node: Java Parser Interface\7f397917
+Node: Java Scanner Interface\7f401155
+Node: Java Action Features\7f403352
+Node: Java Differences\7f405975
+Ref: Java Differences-Footnote-1\7f408542
+Node: Java Declarations Summary\7f408692
+Node: FAQ\7f413014
+Node: Memory Exhausted\7f413961
+Node: How Can I Reset the Parser\7f414274
+Node: Strings are Destroyed\7f416815
+Node: Implementing Gotos/Loops\7f418488
+Node: Multiple start-symbols\7f419771
+Node: Secure? Conform?\7f421318
+Node: I can't build Bison\7f421766
+Node: Where can I find help?\7f422480
+Node: Bug Reports\7f423273
+Node: More Languages\7f424733
+Node: Beta Testing\7f425091
+Node: Mailing Lists\7f425965
+Node: Table of Symbols\7f426176
+Node: Glossary\7f443460
+Node: Copying This Manual\7f452464
+Node: Bibliography\7f477599
+Node: Index of Terms\7f479490
 \1f
 End Tag Table
diff --git a/doc/bison.info-1 b/doc/bison.info-1
deleted file mode 100644 (file)
index 315608c..0000000
+++ /dev/null
@@ -1,7303 +0,0 @@
-This is bison.info, produced by makeinfo version 4.13 from
-/Users/akim/src/gnu/bison-2.5/doc/bison.texi.
-
-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.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-
-INFO-DIR-SECTION Software development
-START-INFO-DIR-ENTRY
-* bison: (bison).       GNU parser generator (Yacc replacement).
-END-INFO-DIR-ENTRY
-
-\1f
-File: bison.info,  Node: Top,  Next: Introduction,  Up: (dir)
-
-Bison
-*****
-
-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.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-
-* Menu:
-
-* Introduction::
-* Conditions::
-* Copying::             The GNU General Public License says
-                          how you can copy and share Bison.
-
-Tutorial sections:
-* Concepts::            Basic concepts for understanding Bison.
-* Examples::            Three simple explained examples of using Bison.
-
-Reference sections:
-* Grammar File::        Writing Bison declarations and rules.
-* Interface::           C-language interface to the parser function `yyparse'.
-* Algorithm::           How the Bison parser works at run-time.
-* Error Recovery::      Writing rules for error recovery.
-* Context Dependency::  What to do if your language syntax is too
-                          messy for Bison to handle straightforwardly.
-* Debugging::           Understanding or debugging Bison parsers.
-* Invocation::          How to run Bison (to produce the parser implementation).
-* Other Languages::     Creating C++ and Java parsers.
-* FAQ::                 Frequently Asked Questions
-* Table of Symbols::    All the keywords of the Bison language are explained.
-* Glossary::            Basic concepts are explained.
-* Copying This Manual:: License for copying this manual.
-* Bibliography::        Publications cited in this manual.
-* Index of Terms::      Cross-references to the text.
-
- --- The Detailed Node Listing ---
-
-The Concepts of Bison
-
-* Language and Grammar:: Languages and context-free grammars,
-                           as mathematical ideas.
-* Grammar in Bison::     How we represent grammars for Bison's sake.
-* Semantic Values::      Each token or syntactic grouping can have
-                           a semantic value (the value of an integer,
-                           the name of an identifier, etc.).
-* Semantic Actions::     Each rule can have an action containing C code.
-* GLR Parsers::          Writing parsers for general context-free languages.
-* Locations::            Overview of location tracking.
-* Bison Parser::         What are Bison's input and output,
-                           how is the output used?
-* Stages::               Stages in writing and running Bison grammars.
-* Grammar Layout::       Overall structure of a Bison grammar file.
-
-Writing GLR Parsers
-
-* Simple GLR Parsers::     Using GLR parsers on unambiguous grammars.
-* Merging GLR Parses::     Using GLR parsers to resolve ambiguities.
-* GLR Semantic Actions::   Deferred semantic actions have special concerns.
-* Compiler Requirements::  GLR parsers require a modern C compiler.
-
-Examples
-
-* RPN Calc::               Reverse polish notation calculator;
-                             a first example with no operator precedence.
-* Infix Calc::             Infix (algebraic) notation calculator.
-                             Operator precedence is introduced.
-* Simple Error Recovery::  Continuing after syntax errors.
-* Location Tracking Calc:: Demonstrating the use of @N and @$.
-* Multi-function Calc::    Calculator with memory and trig functions.
-                             It uses multiple data-types for semantic values.
-* Exercises::              Ideas for improving the multi-function calculator.
-
-Reverse Polish Notation Calculator
-
-* Rpcalc Declarations::    Prologue (declarations) for rpcalc.
-* Rpcalc Rules::           Grammar Rules for rpcalc, with explanation.
-* Rpcalc Lexer::           The lexical analyzer.
-* Rpcalc Main::            The controlling function.
-* Rpcalc Error::           The error reporting function.
-* Rpcalc Generate::        Running Bison on the grammar file.
-* Rpcalc Compile::         Run the C compiler on the output code.
-
-Grammar Rules for `rpcalc'
-
-* Rpcalc Input::
-* Rpcalc Line::
-* Rpcalc Expr::
-
-Location Tracking Calculator: `ltcalc'
-
-* Ltcalc Declarations::    Bison and C declarations for ltcalc.
-* Ltcalc Rules::           Grammar rules for ltcalc, with explanations.
-* Ltcalc Lexer::           The lexical analyzer.
-
-Multi-Function Calculator: `mfcalc'
-
-* Mfcalc Declarations::    Bison declarations for multi-function calculator.
-* Mfcalc Rules::           Grammar rules for the calculator.
-* Mfcalc Symbol Table::    Symbol table management subroutines.
-
-Bison Grammar Files
-
-* Grammar Outline::    Overall layout of the grammar file.
-* Symbols::            Terminal and nonterminal symbols.
-* Rules::              How to write grammar rules.
-* Recursion::          Writing recursive rules.
-* Semantics::          Semantic values and actions.
-* Tracking Locations:: Locations and actions.
-* Named References::   Using named references in actions.
-* Declarations::       All kinds of Bison declarations are described here.
-* Multiple Parsers::   Putting more than one Bison parser in one program.
-
-Outline of a Bison Grammar
-
-* Prologue::              Syntax and usage of the prologue.
-* Prologue Alternatives:: Syntax and usage of alternatives to the prologue.
-* Bison Declarations::    Syntax and usage of the Bison declarations section.
-* Grammar Rules::         Syntax and usage of the grammar rules section.
-* Epilogue::              Syntax and usage of the epilogue.
-
-Defining Language Semantics
-
-* Value Type::        Specifying one data type for all semantic values.
-* Multiple Types::    Specifying several alternative data types.
-* Actions::           An action is the semantic definition of a grammar rule.
-* Action Types::      Specifying data types for actions to operate on.
-* Mid-Rule Actions::  Most actions go at the end of a rule.
-                      This says when, why and how to use the exceptional
-                        action in the middle of a rule.
-
-Tracking Locations
-
-* Location Type::               Specifying a data type for locations.
-* Actions and Locations::       Using locations in actions.
-* Location Default Action::     Defining a general way to compute locations.
-
-Bison Declarations
-
-* Require Decl::      Requiring a Bison version.
-* Token Decl::        Declaring terminal symbols.
-* Precedence Decl::   Declaring terminals with precedence and associativity.
-* Union Decl::        Declaring the set of all semantic value types.
-* Type Decl::         Declaring the choice of type for a nonterminal symbol.
-* Initial Action Decl::  Code run before parsing starts.
-* Destructor Decl::   Declaring how symbols are freed.
-* Printer Decl::      Declaring how symbol values are displayed.
-* Expect Decl::       Suppressing warnings about parsing conflicts.
-* Start Decl::        Specifying the start symbol.
-* Pure Decl::         Requesting a reentrant parser.
-* Push Decl::         Requesting a push parser.
-* Decl Summary::      Table of all Bison declarations.
-* %define Summary::   Defining variables to adjust Bison's behavior.
-* %code Summary::     Inserting code into the parser source.
-
-Parser C-Language Interface
-
-* Parser Function::         How to call `yyparse' and what it returns.
-* Push Parser Function::    How to call `yypush_parse' and what it returns.
-* Pull Parser Function::    How to call `yypull_parse' and what it returns.
-* Parser Create Function::  How to call `yypstate_new' and what it returns.
-* Parser Delete Function::  How to call `yypstate_delete' and what it returns.
-* Lexical::                 You must supply a function `yylex'
-                              which reads tokens.
-* Error Reporting::         You must supply a function `yyerror'.
-* Action Features::         Special features for use in actions.
-* Internationalization::    How to let the parser speak in the user's
-                              native language.
-
-The Lexical Analyzer Function `yylex'
-
-* Calling Convention::  How `yyparse' calls `yylex'.
-* Token Values::        How `yylex' must return the semantic value
-                          of the token it has read.
-* Token Locations::     How `yylex' must return the text location
-                          (line number, etc.) of the token, if the
-                          actions want that.
-* Pure Calling::        How the calling convention differs in a pure parser
-                          (*note A Pure (Reentrant) Parser: Pure Decl.).
-
-The Bison Parser Algorithm
-
-* Lookahead::         Parser looks one token ahead when deciding what to do.
-* Shift/Reduce::      Conflicts: when either shifting or reduction is valid.
-* Precedence::        Operator precedence works by resolving conflicts.
-* Contextual Precedence::  When an operator's precedence depends on context.
-* Parser States::     The parser is a finite-state-machine with stack.
-* Reduce/Reduce::     When two rules are applicable in the same situation.
-* Mysterious Conflicts:: Conflicts that look unjustified.
-* Tuning LR::         How to tune fundamental aspects of LR-based parsing.
-* Generalized LR Parsing::  Parsing arbitrary context-free grammars.
-* Memory Management:: What happens when memory is exhausted.  How to avoid it.
-
-Operator Precedence
-
-* Why Precedence::    An example showing why precedence is needed.
-* Using Precedence::  How to specify precedence in Bison grammars.
-* Precedence Examples::  How these features are used in the previous example.
-* How Precedence::    How they work.
-
-Tuning LR
-
-* LR Table Construction:: Choose a different construction algorithm.
-* Default Reductions::    Disable default reductions.
-* LAC::                   Correct lookahead sets in the parser states.
-* Unreachable States::    Keep unreachable parser states for debugging.
-
-Handling Context Dependencies
-
-* Semantic Tokens::   Token parsing can depend on the semantic context.
-* Lexical Tie-ins::   Token parsing can depend on the syntactic context.
-* Tie-in Recovery::   Lexical tie-ins have implications for how
-                        error recovery rules must be written.
-
-Debugging Your Parser
-
-* Understanding::     Understanding the structure of your parser.
-* Tracing::           Tracing the execution of your parser.
-
-Tracing Your Parser
-
-* Enabling Traces::             Activating run-time trace support
-* Mfcalc Traces::               Extending `mfcalc' to support traces
-* The YYPRINT Macro::           Obsolete interface for semantic value reports
-
-Invoking Bison
-
-* Bison Options::     All the options described in detail,
-                        in alphabetical order by short options.
-* Option Cross Key::  Alphabetical list of long options.
-* Yacc Library::      Yacc-compatible `yylex' and `main'.
-
-Parsers Written In Other Languages
-
-* C++ Parsers::                 The interface to generate C++ parser classes
-* Java Parsers::                The interface to generate Java parser classes
-
-C++ Parsers
-
-* C++ Bison Interface::         Asking for C++ parser generation
-* C++ Semantic Values::         %union vs. C++
-* C++ Location Values::         The position and location classes
-* C++ Parser Interface::        Instantiating and running the parser
-* C++ Scanner Interface::       Exchanges between yylex and parse
-* A Complete C++ Example::      Demonstrating their use
-
-C++ Location Values
-
-* C++ position::                One point in the source file
-* C++ location::                Two points in the source file
-
-A Complete C++ Example
-
-* Calc++ --- C++ Calculator::   The specifications
-* Calc++ Parsing Driver::       An active parsing context
-* Calc++ Parser::               A parser class
-* Calc++ Scanner::              A pure C++ Flex scanner
-* Calc++ Top Level::            Conducting the band
-
-Java Parsers
-
-* Java Bison Interface::        Asking for Java parser generation
-* Java Semantic Values::        %type and %token vs. Java
-* Java Location Values::        The position and location classes
-* Java Parser Interface::       Instantiating and running the parser
-* Java Scanner Interface::      Specifying the scanner for the parser
-* Java Action Features::        Special features for use in actions
-* Java Differences::            Differences between C/C++ and Java Grammars
-* Java Declarations Summary::   List of Bison declarations used with Java
-
-Frequently Asked Questions
-
-* Memory Exhausted::            Breaking the Stack Limits
-* How Can I Reset the Parser::  `yyparse' Keeps some State
-* Strings are Destroyed::       `yylval' Loses Track of Strings
-* Implementing Gotos/Loops::    Control Flow in the Calculator
-* Multiple start-symbols::      Factoring closely related grammars
-* Secure?  Conform?::           Is Bison POSIX safe?
-* I can't build Bison::         Troubleshooting
-* Where can I find help?::      Troubleshouting
-* Bug Reports::                 Troublereporting
-* More Languages::              Parsers in C++, Java, and so on
-* Beta Testing::                Experimenting development versions
-* Mailing Lists::               Meeting other Bison users
-
-Copying This Manual
-
-* Copying This Manual::         License for copying this manual.
-
-\1f
-File: bison.info,  Node: Introduction,  Next: Conditions,  Prev: Top,  Up: Top
-
-Introduction
-************
-
-"Bison" is a general-purpose parser generator that converts an
-annotated context-free grammar into a deterministic LR or generalized
-LR (GLR) parser employing LALR(1) parser tables.  As an experimental
-feature, Bison can also generate IELR(1) or canonical LR(1) parser
-tables.  Once you are proficient with Bison, you can use it to develop
-a wide range of language parsers, from those used in simple desk
-calculators to complex programming languages.
-
-   Bison is upward compatible with Yacc: all properly-written Yacc
-grammars ought to work with Bison with no change.  Anyone familiar with
-Yacc should be able to use Bison with little trouble.  You need to be
-fluent in C or C++ programming in order to use Bison or to understand
-this manual.  Java is also supported as an experimental feature.
-
-   We begin with tutorial chapters that explain the basic concepts of
-using Bison and show three explained examples, each building on the
-last.  If you don't know Bison or Yacc, start by reading these
-chapters.  Reference chapters follow, which describe specific aspects
-of Bison in detail.
-
-   Bison was written originally by Robert Corbett.  Richard Stallman
-made it Yacc-compatible.  Wilfred Hansen of Carnegie Mellon University
-added multi-character string literals and other features.  Since then,
-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.1-dirty of Bison.
-
-\1f
-File: bison.info,  Node: Conditions,  Next: Copying,  Prev: Introduction,  Up: Top
-
-Conditions for Using Bison
-**************************
-
-The distribution terms for Bison-generated parsers permit using the
-parsers in nonfree programs.  Before Bison version 2.2, these extra
-permissions applied only when Bison was generating LALR(1) parsers in
-C.  And before Bison version 1.24, Bison-generated parsers could be
-used only in programs that were free software.
-
-   The other GNU programming tools, such as the GNU C compiler, have
-never had such a requirement.  They could always be used for nonfree
-software.  The reason Bison was different was not due to a special
-policy decision; it resulted from applying the usual General Public
-License to all of the Bison source code.
-
-   The main output of the Bison utility--the Bison parser implementation
-file--contains a verbatim copy of a sizable piece of Bison, which is
-the code for the parser's implementation.  (The actions from your
-grammar are inserted into this implementation at one point, but most of
-the rest of the implementation is not changed.)  When we applied the
-GPL terms to the skeleton code for the parser's implementation, the
-effect was to restrict the use of Bison output to free software.
-
-   We didn't change the terms because of sympathy for people who want to
-make software proprietary.  *Software should be free.*  But we
-concluded that limiting Bison's use to free software was doing little to
-encourage people to make other software free.  So we decided to make the
-practical conditions for using Bison match the practical conditions for
-using the other GNU tools.
-
-   This exception applies when Bison is generating code for a parser.
-You can tell whether the exception applies to a Bison output file by
-inspecting the file for text beginning with "As a special
-exception...".  The text spells out the exact terms of the exception.
-
-\1f
-File: bison.info,  Node: Copying,  Next: Concepts,  Prev: Conditions,  Up: Top
-
-GNU GENERAL PUBLIC LICENSE
-**************************
-
-                        Version 3, 29 June 2007
-
-     Copyright (C) 2007 Free Software Foundation, Inc. `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies of this
-     license document, but changing it is not allowed.
-
-Preamble
-========
-
-The GNU General Public License is a free, copyleft license for software
-and other kinds of works.
-
-   The licenses for most software and other practical works are designed
-to take away your freedom to share and change the works.  By contrast,
-the GNU General Public License is intended to guarantee your freedom to
-share and change all versions of a program--to make sure it remains
-free software for all its users.  We, the Free Software Foundation, use
-the GNU General Public License for most of our software; it applies
-also to any other work released this way by its authors.  You can apply
-it to your programs, too.
-
-   When we speak of free software, we are referring to freedom, not
-price.  Our General Public Licenses are designed to make sure that you
-have the freedom to distribute copies of free software (and charge for
-them if you wish), that you receive source code or can get it if you
-want it, that you can change the software or use pieces of it in new
-free programs, and that you know you can do these things.
-
-   To protect your rights, we need to prevent others from denying you
-these rights or asking you to surrender the rights.  Therefore, you
-have certain responsibilities if you distribute copies of the software,
-or if you modify it: responsibilities to respect the freedom of others.
-
-   For example, if you distribute copies of such a program, whether
-gratis or for a fee, you must pass on to the recipients the same
-freedoms that you received.  You must make sure that they, too, receive
-or can get the source code.  And you must show them these terms so they
-know their rights.
-
-   Developers that use the GNU GPL protect your rights with two steps:
-(1) assert copyright on the software, and (2) offer you this License
-giving you legal permission to copy, distribute and/or modify it.
-
-   For the developers' and authors' protection, the GPL clearly explains
-that there is no warranty for this free software.  For both users' and
-authors' sake, the GPL requires that modified versions be marked as
-changed, so that their problems will not be attributed erroneously to
-authors of previous versions.
-
-   Some devices are designed to deny users access to install or run
-modified versions of the software inside them, although the
-manufacturer can do so.  This is fundamentally incompatible with the
-aim of protecting users' freedom to change the software.  The
-systematic pattern of such abuse occurs in the area of products for
-individuals to use, which is precisely where it is most unacceptable.
-Therefore, we have designed this version of the GPL to prohibit the
-practice for those products.  If such problems arise substantially in
-other domains, we stand ready to extend this provision to those domains
-in future versions of the GPL, as needed to protect the freedom of
-users.
-
-   Finally, every program is threatened constantly by software patents.
-States should not allow patents to restrict development and use of
-software on general-purpose computers, but in those that do, we wish to
-avoid the special danger that patents applied to a free program could
-make it effectively proprietary.  To prevent this, the GPL assures that
-patents cannot be used to render the program non-free.
-
-   The precise terms and conditions for copying, distribution and
-modification follow.
-
-TERMS AND CONDITIONS
-====================
-
-  0. Definitions.
-
-     "This License" refers to version 3 of the GNU General Public
-     License.
-
-     "Copyright" also means copyright-like laws that apply to other
-     kinds of works, such as semiconductor masks.
-
-     "The Program" refers to any copyrightable work licensed under this
-     License.  Each licensee is addressed as "you".  "Licensees" and
-     "recipients" may be individuals or organizations.
-
-     To "modify" a work means to copy from or adapt all or part of the
-     work in a fashion requiring copyright permission, other than the
-     making of an exact copy.  The resulting work is called a "modified
-     version" of the earlier work or a work "based on" the earlier work.
-
-     A "covered work" means either the unmodified Program or a work
-     based on the Program.
-
-     To "propagate" a work means to do anything with it that, without
-     permission, would make you directly or secondarily liable for
-     infringement under applicable copyright law, except executing it
-     on a computer or modifying a private copy.  Propagation includes
-     copying, distribution (with or without modification), making
-     available to the public, and in some countries other activities as
-     well.
-
-     To "convey" a work means any kind of propagation that enables other
-     parties to make or receive copies.  Mere interaction with a user
-     through a computer network, with no transfer of a copy, is not
-     conveying.
-
-     An interactive user interface displays "Appropriate Legal Notices"
-     to the extent that it includes a convenient and prominently visible
-     feature that (1) displays an appropriate copyright notice, and (2)
-     tells the user that there is no warranty for the work (except to
-     the extent that warranties are provided), that licensees may
-     convey the work under this License, and how to view a copy of this
-     License.  If the interface presents a list of user commands or
-     options, such as a menu, a prominent item in the list meets this
-     criterion.
-
-  1. Source Code.
-
-     The "source code" for a work means the preferred form of the work
-     for making modifications to it.  "Object code" means any
-     non-source form of a work.
-
-     A "Standard Interface" means an interface that either is an
-     official standard defined by a recognized standards body, or, in
-     the case of interfaces specified for a particular programming
-     language, one that is widely used among developers working in that
-     language.
-
-     The "System Libraries" of an executable work include anything,
-     other than the work as a whole, that (a) is included in the normal
-     form of packaging a Major Component, but which is not part of that
-     Major Component, and (b) serves only to enable use of the work
-     with that Major Component, or to implement a Standard Interface
-     for which an implementation is available to the public in source
-     code form.  A "Major Component", in this context, means a major
-     essential component (kernel, window system, and so on) of the
-     specific operating system (if any) on which the executable work
-     runs, or a compiler used to produce the work, or an object code
-     interpreter used to run it.
-
-     The "Corresponding Source" for a work in object code form means all
-     the source code needed to generate, install, and (for an executable
-     work) run the object code and to modify the work, including
-     scripts to control those activities.  However, it does not include
-     the work's System Libraries, or general-purpose tools or generally
-     available free programs which are used unmodified in performing
-     those activities but which are not part of the work.  For example,
-     Corresponding Source includes interface definition files
-     associated with source files for the work, and the source code for
-     shared libraries and dynamically linked subprograms that the work
-     is specifically designed to require, such as by intimate data
-     communication or control flow between those subprograms and other
-     parts of the work.
-
-     The Corresponding Source need not include anything that users can
-     regenerate automatically from other parts of the Corresponding
-     Source.
-
-     The Corresponding Source for a work in source code form is that
-     same work.
-
-  2. Basic Permissions.
-
-     All rights granted under this License are granted for the term of
-     copyright on the Program, and are irrevocable provided the stated
-     conditions are met.  This License explicitly affirms your unlimited
-     permission to run the unmodified Program.  The output from running
-     a covered work is covered by this License only if the output,
-     given its content, constitutes a covered work.  This License
-     acknowledges your rights of fair use or other equivalent, as
-     provided by copyright law.
-
-     You may make, run and propagate covered works that you do not
-     convey, without conditions so long as your license otherwise
-     remains in force.  You may convey covered works to others for the
-     sole purpose of having them make modifications exclusively for
-     you, or provide you with facilities for running those works,
-     provided that you comply with the terms of this License in
-     conveying all material for which you do not control copyright.
-     Those thus making or running the covered works for you must do so
-     exclusively on your behalf, under your direction and control, on
-     terms that prohibit them from making any copies of your
-     copyrighted material outside their relationship with you.
-
-     Conveying under any other circumstances is permitted solely under
-     the conditions stated below.  Sublicensing is not allowed; section
-     10 makes it unnecessary.
-
-  3. Protecting Users' Legal Rights From Anti-Circumvention Law.
-
-     No covered work shall be deemed part of an effective technological
-     measure under any applicable law fulfilling obligations under
-     article 11 of the WIPO copyright treaty adopted on 20 December
-     1996, or similar laws prohibiting or restricting circumvention of
-     such measures.
-
-     When you convey a covered work, you waive any legal power to forbid
-     circumvention of technological measures to the extent such
-     circumvention is effected by exercising rights under this License
-     with respect to the covered work, and you disclaim any intention
-     to limit operation or modification of the work as a means of
-     enforcing, against the work's users, your or third parties' legal
-     rights to forbid circumvention of technological measures.
-
-  4. Conveying Verbatim Copies.
-
-     You may convey verbatim copies of the Program's source code as you
-     receive it, in any medium, provided that you conspicuously and
-     appropriately publish on each copy an appropriate copyright notice;
-     keep intact all notices stating that this License and any
-     non-permissive terms added in accord with section 7 apply to the
-     code; keep intact all notices of the absence of any warranty; and
-     give all recipients a copy of this License along with the Program.
-
-     You may charge any price or no price for each copy that you convey,
-     and you may offer support or warranty protection for a fee.
-
-  5. Conveying Modified Source Versions.
-
-     You may convey a work based on the Program, or the modifications to
-     produce it from the Program, in the form of source code under the
-     terms of section 4, provided that you also meet all of these
-     conditions:
-
-       a. The work must carry prominent notices stating that you
-          modified it, and giving a relevant date.
-
-       b. The work must carry prominent notices stating that it is
-          released under this License and any conditions added under
-          section 7.  This requirement modifies the requirement in
-          section 4 to "keep intact all notices".
-
-       c. You must license the entire work, as a whole, under this
-          License to anyone who comes into possession of a copy.  This
-          License will therefore apply, along with any applicable
-          section 7 additional terms, to the whole of the work, and all
-          its parts, regardless of how they are packaged.  This License
-          gives no permission to license the work in any other way, but
-          it does not invalidate such permission if you have separately
-          received it.
-
-       d. If the work has interactive user interfaces, each must display
-          Appropriate Legal Notices; however, if the Program has
-          interactive interfaces that do not display Appropriate Legal
-          Notices, your work need not make them do so.
-
-     A compilation of a covered work with other separate and independent
-     works, which are not by their nature extensions of the covered
-     work, and which are not combined with it such as to form a larger
-     program, in or on a volume of a storage or distribution medium, is
-     called an "aggregate" if the compilation and its resulting
-     copyright are not used to limit the access or legal rights of the
-     compilation's users beyond what the individual works permit.
-     Inclusion of a covered work in an aggregate does not cause this
-     License to apply to the other parts of the aggregate.
-
-  6. Conveying Non-Source Forms.
-
-     You may convey a covered work in object code form under the terms
-     of sections 4 and 5, provided that you also convey the
-     machine-readable Corresponding Source under the terms of this
-     License, in one of these ways:
-
-       a. Convey the object code in, or embodied in, a physical product
-          (including a physical distribution medium), accompanied by the
-          Corresponding Source fixed on a durable physical medium
-          customarily used for software interchange.
-
-       b. Convey the object code in, or embodied in, a physical product
-          (including a physical distribution medium), accompanied by a
-          written offer, valid for at least three years and valid for
-          as long as you offer spare parts or customer support for that
-          product model, to give anyone who possesses the object code
-          either (1) a copy of the Corresponding Source for all the
-          software in the product that is covered by this License, on a
-          durable physical medium customarily used for software
-          interchange, for a price no more than your reasonable cost of
-          physically performing this conveying of source, or (2) access
-          to copy the Corresponding Source from a network server at no
-          charge.
-
-       c. Convey individual copies of the object code with a copy of
-          the written offer to provide the Corresponding Source.  This
-          alternative is allowed only occasionally and noncommercially,
-          and only if you received the object code with such an offer,
-          in accord with subsection 6b.
-
-       d. Convey the object code by offering access from a designated
-          place (gratis or for a charge), and offer equivalent access
-          to the Corresponding Source in the same way through the same
-          place at no further charge.  You need not require recipients
-          to copy the Corresponding Source along with the object code.
-          If the place to copy the object code is a network server, the
-          Corresponding Source may be on a different server (operated
-          by you or a third party) that supports equivalent copying
-          facilities, provided you maintain clear directions next to
-          the object code saying where to find the Corresponding Source.
-          Regardless of what server hosts the Corresponding Source, you
-          remain obligated to ensure that it is available for as long
-          as needed to satisfy these requirements.
-
-       e. Convey the object code using peer-to-peer transmission,
-          provided you inform other peers where the object code and
-          Corresponding Source of the work are being offered to the
-          general public at no charge under subsection 6d.
-
-
-     A separable portion of the object code, whose source code is
-     excluded from the Corresponding Source as a System Library, need
-     not be included in conveying the object code work.
-
-     A "User Product" is either (1) a "consumer product", which means
-     any tangible personal property which is normally used for personal,
-     family, or household purposes, or (2) anything designed or sold for
-     incorporation into a dwelling.  In determining whether a product
-     is a consumer product, doubtful cases shall be resolved in favor of
-     coverage.  For a particular product received by a particular user,
-     "normally used" refers to a typical or common use of that class of
-     product, regardless of the status of the particular user or of the
-     way in which the particular user actually uses, or expects or is
-     expected to use, the product.  A product is a consumer product
-     regardless of whether the product has substantial commercial,
-     industrial or non-consumer uses, unless such uses represent the
-     only significant mode of use of the product.
-
-     "Installation Information" for a User Product means any methods,
-     procedures, authorization keys, or other information required to
-     install and execute modified versions of a covered work in that
-     User Product from a modified version of its Corresponding Source.
-     The information must suffice to ensure that the continued
-     functioning of the modified object code is in no case prevented or
-     interfered with solely because modification has been made.
-
-     If you convey an object code work under this section in, or with,
-     or specifically for use in, a User Product, and the conveying
-     occurs as part of a transaction in which the right of possession
-     and use of the User Product is transferred to the recipient in
-     perpetuity or for a fixed term (regardless of how the transaction
-     is characterized), the Corresponding Source conveyed under this
-     section must be accompanied by the Installation Information.  But
-     this requirement does not apply if neither you nor any third party
-     retains the ability to install modified object code on the User
-     Product (for example, the work has been installed in ROM).
-
-     The requirement to provide Installation Information does not
-     include a requirement to continue to provide support service,
-     warranty, or updates for a work that has been modified or
-     installed by the recipient, or for the User Product in which it
-     has been modified or installed.  Access to a network may be denied
-     when the modification itself materially and adversely affects the
-     operation of the network or violates the rules and protocols for
-     communication across the network.
-
-     Corresponding Source conveyed, and Installation Information
-     provided, in accord with this section must be in a format that is
-     publicly documented (and with an implementation available to the
-     public in source code form), and must require no special password
-     or key for unpacking, reading or copying.
-
-  7. Additional Terms.
-
-     "Additional permissions" are terms that supplement the terms of
-     this License by making exceptions from one or more of its
-     conditions.  Additional permissions that are applicable to the
-     entire Program shall be treated as though they were included in
-     this License, to the extent that they are valid under applicable
-     law.  If additional permissions apply only to part of the Program,
-     that part may be used separately under those permissions, but the
-     entire Program remains governed by this License without regard to
-     the additional permissions.
-
-     When you convey a copy of a covered work, you may at your option
-     remove any additional permissions from that copy, or from any part
-     of it.  (Additional permissions may be written to require their own
-     removal in certain cases when you modify the work.)  You may place
-     additional permissions on material, added by you to a covered work,
-     for which you have or can give appropriate copyright permission.
-
-     Notwithstanding any other provision of this License, for material
-     you add to a covered work, you may (if authorized by the copyright
-     holders of that material) supplement the terms of this License
-     with terms:
-
-       a. Disclaiming warranty or limiting liability differently from
-          the terms of sections 15 and 16 of this License; or
-
-       b. Requiring preservation of specified reasonable legal notices
-          or author attributions in that material or in the Appropriate
-          Legal Notices displayed by works containing it; or
-
-       c. Prohibiting misrepresentation of the origin of that material,
-          or requiring that modified versions of such material be
-          marked in reasonable ways as different from the original
-          version; or
-
-       d. Limiting the use for publicity purposes of names of licensors
-          or authors of the material; or
-
-       e. Declining to grant rights under trademark law for use of some
-          trade names, trademarks, or service marks; or
-
-       f. Requiring indemnification of licensors and authors of that
-          material by anyone who conveys the material (or modified
-          versions of it) with contractual assumptions of liability to
-          the recipient, for any liability that these contractual
-          assumptions directly impose on those licensors and authors.
-
-     All other non-permissive additional terms are considered "further
-     restrictions" within the meaning of section 10.  If the Program as
-     you received it, or any part of it, contains a notice stating that
-     it is governed by this License along with a term that is a further
-     restriction, you may remove that term.  If a license document
-     contains a further restriction but permits relicensing or
-     conveying under this License, you may add to a covered work
-     material governed by the terms of that license document, provided
-     that the further restriction does not survive such relicensing or
-     conveying.
-
-     If you add terms to a covered work in accord with this section, you
-     must place, in the relevant source files, a statement of the
-     additional terms that apply to those files, or a notice indicating
-     where to find the applicable terms.
-
-     Additional terms, permissive or non-permissive, may be stated in
-     the form of a separately written license, or stated as exceptions;
-     the above requirements apply either way.
-
-  8. Termination.
-
-     You may not propagate or modify a covered work except as expressly
-     provided under this License.  Any attempt otherwise to propagate or
-     modify it is void, and will automatically terminate your rights
-     under this License (including any patent licenses granted under
-     the third paragraph of section 11).
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, you do not qualify to receive new
-     licenses for the same material under section 10.
-
-  9. Acceptance Not Required for Having Copies.
-
-     You are not required to accept this License in order to receive or
-     run a copy of the Program.  Ancillary propagation of a covered work
-     occurring solely as a consequence of using peer-to-peer
-     transmission to receive a copy likewise does not require
-     acceptance.  However, nothing other than this License grants you
-     permission to propagate or modify any covered work.  These actions
-     infringe copyright if you do not accept this License.  Therefore,
-     by modifying or propagating a covered work, you indicate your
-     acceptance of this License to do so.
-
- 10. Automatic Licensing of Downstream Recipients.
-
-     Each time you convey a covered work, the recipient automatically
-     receives a license from the original licensors, to run, modify and
-     propagate that work, subject to this License.  You are not
-     responsible for enforcing compliance by third parties with this
-     License.
-
-     An "entity transaction" is a transaction transferring control of an
-     organization, or substantially all assets of one, or subdividing an
-     organization, or merging organizations.  If propagation of a
-     covered work results from an entity transaction, each party to that
-     transaction who receives a copy of the work also receives whatever
-     licenses to the work the party's predecessor in interest had or
-     could give under the previous paragraph, plus a right to
-     possession of the Corresponding Source of the work from the
-     predecessor in interest, if the predecessor has it or can get it
-     with reasonable efforts.
-
-     You may not impose any further restrictions on the exercise of the
-     rights granted or affirmed under this License.  For example, you
-     may not impose a license fee, royalty, or other charge for
-     exercise of rights granted under this License, and you may not
-     initiate litigation (including a cross-claim or counterclaim in a
-     lawsuit) alleging that any patent claim is infringed by making,
-     using, selling, offering for sale, or importing the Program or any
-     portion of it.
-
- 11. Patents.
-
-     A "contributor" is a copyright holder who authorizes use under this
-     License of the Program or a work on which the Program is based.
-     The work thus licensed is called the contributor's "contributor
-     version".
-
-     A contributor's "essential patent claims" are all patent claims
-     owned or controlled by the contributor, whether already acquired or
-     hereafter acquired, that would be infringed by some manner,
-     permitted by this License, of making, using, or selling its
-     contributor version, but do not include claims that would be
-     infringed only as a consequence of further modification of the
-     contributor version.  For purposes of this definition, "control"
-     includes the right to grant patent sublicenses in a manner
-     consistent with the requirements of this License.
-
-     Each contributor grants you a non-exclusive, worldwide,
-     royalty-free patent license under the contributor's essential
-     patent claims, to make, use, sell, offer for sale, import and
-     otherwise run, modify and propagate the contents of its
-     contributor version.
-
-     In the following three paragraphs, a "patent license" is any
-     express agreement or commitment, however denominated, not to
-     enforce a patent (such as an express permission to practice a
-     patent or covenant not to sue for patent infringement).  To
-     "grant" such a patent license to a party means to make such an
-     agreement or commitment not to enforce a patent against the party.
-
-     If you convey a covered work, knowingly relying on a patent
-     license, and the Corresponding Source of the work is not available
-     for anyone to copy, free of charge and under the terms of this
-     License, through a publicly available network server or other
-     readily accessible means, then you must either (1) cause the
-     Corresponding Source to be so available, or (2) arrange to deprive
-     yourself of the benefit of the patent license for this particular
-     work, or (3) arrange, in a manner consistent with the requirements
-     of this License, to extend the patent license to downstream
-     recipients.  "Knowingly relying" means you have actual knowledge
-     that, but for the patent license, your conveying the covered work
-     in a country, or your recipient's use of the covered work in a
-     country, would infringe one or more identifiable patents in that
-     country that you have reason to believe are valid.
-
-     If, pursuant to or in connection with a single transaction or
-     arrangement, you convey, or propagate by procuring conveyance of, a
-     covered work, and grant a patent license to some of the parties
-     receiving the covered work authorizing them to use, propagate,
-     modify or convey a specific copy of the covered work, then the
-     patent license you grant is automatically extended to all
-     recipients of the covered work and works based on it.
-
-     A patent license is "discriminatory" if it does not include within
-     the scope of its coverage, prohibits the exercise of, or is
-     conditioned on the non-exercise of one or more of the rights that
-     are specifically granted under this License.  You may not convey a
-     covered work if you are a party to an arrangement with a third
-     party that is in the business of distributing software, under
-     which you make payment to the third party based on the extent of
-     your activity of conveying the work, and under which the third
-     party grants, to any of the parties who would receive the covered
-     work from you, a discriminatory patent license (a) in connection
-     with copies of the covered work conveyed by you (or copies made
-     from those copies), or (b) primarily for and in connection with
-     specific products or compilations that contain the covered work,
-     unless you entered into that arrangement, or that patent license
-     was granted, prior to 28 March 2007.
-
-     Nothing in this License shall be construed as excluding or limiting
-     any implied license or other defenses to infringement that may
-     otherwise be available to you under applicable patent law.
-
- 12. No Surrender of Others' Freedom.
-
-     If conditions are imposed on you (whether by court order,
-     agreement or otherwise) that contradict the conditions of this
-     License, they do not excuse you from the conditions of this
-     License.  If you cannot convey a covered work so as to satisfy
-     simultaneously your obligations under this License and any other
-     pertinent obligations, then as a consequence you may not convey it
-     at all.  For example, if you agree to terms that obligate you to
-     collect a royalty for further conveying from those to whom you
-     convey the Program, the only way you could satisfy both those
-     terms and this License would be to refrain entirely from conveying
-     the Program.
-
- 13. Use with the GNU Affero General Public License.
-
-     Notwithstanding any other provision of this License, you have
-     permission to link or combine any covered work with a work licensed
-     under version 3 of the GNU Affero General Public License into a
-     single combined work, and to convey the resulting work.  The terms
-     of this License will continue to apply to the part which is the
-     covered work, but the special requirements of the GNU Affero
-     General Public License, section 13, concerning interaction through
-     a network will apply to the combination as such.
-
- 14. Revised Versions of this License.
-
-     The Free Software Foundation may publish revised and/or new
-     versions of the GNU General Public License from time to time.
-     Such new versions will be similar in spirit to the present
-     version, but may differ in detail to address new problems or
-     concerns.
-
-     Each version is given a distinguishing version number.  If the
-     Program specifies that a certain numbered version of the GNU
-     General Public License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that numbered version or of any later version published by the
-     Free Software Foundation.  If the Program does not specify a
-     version number of the GNU General Public License, you may choose
-     any version ever published by the Free Software Foundation.
-
-     If the Program specifies that a proxy can decide which future
-     versions of the GNU General Public License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Program.
-
-     Later license versions may give you additional or different
-     permissions.  However, no additional obligations are imposed on any
-     author or copyright holder as a result of your choosing to follow a
-     later version.
-
- 15. Disclaimer of Warranty.
-
-     THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-     APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE
-     COPYRIGHT HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM "AS IS"
-     WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED,
-     INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
-     MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE.  THE ENTIRE
-     RISK AS TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU.
-     SHOULD THE PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL
-     NECESSARY SERVICING, REPAIR OR CORRECTION.
-
- 16. Limitation of Liability.
-
-     IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN
-     WRITING WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MODIFIES
-     AND/OR CONVEYS THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU
-     FOR DAMAGES, INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR
-     CONSEQUENTIAL DAMAGES ARISING OUT OF THE USE OR INABILITY TO USE
-     THE PROGRAM (INCLUDING BUT NOT LIMITED TO LOSS OF DATA OR DATA
-     BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY YOU OR THIRD
-     PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER
-     PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF
-     THE POSSIBILITY OF SUCH DAMAGES.
-
- 17. Interpretation of Sections 15 and 16.
-
-     If the disclaimer of warranty and limitation of liability provided
-     above cannot be given local legal effect according to their terms,
-     reviewing courts shall apply local law that most closely
-     approximates an absolute waiver of all civil liability in
-     connection with the Program, unless a warranty or assumption of
-     liability accompanies a copy of the Program in return for a fee.
-
-
-END OF TERMS AND CONDITIONS
-===========================
-
-How to Apply These Terms to Your New Programs
-=============================================
-
-If you develop a new program, and you want it to be of the greatest
-possible use to the public, the best way to achieve this is to make it
-free software which everyone can redistribute and change under these
-terms.
-
-   To do so, attach the following notices to the program.  It is safest
-to attach them to the start of each source file to most effectively
-state the exclusion of warranty; and each file should have at least the
-"copyright" line and a pointer to where the full notice is found.
-
-     ONE LINE TO GIVE THE PROGRAM'S NAME AND A BRIEF IDEA OF WHAT IT DOES.
-     Copyright (C) YEAR NAME OF AUTHOR
-
-     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/'.
-
-   Also add information on how to contact you by electronic and paper
-mail.
-
-   If the program does terminal interaction, make it output a short
-notice like this when it starts in an interactive mode:
-
-     PROGRAM Copyright (C) YEAR NAME OF AUTHOR
-     This program comes with ABSOLUTELY NO WARRANTY; for details type `show w'.
-     This is free software, and you are welcome to redistribute it
-     under certain conditions; type `show c' for details.
-
-   The hypothetical commands `show w' and `show c' should show the
-appropriate parts of the General Public License.  Of course, your
-program's commands might be different; for a GUI interface, you would
-use an "about box".
-
-   You should also get your employer (if you work as a programmer) or
-school, if any, to sign a "copyright disclaimer" for the program, if
-necessary.  For more information on this, and how to apply and follow
-the GNU GPL, see `http://www.gnu.org/licenses/'.
-
-   The GNU General Public License does not permit incorporating your
-program into proprietary programs.  If your program is a subroutine
-library, you may consider it more useful to permit linking proprietary
-applications with the library.  If this is what you want to do, use the
-GNU Lesser General Public License instead of this License.  But first,
-please read `http://www.gnu.org/philosophy/why-not-lgpl.html'.
-
-\1f
-File: bison.info,  Node: Concepts,  Next: Examples,  Prev: Copying,  Up: Top
-
-1 The Concepts of Bison
-***********************
-
-This chapter introduces many of the basic concepts without which the
-details of Bison will not make sense.  If you do not already know how to
-use Bison or Yacc, we suggest you start by reading this chapter
-carefully.
-
-* Menu:
-
-* Language and Grammar:: Languages and context-free grammars,
-                           as mathematical ideas.
-* Grammar in Bison::     How we represent grammars for Bison's sake.
-* Semantic Values::      Each token or syntactic grouping can have
-                           a semantic value (the value of an integer,
-                           the name of an identifier, etc.).
-* Semantic Actions::     Each rule can have an action containing C code.
-* GLR Parsers::          Writing parsers for general context-free languages.
-* Locations::            Overview of location tracking.
-* Bison Parser::         What are Bison's input and output,
-                           how is the output used?
-* Stages::               Stages in writing and running Bison grammars.
-* Grammar Layout::       Overall structure of a Bison grammar file.
-
-\1f
-File: bison.info,  Node: Language and Grammar,  Next: Grammar in Bison,  Up: Concepts
-
-1.1 Languages and Context-Free Grammars
-=======================================
-
-In order for Bison to parse a language, it must be described by a
-"context-free grammar".  This means that you specify one or more
-"syntactic groupings" and give rules for constructing them from their
-parts.  For example, in the C language, one kind of grouping is called
-an `expression'.  One rule for making an expression might be, "An
-expression can be made of a minus sign and another expression".
-Another would be, "An expression can be an integer".  As you can see,
-rules are often recursive, but there must be at least one rule which
-leads out of the recursion.
-
-   The most common formal system for presenting such rules for humans
-to read is "Backus-Naur Form" or "BNF", which was developed in order to
-specify the language Algol 60.  Any grammar expressed in BNF is a
-context-free grammar.  The input to Bison is essentially
-machine-readable BNF.
-
-   There are various important subclasses of context-free grammars.
-Although it can handle almost all context-free grammars, Bison is
-optimized for what are called LR(1) grammars.  In brief, in these
-grammars, it must be possible to tell how to parse any portion of an
-input string with just a single token of lookahead.  For historical
-reasons, Bison by default is limited by the additional restrictions of
-LALR(1), which is hard to explain simply.  *Note Mysterious
-Conflicts::, for more information on this.  As an experimental feature,
-you can escape these additional restrictions by requesting IELR(1) or
-canonical LR(1) parser tables.  *Note LR Table Construction::, to learn
-how.
-
-   Parsers for LR(1) grammars are "deterministic", meaning roughly that
-the next grammar rule to apply at any point in the input is uniquely
-determined by the preceding input and a fixed, finite portion (called a
-"lookahead") of the remaining input.  A context-free grammar can be
-"ambiguous", meaning that there are multiple ways to apply the grammar
-rules to get the same inputs.  Even unambiguous grammars can be
-"nondeterministic", meaning that no fixed lookahead always suffices to
-determine the next grammar rule to apply.  With the proper
-declarations, Bison is also able to parse these more general
-context-free grammars, using a technique known as GLR parsing (for
-Generalized LR).  Bison's GLR parsers are able to handle any
-context-free grammar for which the number of possible parses of any
-given string is finite.
-
-   In the formal grammatical rules for a language, each kind of
-syntactic unit or grouping is named by a "symbol".  Those which are
-built by grouping smaller constructs according to grammatical rules are
-called "nonterminal symbols"; those which can't be subdivided are called
-"terminal symbols" or "token types".  We call a piece of input
-corresponding to a single terminal symbol a "token", and a piece
-corresponding to a single nonterminal symbol a "grouping".
-
-   We can use the C language as an example of what symbols, terminal and
-nonterminal, mean.  The tokens of C are identifiers, constants (numeric
-and string), and the various keywords, arithmetic operators and
-punctuation marks.  So the terminal symbols of a grammar for C include
-`identifier', `number', `string', plus one symbol for each keyword,
-operator or punctuation mark: `if', `return', `const', `static', `int',
-`char', `plus-sign', `open-brace', `close-brace', `comma' and many more.
-(These tokens can be subdivided into characters, but that is a matter of
-lexicography, not grammar.)
-
-   Here is a simple C function subdivided into tokens:
-
-     int             /* keyword `int' */
-     square (int x)  /* identifier, open-paren, keyword `int',
-                        identifier, close-paren */
-     {               /* open-brace */
-       return x * x; /* keyword `return', identifier, asterisk,
-                        identifier, semicolon */
-     }               /* close-brace */
-
-   The syntactic groupings of C include the expression, the statement,
-the declaration, and the function definition.  These are represented in
-the grammar of C by nonterminal symbols `expression', `statement',
-`declaration' and `function definition'.  The full grammar uses dozens
-of additional language constructs, each with its own nonterminal
-symbol, in order to express the meanings of these four.  The example
-above is a function definition; it contains one declaration, and one
-statement.  In the statement, each `x' is an expression and so is `x *
-x'.
-
-   Each nonterminal symbol must have grammatical rules showing how it
-is made out of simpler constructs.  For example, one kind of C
-statement is the `return' statement; this would be described with a
-grammar rule which reads informally as follows:
-
-     A `statement' can be made of a `return' keyword, an `expression'
-     and a `semicolon'.
-
-There would be many other rules for `statement', one for each kind of
-statement in C.
-
-   One nonterminal symbol must be distinguished as the special one which
-defines a complete utterance in the language.  It is called the "start
-symbol".  In a compiler, this means a complete input program.  In the C
-language, the nonterminal symbol `sequence of definitions and
-declarations' plays this role.
-
-   For example, `1 + 2' is a valid C expression--a valid part of a C
-program--but it is not valid as an _entire_ C program.  In the
-context-free grammar of C, this follows from the fact that `expression'
-is not the start symbol.
-
-   The Bison parser reads a sequence of tokens as its input, and groups
-the tokens using the grammar rules.  If the input is valid, the end
-result is that the entire token sequence reduces to a single grouping
-whose symbol is the grammar's start symbol.  If we use a grammar for C,
-the entire input must be a `sequence of definitions and declarations'.
-If not, the parser reports a syntax error.
-
-\1f
-File: bison.info,  Node: Grammar in Bison,  Next: Semantic Values,  Prev: Language and Grammar,  Up: Concepts
-
-1.2 From Formal Rules to Bison Input
-====================================
-
-A formal grammar is a mathematical construct.  To define the language
-for Bison, you must write a file expressing the grammar in Bison syntax:
-a "Bison grammar" file.  *Note Bison Grammar Files: Grammar File.
-
-   A nonterminal symbol in the formal grammar is represented in Bison
-input as an identifier, like an identifier in C.  By convention, it
-should be in lower case, such as `expr', `stmt' or `declaration'.
-
-   The Bison representation for a terminal symbol is also called a
-"token type".  Token types as well can be represented as C-like
-identifiers.  By convention, these identifiers should be upper case to
-distinguish them from nonterminals: for example, `INTEGER',
-`IDENTIFIER', `IF' or `RETURN'.  A terminal symbol that stands for a
-particular keyword in the language should be named after that keyword
-converted to upper case.  The terminal symbol `error' is reserved for
-error recovery.  *Note Symbols::.
-
-   A terminal symbol can also be represented as a character literal,
-just like a C character constant.  You should do this whenever a token
-is just a single character (parenthesis, plus-sign, etc.): use that
-same character in a literal as the terminal symbol for that token.
-
-   A third way to represent a terminal symbol is with a C string
-constant containing several characters.  *Note Symbols::, for more
-information.
-
-   The grammar rules also have an expression in Bison syntax.  For
-example, here is the Bison rule for a C `return' statement.  The
-semicolon in quotes is a literal character token, representing part of
-the C syntax for the statement; the naked semicolon, and the colon, are
-Bison punctuation used in every rule.
-
-     stmt: RETURN expr ';' ;
-
-*Note Syntax of Grammar Rules: Rules.
-
-\1f
-File: bison.info,  Node: Semantic Values,  Next: Semantic Actions,  Prev: Grammar in Bison,  Up: Concepts
-
-1.3 Semantic Values
-===================
-
-A formal grammar selects tokens only by their classifications: for
-example, if a rule mentions the terminal symbol `integer constant', it
-means that _any_ integer constant is grammatically valid in that
-position.  The precise value of the constant is irrelevant to how to
-parse the input: if `x+4' is grammatical then `x+1' or `x+3989' is
-equally grammatical.
-
-   But the precise value is very important for what the input means
-once it is parsed.  A compiler is useless if it fails to distinguish
-between 4, 1 and 3989 as constants in the program!  Therefore, each
-token in a Bison grammar has both a token type and a "semantic value".
-*Note Defining Language Semantics: Semantics, for details.
-
-   The token type is a terminal symbol defined in the grammar, such as
-`INTEGER', `IDENTIFIER' or `',''.  It tells everything you need to know
-to decide where the token may validly appear and how to group it with
-other tokens.  The grammar rules know nothing about tokens except their
-types.
-
-   The semantic value has all the rest of the information about the
-meaning of the token, such as the value of an integer, or the name of an
-identifier.  (A token such as `','' which is just punctuation doesn't
-need to have any semantic value.)
-
-   For example, an input token might be classified as token type
-`INTEGER' and have the semantic value 4.  Another input token might
-have the same token type `INTEGER' but value 3989.  When a grammar rule
-says that `INTEGER' is allowed, either of these tokens is acceptable
-because each is an `INTEGER'.  When the parser accepts the token, it
-keeps track of the token's semantic value.
-
-   Each grouping can also have a semantic value as well as its
-nonterminal symbol.  For example, in a calculator, an expression
-typically has a semantic value that is a number.  In a compiler for a
-programming language, an expression typically has a semantic value that
-is a tree structure describing the meaning of the expression.
-
-\1f
-File: bison.info,  Node: Semantic Actions,  Next: GLR Parsers,  Prev: Semantic Values,  Up: Concepts
-
-1.4 Semantic Actions
-====================
-
-In order to be useful, a program must do more than parse input; it must
-also produce some output based on the input.  In a Bison grammar, a
-grammar rule can have an "action" made up of C statements.  Each time
-the parser recognizes a match for that rule, the action is executed.
-*Note Actions::.
-
-   Most of the time, the purpose of an action is to compute the
-semantic value of the whole construct from the semantic values of its
-parts.  For example, suppose we have a rule which says an expression
-can be the sum of two expressions.  When the parser recognizes such a
-sum, each of the subexpressions has a semantic value which describes
-how it was built up.  The action for this rule should create a similar
-sort of value for the newly recognized larger expression.
-
-   For example, here is a rule that says an expression can be the sum of
-two subexpressions:
-
-     expr: expr '+' expr   { $$ = $1 + $3; } ;
-
-The action says how to produce the semantic value of the sum expression
-from the values of the two subexpressions.
-
-\1f
-File: bison.info,  Node: GLR Parsers,  Next: Locations,  Prev: Semantic Actions,  Up: Concepts
-
-1.5 Writing GLR Parsers
-=======================
-
-In some grammars, Bison's deterministic LR(1) parsing algorithm cannot
-decide whether to apply a certain grammar rule at a given point.  That
-is, it may not be able to decide (on the basis of the input read so
-far) which of two possible reductions (applications of a grammar rule)
-applies, or whether to apply a reduction or read more of the input and
-apply a reduction later in the input.  These are known respectively as
-"reduce/reduce" conflicts (*note Reduce/Reduce::), and "shift/reduce"
-conflicts (*note Shift/Reduce::).
-
-   To use a grammar that is not easily modified to be LR(1), a more
-general parsing algorithm is sometimes necessary.  If you include
-`%glr-parser' among the Bison declarations in your file (*note Grammar
-Outline::), the result is a Generalized LR (GLR) parser.  These parsers
-handle Bison grammars that contain no unresolved conflicts (i.e., after
-applying precedence declarations) identically to deterministic parsers.
-However, when faced with unresolved shift/reduce and reduce/reduce
-conflicts, GLR parsers use the simple expedient of doing both,
-effectively cloning the parser to follow both possibilities.  Each of
-the resulting parsers can again split, so that at any given time, there
-can be any number of possible parses being explored.  The parsers
-proceed in lockstep; that is, all of them consume (shift) a given input
-symbol before any of them proceed to the next.  Each of the cloned
-parsers eventually meets one of two possible fates: either it runs into
-a parsing error, in which case it simply vanishes, or it merges with
-another parser, because the two of them have reduced the input to an
-identical set of symbols.
-
-   During the time that there are multiple parsers, semantic actions are
-recorded, but not performed.  When a parser disappears, its recorded
-semantic actions disappear as well, and are never performed.  When a
-reduction makes two parsers identical, causing them to merge, Bison
-records both sets of semantic actions.  Whenever the last two parsers
-merge, reverting to the single-parser case, Bison resolves all the
-outstanding actions either by precedences given to the grammar rules
-involved, or by performing both actions, and then calling a designated
-user-defined function on the resulting values to produce an arbitrary
-merged result.
-
-* Menu:
-
-* Simple GLR Parsers::     Using GLR parsers on unambiguous grammars.
-* Merging GLR Parses::     Using GLR parsers to resolve ambiguities.
-* GLR Semantic Actions::   Deferred semantic actions have special concerns.
-* Compiler Requirements::  GLR parsers require a modern C compiler.
-
-\1f
-File: bison.info,  Node: Simple GLR Parsers,  Next: Merging GLR Parses,  Up: GLR Parsers
-
-1.5.1 Using GLR on Unambiguous Grammars
----------------------------------------
-
-In the simplest cases, you can use the GLR algorithm to parse grammars
-that are unambiguous but fail to be LR(1).  Such grammars typically
-require more than one symbol of lookahead.
-
-   Consider a problem that arises in the declaration of enumerated and
-subrange types in the programming language Pascal.  Here are some
-examples:
-
-     type subrange = lo .. hi;
-     type enum = (a, b, c);
-
-The original language standard allows only numeric literals and
-constant identifiers for the subrange bounds (`lo' and `hi'), but
-Extended Pascal (ISO/IEC 10206) and many other Pascal implementations
-allow arbitrary expressions there.  This gives rise to the following
-situation, containing a superfluous pair of parentheses:
-
-     type subrange = (a) .. b;
-
-Compare this to the following declaration of an enumerated type with
-only one value:
-
-     type enum = (a);
-
-(These declarations are contrived, but they are syntactically valid,
-and more-complicated cases can come up in practical programs.)
-
-   These two declarations look identical until the `..' token.  With
-normal LR(1) one-token lookahead it is not possible to decide between
-the two forms when the identifier `a' is parsed.  It is, however,
-desirable for a parser to decide this, since in the latter case `a'
-must become a new identifier to represent the enumeration value, while
-in the former case `a' must be evaluated with its current meaning,
-which may be a constant or even a function call.
-
-   You could parse `(a)' as an "unspecified identifier in parentheses",
-to be resolved later, but this typically requires substantial
-contortions in both semantic actions and large parts of the grammar,
-where the parentheses are nested in the recursive rules for expressions.
-
-   You might think of using the lexer to distinguish between the two
-forms by returning different tokens for currently defined and undefined
-identifiers.  But if these declarations occur in a local scope, and `a'
-is defined in an outer scope, then both forms are possible--either
-locally redefining `a', or using the value of `a' from the outer scope.
-So this approach cannot work.
-
-   A simple solution to this problem is to declare the parser to use
-the GLR algorithm.  When the GLR parser reaches the critical state, it
-merely splits into two branches and pursues both syntax rules
-simultaneously.  Sooner or later, one of them runs into a parsing
-error.  If there is a `..' token before the next `;', the rule for
-enumerated types fails since it cannot accept `..' anywhere; otherwise,
-the subrange type rule fails since it requires a `..' token.  So one of
-the branches fails silently, and the other one continues normally,
-performing all the intermediate actions that were postponed during the
-split.
-
-   If the input is syntactically incorrect, both branches fail and the
-parser reports a syntax error as usual.
-
-   The effect of all this is that the parser seems to "guess" the
-correct branch to take, or in other words, it seems to use more
-lookahead than the underlying LR(1) algorithm actually allows for.  In
-this example, LR(2) would suffice, but also some cases that are not
-LR(k) for any k can be handled this way.
-
-   In general, a GLR parser can take quadratic or cubic worst-case time,
-and the current Bison parser even takes exponential time and space for
-some grammars.  In practice, this rarely happens, and for many grammars
-it is possible to prove that it cannot happen.  The present example
-contains only one conflict between two rules, and the type-declaration
-context containing the conflict cannot be nested.  So the number of
-branches that can exist at any time is limited by the constant 2, and
-the parsing time is still linear.
-
-   Here is a Bison grammar corresponding to the example above.  It
-parses a vastly simplified form of Pascal type declarations.
-
-     %token TYPE DOTDOT ID
-
-     %left '+' '-'
-     %left '*' '/'
-
-     %%
-
-     type_decl: TYPE ID '=' type ';' ;
-
-     type:
-       '(' id_list ')'
-     | expr DOTDOT expr
-     ;
-
-     id_list:
-       ID
-     | id_list ',' ID
-     ;
-
-     expr:
-       '(' expr ')'
-     | expr '+' expr
-     | expr '-' expr
-     | expr '*' expr
-     | expr '/' expr
-     | ID
-     ;
-
-   When used as a normal LR(1) grammar, Bison correctly complains about
-one reduce/reduce conflict.  In the conflicting situation the parser
-chooses one of the alternatives, arbitrarily the one declared first.
-Therefore the following correct input is not recognized:
-
-     type t = (a) .. b;
-
-   The parser can be turned into a GLR parser, while also telling Bison
-to be silent about the one known reduce/reduce conflict, by adding
-these two declarations to the Bison grammar file (before the first
-`%%'):
-
-     %glr-parser
-     %expect-rr 1
-
-No change in the grammar itself is required.  Now the parser recognizes
-all valid declarations, according to the limited syntax above,
-transparently.  In fact, the user does not even notice when the parser
-splits.
-
-   So here we have a case where we can use the benefits of GLR, almost
-without disadvantages.  Even in simple cases like this, however, there
-are at least two potential problems to beware.  First, always analyze
-the conflicts reported by Bison to make sure that GLR splitting is only
-done where it is intended.  A GLR parser splitting inadvertently may
-cause problems less obvious than an LR parser statically choosing the
-wrong alternative in a conflict.  Second, consider interactions with
-the lexer (*note Semantic Tokens::) with great care.  Since a split
-parser consumes tokens without performing any actions during the split,
-the lexer cannot obtain information via parser actions.  Some cases of
-lexer interactions can be eliminated by using GLR to shift the
-complications from the lexer to the parser.  You must check the
-remaining cases for correctness.
-
-   In our example, it would be safe for the lexer to return tokens
-based on their current meanings in some symbol table, because no new
-symbols are defined in the middle of a type declaration.  Though it is
-possible for a parser to define the enumeration constants as they are
-parsed, before the type declaration is completed, it actually makes no
-difference since they cannot be used within the same enumerated type
-declaration.
-
-\1f
-File: bison.info,  Node: Merging GLR Parses,  Next: GLR Semantic Actions,  Prev: Simple GLR Parsers,  Up: GLR Parsers
-
-1.5.2 Using GLR to Resolve Ambiguities
---------------------------------------
-
-Let's consider an example, vastly simplified from a C++ grammar.
-
-     %{
-       #include <stdio.h>
-       #define YYSTYPE char const *
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-
-     %token TYPENAME ID
-
-     %right '='
-     %left '+'
-
-     %glr-parser
-
-     %%
-
-     prog:
-       /* Nothing.  */
-     | prog stmt   { printf ("\n"); }
-     ;
-
-     stmt:
-       expr ';'  %dprec 1
-     | decl      %dprec 2
-     ;
-
-     expr:
-       ID               { printf ("%s ", $$); }
-     | TYPENAME '(' expr ')'
-                        { printf ("%s <cast> ", $1); }
-     | expr '+' expr    { printf ("+ "); }
-     | expr '=' expr    { printf ("= "); }
-     ;
-
-     decl:
-       TYPENAME declarator ';'
-                        { printf ("%s <declare> ", $1); }
-     | TYPENAME declarator '=' expr ';'
-                        { printf ("%s <init-declare> ", $1); }
-     ;
-
-     declarator:
-       ID               { printf ("\"%s\" ", $1); }
-     | '(' declarator ')'
-     ;
-
-This models a problematic part of the C++ grammar--the ambiguity between
-certain declarations and statements.  For example,
-
-     T (x) = y+z;
-
-parses as either an `expr' or a `stmt' (assuming that `T' is recognized
-as a `TYPENAME' and `x' as an `ID').  Bison detects this as a
-reduce/reduce conflict between the rules `expr : ID' and `declarator :
-ID', which it cannot resolve at the time it encounters `x' in the
-example above.  Since this is a GLR parser, it therefore splits the
-problem into two parses, one for each choice of resolving the
-reduce/reduce conflict.  Unlike the example from the previous section
-(*note Simple GLR Parsers::), however, neither of these parses "dies,"
-because the grammar as it stands is ambiguous.  One of the parsers
-eventually reduces `stmt : expr ';'' and the other reduces `stmt :
-decl', after which both parsers are in an identical state: they've seen
-`prog stmt' and have the same unprocessed input remaining.  We say that
-these parses have "merged."
-
-   At this point, the GLR parser requires a specification in the
-grammar of how to choose between the competing parses.  In the example
-above, the two `%dprec' declarations specify that Bison is to give
-precedence to the parse that interprets the example as a `decl', which
-implies that `x' is a declarator.  The parser therefore prints
-
-     "x" y z + T <init-declare>
-
-   The `%dprec' declarations only come into play when more than one
-parse survives.  Consider a different input string for this parser:
-
-     T (x) + y;
-
-This is another example of using GLR to parse an unambiguous construct,
-as shown in the previous section (*note Simple GLR Parsers::).  Here,
-there is no ambiguity (this cannot be parsed as a declaration).
-However, at the time the Bison parser encounters `x', it does not have
-enough information to resolve the reduce/reduce conflict (again,
-between `x' as an `expr' or a `declarator').  In this case, no
-precedence declaration is used.  Again, the parser splits into two, one
-assuming that `x' is an `expr', and the other assuming `x' is a
-`declarator'.  The second of these parsers then vanishes when it sees
-`+', and the parser prints
-
-     x T <cast> y +
-
-   Suppose that instead of resolving the ambiguity, you wanted to see
-all the possibilities.  For this purpose, you must merge the semantic
-actions of the two possible parsers, rather than choosing one over the
-other.  To do so, you could change the declaration of `stmt' as follows:
-
-     stmt:
-       expr ';'  %merge <stmtMerge>
-     | decl      %merge <stmtMerge>
-     ;
-
-and define the `stmtMerge' function as:
-
-     static YYSTYPE
-     stmtMerge (YYSTYPE x0, YYSTYPE x1)
-     {
-       printf ("<OR> ");
-       return "";
-     }
-
-with an accompanying forward declaration in the C declarations at the
-beginning of the file:
-
-     %{
-       #define YYSTYPE char const *
-       static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
-     %}
-
-With these declarations, the resulting parser parses the first example
-as both an `expr' and a `decl', and prints
-
-     "x" y z + T <init-declare> x T <cast> y z + = <OR>
-
-   Bison requires that all of the productions that participate in any
-particular merge have identical `%merge' clauses.  Otherwise, the
-ambiguity would be unresolvable, and the parser will report an error
-during any parse that results in the offending merge.
-
-\1f
-File: bison.info,  Node: GLR Semantic Actions,  Next: Compiler Requirements,  Prev: Merging GLR Parses,  Up: GLR Parsers
-
-1.5.3 GLR Semantic Actions
---------------------------
-
-By definition, a deferred semantic action is not performed at the same
-time as the associated reduction.  This raises caveats for several
-Bison features you might use in a semantic action in a GLR parser.
-
-   In any semantic action, you can examine `yychar' to determine the
-type of the lookahead token present at the time of the associated
-reduction.  After checking that `yychar' is not set to `YYEMPTY' or
-`YYEOF', you can then examine `yylval' and `yylloc' to determine the
-lookahead token's semantic value and location, if any.  In a
-nondeferred semantic action, you can also modify any of these variables
-to influence syntax analysis.  *Note Lookahead Tokens: Lookahead.
-
-   In a deferred semantic action, it's too late to influence syntax
-analysis.  In this case, `yychar', `yylval', and `yylloc' are set to
-shallow copies of the values they had at the time of the associated
-reduction.  For this reason alone, modifying them is dangerous.
-Moreover, the result of modifying them is undefined and subject to
-change with future versions of Bison.  For example, if a semantic
-action might be deferred, you should never write it to invoke
-`yyclearin' (*note Action Features::) or to attempt to free memory
-referenced by `yylval'.
-
-   Another Bison feature requiring special consideration is `YYERROR'
-(*note Action Features::), which you can invoke in a semantic action to
-initiate error recovery.  During deterministic GLR operation, the
-effect of `YYERROR' is the same as its effect in a deterministic parser.
-In a deferred semantic action, its effect is undefined.
-
-   Also, see *note Default Action for Locations: Location Default
-Action, which describes a special usage of `YYLLOC_DEFAULT' in GLR
-parsers.
-
-\1f
-File: bison.info,  Node: Compiler Requirements,  Prev: GLR Semantic Actions,  Up: GLR Parsers
-
-1.5.4 Considerations when Compiling GLR Parsers
------------------------------------------------
-
-The GLR parsers require a compiler for ISO C89 or later.  In addition,
-they use the `inline' keyword, which is not C89, but is C99 and is a
-common extension in pre-C99 compilers.  It is up to the user of these
-parsers to handle portability issues.  For instance, if using Autoconf
-and the Autoconf macro `AC_C_INLINE', a mere
-
-     %{
-       #include <config.h>
-     %}
-
-will suffice.  Otherwise, we suggest
-
-     %{
-       #if (__STDC_VERSION__ < 199901 && ! defined __GNUC__ \
-            && ! defined inline)
-       # define inline
-       #endif
-     %}
-
-\1f
-File: bison.info,  Node: Locations,  Next: Bison Parser,  Prev: GLR Parsers,  Up: Concepts
-
-1.6 Locations
-=============
-
-Many applications, like interpreters or compilers, have to produce
-verbose and useful error messages.  To achieve this, one must be able
-to keep track of the "textual location", or "location", of each
-syntactic construct.  Bison provides a mechanism for handling these
-locations.
-
-   Each token has a semantic value.  In a similar fashion, each token
-has an associated location, but the type of locations is the same for
-all tokens and groupings.  Moreover, the output parser is equipped with
-a default data structure for storing locations (*note Tracking
-Locations::, for more details).
-
-   Like semantic values, locations can be reached in actions using a
-dedicated set of constructs.  In the example above, the location of the
-whole grouping is `@$', while the locations of the subexpressions are
-`@1' and `@3'.
-
-   When a rule is matched, a default action is used to compute the
-semantic value of its left hand side (*note Actions::).  In the same
-way, another default action is used for locations.  However, the action
-for locations is general enough for most cases, meaning there is
-usually no need to describe for each rule how `@$' should be formed.
-When building a new location for a given grouping, the default behavior
-of the output parser is to take the beginning of the first symbol, and
-the end of the last symbol.
-
-\1f
-File: bison.info,  Node: Bison Parser,  Next: Stages,  Prev: Locations,  Up: Concepts
-
-1.7 Bison Output: the Parser Implementation File
-================================================
-
-When you run Bison, you give it a Bison grammar file as input.  The
-most important output is a C source file that implements a parser for
-the language described by the grammar.  This parser is called a "Bison
-parser", and this file is called a "Bison parser implementation file".
-Keep in mind that the Bison utility and the Bison parser are two
-distinct programs: the Bison utility is a program whose output is the
-Bison parser implementation file that becomes part of your program.
-
-   The job of the Bison parser is to group tokens into groupings
-according to the grammar rules--for example, to build identifiers and
-operators into expressions.  As it does this, it runs the actions for
-the grammar rules it uses.
-
-   The tokens come from a function called the "lexical analyzer" that
-you must supply in some fashion (such as by writing it in C).  The Bison
-parser calls the lexical analyzer each time it wants a new token.  It
-doesn't know what is "inside" the tokens (though their semantic values
-may reflect this).  Typically the lexical analyzer makes the tokens by
-parsing characters of text, but Bison does not depend on this.  *Note
-The Lexical Analyzer Function `yylex': Lexical.
-
-   The Bison parser implementation file is C code which defines a
-function named `yyparse' which implements that grammar.  This function
-does not make a complete C program: you must supply some additional
-functions.  One is the lexical analyzer.  Another is an error-reporting
-function which the parser calls to report an error.  In addition, a
-complete C program must start with a function called `main'; you have
-to provide this, and arrange for it to call `yyparse' or the parser
-will never run.  *Note Parser C-Language Interface: Interface.
-
-   Aside from the token type names and the symbols in the actions you
-write, all symbols defined in the Bison parser implementation file
-itself begin with `yy' or `YY'.  This includes interface functions such
-as the lexical analyzer function `yylex', the error reporting function
-`yyerror' and the parser function `yyparse' itself.  This also includes
-numerous identifiers used for internal purposes.  Therefore, you should
-avoid using C identifiers starting with `yy' or `YY' in the Bison
-grammar file except for the ones defined in this manual.  Also, you
-should avoid using the C identifiers `malloc' and `free' for anything
-other than their usual meanings.
-
-   In some cases the Bison parser implementation file includes system
-headers, and in those cases your code should respect the identifiers
-reserved by those headers.  On some non-GNU hosts, `<alloca.h>',
-`<malloc.h>', `<stddef.h>', and `<stdlib.h>' are included as needed to
-declare memory allocators and related types.  `<libintl.h>' is included
-if message translation is in use (*note Internationalization::).  Other
-system headers may be included if you define `YYDEBUG' to a nonzero
-value (*note Tracing Your Parser: Tracing.).
-
-\1f
-File: bison.info,  Node: Stages,  Next: Grammar Layout,  Prev: Bison Parser,  Up: Concepts
-
-1.8 Stages in Using Bison
-=========================
-
-The actual language-design process using Bison, from grammar
-specification to a working compiler or interpreter, has these parts:
-
-  1. Formally specify the grammar in a form recognized by Bison (*note
-     Bison Grammar Files: Grammar File.).  For each grammatical rule in
-     the language, describe the action that is to be taken when an
-     instance of that rule is recognized.  The action is described by a
-     sequence of C statements.
-
-  2. Write a lexical analyzer to process input and pass tokens to the
-     parser.  The lexical analyzer may be written by hand in C (*note
-     The Lexical Analyzer Function `yylex': Lexical.).  It could also
-     be produced using Lex, but the use of Lex is not discussed in this
-     manual.
-
-  3. Write a controlling function that calls the Bison-produced parser.
-
-  4. Write error-reporting routines.
-
-   To turn this source code as written into a runnable program, you
-must follow these steps:
-
-  1. Run Bison on the grammar to produce the parser.
-
-  2. Compile the code output by Bison, as well as any other source
-     files.
-
-  3. Link the object files to produce the finished product.
-
-\1f
-File: bison.info,  Node: Grammar Layout,  Prev: Stages,  Up: Concepts
-
-1.9 The Overall Layout of a Bison Grammar
-=========================================
-
-The input file for the Bison utility is a "Bison grammar file".  The
-general form of a Bison grammar file is as follows:
-
-     %{
-     PROLOGUE
-     %}
-
-     BISON DECLARATIONS
-
-     %%
-     GRAMMAR RULES
-     %%
-     EPILOGUE
-
-The `%%', `%{' and `%}' are punctuation that appears in every Bison
-grammar file to separate the sections.
-
-   The prologue may define types and variables used in the actions.
-You can also use preprocessor commands to define macros used there, and
-use `#include' to include header files that do any of these things.
-You need to declare the lexical analyzer `yylex' and the error printer
-`yyerror' here, along with any other global identifiers used by the
-actions in the grammar rules.
-
-   The Bison declarations declare the names of the terminal and
-nonterminal symbols, and may also describe operator precedence and the
-data types of semantic values of various symbols.
-
-   The grammar rules define how to construct each nonterminal symbol
-from its parts.
-
-   The epilogue can contain any code you want to use.  Often the
-definitions of functions declared in the prologue go here.  In a simple
-program, all the rest of the program can go here.
-
-\1f
-File: bison.info,  Node: Examples,  Next: Grammar File,  Prev: Concepts,  Up: Top
-
-2 Examples
-**********
-
-Now we show and explain several sample programs written using Bison: a
-reverse polish notation calculator, an algebraic (infix) notation
-calculator -- later extended to track "locations" -- and a
-multi-function calculator.  All produce usable, though limited,
-interactive desk-top calculators.
-
-   These examples are simple, but Bison grammars for real programming
-languages are written the same way.  You can copy these examples into a
-source file to try them.
-
-* Menu:
-
-* RPN Calc::               Reverse polish notation calculator;
-                             a first example with no operator precedence.
-* Infix Calc::             Infix (algebraic) notation calculator.
-                             Operator precedence is introduced.
-* Simple Error Recovery::  Continuing after syntax errors.
-* Location Tracking Calc:: Demonstrating the use of @N and @$.
-* Multi-function Calc::    Calculator with memory and trig functions.
-                             It uses multiple data-types for semantic values.
-* Exercises::              Ideas for improving the multi-function calculator.
-
-\1f
-File: bison.info,  Node: RPN Calc,  Next: Infix Calc,  Up: Examples
-
-2.1 Reverse Polish Notation Calculator
-======================================
-
-The first example is that of a simple double-precision "reverse polish
-notation" calculator (a calculator using postfix operators).  This
-example provides a good starting point, since operator precedence is
-not an issue.  The second example will illustrate how operator
-precedence is handled.
-
-   The source code for this calculator is named `rpcalc.y'.  The `.y'
-extension is a convention used for Bison grammar files.
-
-* Menu:
-
-* Rpcalc Declarations::    Prologue (declarations) for rpcalc.
-* Rpcalc Rules::           Grammar Rules for rpcalc, with explanation.
-* Rpcalc Lexer::           The lexical analyzer.
-* Rpcalc Main::            The controlling function.
-* Rpcalc Error::           The error reporting function.
-* Rpcalc Generate::        Running Bison on the grammar file.
-* Rpcalc Compile::         Run the C compiler on the output code.
-
-\1f
-File: bison.info,  Node: Rpcalc Declarations,  Next: Rpcalc Rules,  Up: RPN Calc
-
-2.1.1 Declarations for `rpcalc'
--------------------------------
-
-Here are the C and Bison declarations for the reverse polish notation
-calculator.  As in C, comments are placed between `/*...*/'.
-
-     /* Reverse polish notation calculator.  */
-
-     %{
-       #define YYSTYPE double
-       #include <math.h>
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-
-     %token NUM
-
-     %% /* Grammar rules and actions follow.  */
-
-   The declarations section (*note The prologue: Prologue.) contains two
-preprocessor directives and two forward declarations.
-
-   The `#define' directive defines the macro `YYSTYPE', thus specifying
-the C data type for semantic values of both tokens and groupings (*note
-Data Types of Semantic Values: Value Type.).  The Bison parser will use
-whatever type `YYSTYPE' is defined as; if you don't define it, `int' is
-the default.  Because we specify `double', each token and each
-expression has an associated value, which is a floating point number.
-
-   The `#include' directive is used to declare the exponentiation
-function `pow'.
-
-   The forward declarations for `yylex' and `yyerror' are needed
-because the C language requires that functions be declared before they
-are used.  These functions will be defined in the epilogue, but the
-parser calls them so they must be declared in the prologue.
-
-   The second section, Bison declarations, provides information to Bison
-about the token types (*note The Bison Declarations Section: Bison
-Declarations.).  Each terminal symbol that is not a single-character
-literal must be declared here.  (Single-character literals normally
-don't need to be declared.)  In this example, all the arithmetic
-operators are designated by single-character literals, so the only
-terminal symbol that needs to be declared is `NUM', the token type for
-numeric constants.
-
-\1f
-File: bison.info,  Node: Rpcalc Rules,  Next: Rpcalc Lexer,  Prev: Rpcalc Declarations,  Up: RPN Calc
-
-2.1.2 Grammar Rules for `rpcalc'
---------------------------------
-
-Here are the grammar rules for the reverse polish notation calculator.
-
-     input:
-       /* empty */
-     | input line
-     ;
-
-     line:
-       '\n'
-     | exp '\n'      { printf ("%.10g\n", $1); }
-     ;
-
-     exp:
-       NUM           { $$ = $1;           }
-     | exp exp '+'   { $$ = $1 + $2;      }
-     | exp exp '-'   { $$ = $1 - $2;      }
-     | exp exp '*'   { $$ = $1 * $2;      }
-     | exp exp '/'   { $$ = $1 / $2;      }
-     | exp exp '^'   { $$ = pow ($1, $2); }  /* Exponentiation */
-     | exp 'n'       { $$ = -$1;          }  /* Unary minus    */
-     ;
-     %%
-
-   The groupings of the rpcalc "language" defined here are the
-expression (given the name `exp'), the line of input (`line'), and the
-complete input transcript (`input').  Each of these nonterminal symbols
-has several alternate rules, joined by the vertical bar `|' which is
-read as "or".  The following sections explain what these rules mean.
-
-   The semantics of the language is determined by the actions taken
-when a grouping is recognized.  The actions are the C code that appears
-inside braces.  *Note Actions::.
-
-   You must specify these actions in C, but Bison provides the means for
-passing semantic values between the rules.  In each action, the
-pseudo-variable `$$' stands for the semantic value for the grouping
-that the rule is going to construct.  Assigning a value to `$$' is the
-main job of most actions.  The semantic values of the components of the
-rule are referred to as `$1', `$2', and so on.
-
-* Menu:
-
-* Rpcalc Input::
-* Rpcalc Line::
-* Rpcalc Expr::
-
-\1f
-File: bison.info,  Node: Rpcalc Input,  Next: Rpcalc Line,  Up: Rpcalc Rules
-
-2.1.2.1 Explanation of `input'
-..............................
-
-Consider the definition of `input':
-
-     input:
-       /* empty */
-     | input line
-     ;
-
-   This definition reads as follows: "A complete input is either an
-empty string, or a complete input followed by an input line".  Notice
-that "complete input" is defined in terms of itself.  This definition
-is said to be "left recursive" since `input' appears always as the
-leftmost symbol in the sequence.  *Note Recursive Rules: Recursion.
-
-   The first alternative is empty because there are no symbols between
-the colon and the first `|'; this means that `input' can match an empty
-string of input (no tokens).  We write the rules this way because it is
-legitimate to type `Ctrl-d' right after you start the calculator.  It's
-conventional to put an empty alternative first and write the comment
-`/* empty */' in it.
-
-   The second alternate rule (`input line') handles all nontrivial
-input.  It means, "After reading any number of lines, read one more
-line if possible."  The left recursion makes this rule into a loop.
-Since the first alternative matches empty input, the loop can be
-executed zero or more times.
-
-   The parser function `yyparse' continues to process input until a
-grammatical error is seen or the lexical analyzer says there are no more
-input tokens; we will arrange for the latter to happen at end-of-input.
-
-\1f
-File: bison.info,  Node: Rpcalc Line,  Next: Rpcalc Expr,  Prev: Rpcalc Input,  Up: Rpcalc Rules
-
-2.1.2.2 Explanation of `line'
-.............................
-
-Now consider the definition of `line':
-
-     line:
-       '\n'
-     | exp '\n'  { printf ("%.10g\n", $1); }
-     ;
-
-   The first alternative is a token which is a newline character; this
-means that rpcalc accepts a blank line (and ignores it, since there is
-no action).  The second alternative is an expression followed by a
-newline.  This is the alternative that makes rpcalc useful.  The
-semantic value of the `exp' grouping is the value of `$1' because the
-`exp' in question is the first symbol in the alternative.  The action
-prints this value, which is the result of the computation the user
-asked for.
-
-   This action is unusual because it does not assign a value to `$$'.
-As a consequence, the semantic value associated with the `line' is
-uninitialized (its value will be unpredictable).  This would be a bug if
-that value were ever used, but we don't use it: once rpcalc has printed
-the value of the user's input line, that value is no longer needed.
-
-\1f
-File: bison.info,  Node: Rpcalc Expr,  Prev: Rpcalc Line,  Up: Rpcalc Rules
-
-2.1.2.3 Explanation of `expr'
-.............................
-
-The `exp' grouping has several rules, one for each kind of expression.
-The first rule handles the simplest expressions: those that are just
-numbers.  The second handles an addition-expression, which looks like
-two expressions followed by a plus-sign.  The third handles
-subtraction, and so on.
-
-     exp:
-       NUM
-     | exp exp '+'     { $$ = $1 + $2;    }
-     | exp exp '-'     { $$ = $1 - $2;    }
-     ...
-     ;
-
-   We have used `|' to join all the rules for `exp', but we could
-equally well have written them separately:
-
-     exp: NUM ;
-     exp: exp exp '+'     { $$ = $1 + $2; };
-     exp: exp exp '-'     { $$ = $1 - $2; };
-     ...
-
-   Most of the rules have actions that compute the value of the
-expression in terms of the value of its parts.  For example, in the
-rule for addition, `$1' refers to the first component `exp' and `$2'
-refers to the second one.  The third component, `'+'', has no meaningful
-associated semantic value, but if it had one you could refer to it as
-`$3'.  When `yyparse' recognizes a sum expression using this rule, the
-sum of the two subexpressions' values is produced as the value of the
-entire expression.  *Note Actions::.
-
-   You don't have to give an action for every rule.  When a rule has no
-action, Bison by default copies the value of `$1' into `$$'.  This is
-what happens in the first rule (the one that uses `NUM').
-
-   The formatting shown here is the recommended convention, but Bison
-does not require it.  You can add or change white space as much as you
-wish.  For example, this:
-
-     exp: NUM | exp exp '+' {$$ = $1 + $2; } | ... ;
-
-means the same thing as this:
-
-     exp:
-       NUM
-     | exp exp '+'    { $$ = $1 + $2; }
-     | ...
-     ;
-
-The latter, however, is much more readable.
-
-\1f
-File: bison.info,  Node: Rpcalc Lexer,  Next: Rpcalc Main,  Prev: Rpcalc Rules,  Up: RPN Calc
-
-2.1.3 The `rpcalc' Lexical Analyzer
------------------------------------
-
-The lexical analyzer's job is low-level parsing: converting characters
-or sequences of characters into tokens.  The Bison parser gets its
-tokens by calling the lexical analyzer.  *Note The Lexical Analyzer
-Function `yylex': Lexical.
-
-   Only a simple lexical analyzer is needed for the RPN calculator.
-This lexical analyzer skips blanks and tabs, then reads in numbers as
-`double' and returns them as `NUM' tokens.  Any other character that
-isn't part of a number is a separate token.  Note that the token-code
-for such a single-character token is the character itself.
-
-   The return value of the lexical analyzer function is a numeric code
-which represents a token type.  The same text used in Bison rules to
-stand for this token type is also a C expression for the numeric code
-for the type.  This works in two ways.  If the token type is a
-character literal, then its numeric code is that of the character; you
-can use the same character literal in the lexical analyzer to express
-the number.  If the token type is an identifier, that identifier is
-defined by Bison as a C macro whose definition is the appropriate
-number.  In this example, therefore, `NUM' becomes a macro for `yylex'
-to use.
-
-   The semantic value of the token (if it has one) is stored into the
-global variable `yylval', which is where the Bison parser will look for
-it.  (The C data type of `yylval' is `YYSTYPE', which was defined at
-the beginning of the grammar; *note Declarations for `rpcalc': Rpcalc
-Declarations.)
-
-   A token type code of zero is returned if the end-of-input is
-encountered.  (Bison recognizes any nonpositive value as indicating
-end-of-input.)
-
-   Here is the code for the lexical analyzer:
-
-     /* The lexical analyzer returns a double floating point
-        number on the stack and the token NUM, or the numeric code
-        of the character read if not a number.  It skips all blanks
-        and tabs, and returns 0 for end-of-input.  */
-
-     #include <ctype.h>
-
-     int
-     yylex (void)
-     {
-       int c;
-
-       /* Skip white space.  */
-       while ((c = getchar ()) == ' ' || c == '\t')
-         continue;
-       /* Process numbers.  */
-       if (c == '.' || isdigit (c))
-         {
-           ungetc (c, stdin);
-           scanf ("%lf", &yylval);
-           return NUM;
-         }
-       /* Return end-of-input.  */
-       if (c == EOF)
-         return 0;
-       /* Return a single char.  */
-       return c;
-     }
-
-\1f
-File: bison.info,  Node: Rpcalc Main,  Next: Rpcalc Error,  Prev: Rpcalc Lexer,  Up: RPN Calc
-
-2.1.4 The Controlling Function
-------------------------------
-
-In keeping with the spirit of this example, the controlling function is
-kept to the bare minimum.  The only requirement is that it call
-`yyparse' to start the process of parsing.
-
-     int
-     main (void)
-     {
-       return yyparse ();
-     }
-
-\1f
-File: bison.info,  Node: Rpcalc Error,  Next: Rpcalc Generate,  Prev: Rpcalc Main,  Up: RPN Calc
-
-2.1.5 The Error Reporting Routine
----------------------------------
-
-When `yyparse' detects a syntax error, it calls the error reporting
-function `yyerror' to print an error message (usually but not always
-`"syntax error"').  It is up to the programmer to supply `yyerror'
-(*note Parser C-Language Interface: Interface.), so here is the
-definition we will use:
-
-     #include <stdio.h>
-
-     /* Called by yyparse on error.  */
-     void
-     yyerror (char const *s)
-     {
-       fprintf (stderr, "%s\n", s);
-     }
-
-   After `yyerror' returns, the Bison parser may recover from the error
-and continue parsing if the grammar contains a suitable error rule
-(*note Error Recovery::).  Otherwise, `yyparse' returns nonzero.  We
-have not written any error rules in this example, so any invalid input
-will cause the calculator program to exit.  This is not clean behavior
-for a real calculator, but it is adequate for the first example.
-
-\1f
-File: bison.info,  Node: Rpcalc Generate,  Next: Rpcalc Compile,  Prev: Rpcalc Error,  Up: RPN Calc
-
-2.1.6 Running Bison to Make the Parser
---------------------------------------
-
-Before running Bison to produce a parser, we need to decide how to
-arrange all the source code in one or more source files.  For such a
-simple example, the easiest thing is to put everything in one file, the
-grammar file.  The definitions of `yylex', `yyerror' and `main' go at
-the end, in the epilogue of the grammar file (*note The Overall Layout
-of a Bison Grammar: Grammar Layout.).
-
-   For a large project, you would probably have several source files,
-and use `make' to arrange to recompile them.
-
-   With all the source in the grammar file, you use the following
-command to convert it into a parser implementation file:
-
-     bison FILE.y
-
-In this example, the grammar file is called `rpcalc.y' (for "Reverse
-Polish CALCulator").  Bison produces a parser implementation file named
-`FILE.tab.c', removing the `.y' from the grammar file name.  The parser
-implementation file contains the source code for `yyparse'.  The
-additional functions in the grammar file (`yylex', `yyerror' and
-`main') are copied verbatim to the parser implementation file.
-
-\1f
-File: bison.info,  Node: Rpcalc Compile,  Prev: Rpcalc Generate,  Up: RPN Calc
-
-2.1.7 Compiling the Parser Implementation File
-----------------------------------------------
-
-Here is how to compile and run the parser implementation file:
-
-     # List files in current directory.
-     $ ls
-     rpcalc.tab.c  rpcalc.y
-
-     # Compile the Bison parser.
-     # `-lm' tells compiler to search math library for `pow'.
-     $ cc -lm -o rpcalc rpcalc.tab.c
-
-     # List files again.
-     $ ls
-     rpcalc  rpcalc.tab.c  rpcalc.y
-
-   The file `rpcalc' now contains the executable code.  Here is an
-example session using `rpcalc'.
-
-     $ rpcalc
-     4 9 +
-     13
-     3 7 + 3 4 5 *+-
-     -13
-     3 7 + 3 4 5 * + - n              Note the unary minus, `n'
-     13
-     5 6 / 4 n +
-     -3.166666667
-     3 4 ^                            Exponentiation
-     81
-     ^D                               End-of-file indicator
-     $
-
-\1f
-File: bison.info,  Node: Infix Calc,  Next: Simple Error Recovery,  Prev: RPN Calc,  Up: Examples
-
-2.2 Infix Notation Calculator: `calc'
-=====================================
-
-We now modify rpcalc to handle infix operators instead of postfix.
-Infix notation involves the concept of operator precedence and the need
-for parentheses nested to arbitrary depth.  Here is the Bison code for
-`calc.y', an infix desk-top calculator.
-
-     /* Infix notation calculator.  */
-
-     %{
-       #define YYSTYPE double
-       #include <math.h>
-       #include <stdio.h>
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-
-     /* Bison declarations.  */
-     %token NUM
-     %left '-' '+'
-     %left '*' '/'
-     %left NEG     /* negation--unary minus */
-     %right '^'    /* exponentiation */
-
-     %% /* The grammar follows.  */
-     input:
-       /* empty */
-     | input line
-     ;
-
-     line:
-       '\n'
-     | exp '\n'  { printf ("\t%.10g\n", $1); }
-     ;
-
-     exp:
-       NUM                { $$ = $1;           }
-     | exp '+' exp        { $$ = $1 + $3;      }
-     | exp '-' exp        { $$ = $1 - $3;      }
-     | exp '*' exp        { $$ = $1 * $3;      }
-     | exp '/' exp        { $$ = $1 / $3;      }
-     | '-' exp  %prec NEG { $$ = -$2;          }
-     | exp '^' exp        { $$ = pow ($1, $3); }
-     | '(' exp ')'        { $$ = $2;           }
-     ;
-     %%
-
-The functions `yylex', `yyerror' and `main' can be the same as before.
-
-   There are two important new features shown in this code.
-
-   In the second section (Bison declarations), `%left' declares token
-types and says they are left-associative operators.  The declarations
-`%left' and `%right' (right associativity) take the place of `%token'
-which is used to declare a token type name without associativity.
-(These tokens are single-character literals, which ordinarily don't
-need to be declared.  We declare them here to specify the
-associativity.)
-
-   Operator precedence is determined by the line ordering of the
-declarations; the higher the line number of the declaration (lower on
-the page or screen), the higher the precedence.  Hence, exponentiation
-has the highest precedence, unary minus (`NEG') is next, followed by
-`*' and `/', and so on.  *Note Operator Precedence: Precedence.
-
-   The other important new feature is the `%prec' in the grammar
-section for the unary minus operator.  The `%prec' simply instructs
-Bison that the rule `| '-' exp' has the same precedence as `NEG'--in
-this case the next-to-highest.  *Note Context-Dependent Precedence:
-Contextual Precedence.
-
-   Here is a sample run of `calc.y':
-
-     $ calc
-     4 + 4.5 - (34/(8*3+-3))
-     6.880952381
-     -56 + 2
-     -54
-     3 ^ 2
-     9
-
-\1f
-File: bison.info,  Node: Simple Error Recovery,  Next: Location Tracking Calc,  Prev: Infix Calc,  Up: Examples
-
-2.3 Simple Error Recovery
-=========================
-
-Up to this point, this manual has not addressed the issue of "error
-recovery"--how to continue parsing after the parser detects a syntax
-error.  All we have handled is error reporting with `yyerror'.  Recall
-that by default `yyparse' returns after calling `yyerror'.  This means
-that an erroneous input line causes the calculator program to exit.
-Now we show how to rectify this deficiency.
-
-   The Bison language itself includes the reserved word `error', which
-may be included in the grammar rules.  In the example below it has been
-added to one of the alternatives for `line':
-
-     line:
-       '\n'
-     | exp '\n'   { printf ("\t%.10g\n", $1); }
-     | error '\n' { yyerrok;                  }
-     ;
-
-   This addition to the grammar allows for simple error recovery in the
-event of a syntax error.  If an expression that cannot be evaluated is
-read, the error will be recognized by the third rule for `line', and
-parsing will continue.  (The `yyerror' function is still called upon to
-print its message as well.)  The action executes the statement
-`yyerrok', a macro defined automatically by Bison; its meaning is that
-error recovery is complete (*note Error Recovery::).  Note the
-difference between `yyerrok' and `yyerror'; neither one is a misprint.
-
-   This form of error recovery deals with syntax errors.  There are
-other kinds of errors; for example, division by zero, which raises an
-exception signal that is normally fatal.  A real calculator program
-must handle this signal and use `longjmp' to return to `main' and
-resume parsing input lines; it would also have to discard the rest of
-the current line of input.  We won't discuss this issue further because
-it is not specific to Bison programs.
-
-\1f
-File: bison.info,  Node: Location Tracking Calc,  Next: Multi-function Calc,  Prev: Simple Error Recovery,  Up: Examples
-
-2.4 Location Tracking Calculator: `ltcalc'
-==========================================
-
-This example extends the infix notation calculator with location
-tracking.  This feature will be used to improve the error messages.  For
-the sake of clarity, this example is a simple integer calculator, since
-most of the work needed to use locations will be done in the lexical
-analyzer.
-
-* Menu:
-
-* Ltcalc Declarations::    Bison and C declarations for ltcalc.
-* Ltcalc Rules::           Grammar rules for ltcalc, with explanations.
-* Ltcalc Lexer::           The lexical analyzer.
-
-\1f
-File: bison.info,  Node: Ltcalc Declarations,  Next: Ltcalc Rules,  Up: Location Tracking Calc
-
-2.4.1 Declarations for `ltcalc'
--------------------------------
-
-The C and Bison declarations for the location tracking calculator are
-the same as the declarations for the infix notation calculator.
-
-     /* Location tracking calculator.  */
-
-     %{
-       #define YYSTYPE int
-       #include <math.h>
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-
-     /* Bison declarations.  */
-     %token NUM
-
-     %left '-' '+'
-     %left '*' '/'
-     %left NEG
-     %right '^'
-
-     %% /* The grammar follows.  */
-
-Note there are no declarations specific to locations.  Defining a data
-type for storing locations is not needed: we will use the type provided
-by default (*note Data Types of Locations: Location Type.), which is a
-four member structure with the following integer fields: `first_line',
-`first_column', `last_line' and `last_column'.  By conventions, and in
-accordance with the GNU Coding Standards and common practice, the line
-and column count both start at 1.
-
-\1f
-File: bison.info,  Node: Ltcalc Rules,  Next: Ltcalc Lexer,  Prev: Ltcalc Declarations,  Up: Location Tracking Calc
-
-2.4.2 Grammar Rules for `ltcalc'
---------------------------------
-
-Whether handling locations or not has no effect on the syntax of your
-language.  Therefore, grammar rules for this example will be very close
-to those of the previous example: we will only modify them to benefit
-from the new information.
-
-   Here, we will use locations to report divisions by zero, and locate
-the wrong expressions or subexpressions.
-
-     input:
-       /* empty */
-     | input line
-     ;
-
-     line:
-       '\n'
-     | exp '\n' { printf ("%d\n", $1); }
-     ;
-
-     exp:
-       NUM           { $$ = $1; }
-     | exp '+' exp   { $$ = $1 + $3; }
-     | exp '-' exp   { $$ = $1 - $3; }
-     | exp '*' exp   { $$ = $1 * $3; }
-     | exp '/' exp
-         {
-           if ($3)
-             $$ = $1 / $3;
-           else
-             {
-               $$ = 1;
-               fprintf (stderr, "%d.%d-%d.%d: division by zero",
-                        @3.first_line, @3.first_column,
-                        @3.last_line, @3.last_column);
-             }
-         }
-     | '-' exp %prec NEG     { $$ = -$2; }
-     | exp '^' exp           { $$ = pow ($1, $3); }
-     | '(' exp ')'           { $$ = $2; }
-
-   This code shows how to reach locations inside of semantic actions, by
-using the pseudo-variables `@N' for rule components, and the
-pseudo-variable `@$' for groupings.
-
-   We don't need to assign a value to `@$': the output parser does it
-automatically.  By default, before executing the C code of each action,
-`@$' is set to range from the beginning of `@1' to the end of `@N', for
-a rule with N components.  This behavior can be redefined (*note
-Default Action for Locations: Location Default Action.), and for very
-specific rules, `@$' can be computed by hand.
-
-\1f
-File: bison.info,  Node: Ltcalc Lexer,  Prev: Ltcalc Rules,  Up: Location Tracking Calc
-
-2.4.3 The `ltcalc' Lexical Analyzer.
-------------------------------------
-
-Until now, we relied on Bison's defaults to enable location tracking.
-The next step is to rewrite the lexical analyzer, and make it able to
-feed the parser with the token locations, as it already does for
-semantic values.
-
-   To this end, we must take into account every single character of the
-input text, to avoid the computed locations of being fuzzy or wrong:
-
-     int
-     yylex (void)
-     {
-       int c;
-
-       /* Skip white space.  */
-       while ((c = getchar ()) == ' ' || c == '\t')
-         ++yylloc.last_column;
-
-       /* Step.  */
-       yylloc.first_line = yylloc.last_line;
-       yylloc.first_column = yylloc.last_column;
-
-       /* Process numbers.  */
-       if (isdigit (c))
-         {
-           yylval = c - '0';
-           ++yylloc.last_column;
-           while (isdigit (c = getchar ()))
-             {
-               ++yylloc.last_column;
-               yylval = yylval * 10 + c - '0';
-             }
-           ungetc (c, stdin);
-           return NUM;
-         }
-
-       /* Return end-of-input.  */
-       if (c == EOF)
-         return 0;
-
-       /* Return a single char, and update location.  */
-       if (c == '\n')
-         {
-           ++yylloc.last_line;
-           yylloc.last_column = 0;
-         }
-       else
-         ++yylloc.last_column;
-       return c;
-     }
-
-   Basically, the lexical analyzer performs the same processing as
-before: it skips blanks and tabs, and reads numbers or single-character
-tokens.  In addition, it updates `yylloc', the global variable (of type
-`YYLTYPE') containing the token's location.
-
-   Now, each time this function returns a token, the parser has its
-number as well as its semantic value, and its location in the text.
-The last needed change is to initialize `yylloc', for example in the
-controlling function:
-
-     int
-     main (void)
-     {
-       yylloc.first_line = yylloc.last_line = 1;
-       yylloc.first_column = yylloc.last_column = 0;
-       return yyparse ();
-     }
-
-   Remember that computing locations is not a matter of syntax.  Every
-character must be associated to a location update, whether it is in
-valid input, in comments, in literal strings, and so on.
-
-\1f
-File: bison.info,  Node: Multi-function Calc,  Next: Exercises,  Prev: Location Tracking Calc,  Up: Examples
-
-2.5 Multi-Function Calculator: `mfcalc'
-=======================================
-
-Now that the basics of Bison have been discussed, it is time to move on
-to a more advanced problem.  The above calculators provided only five
-functions, `+', `-', `*', `/' and `^'.  It would be nice to have a
-calculator that provides other mathematical functions such as `sin',
-`cos', etc.
-
-   It is easy to add new operators to the infix calculator as long as
-they are only single-character literals.  The lexical analyzer `yylex'
-passes back all nonnumeric characters as tokens, so new grammar rules
-suffice for adding a new operator.  But we want something more
-flexible: built-in functions whose syntax has this form:
-
-     FUNCTION_NAME (ARGUMENT)
-
-At the same time, we will add memory to the calculator, by allowing you
-to create named variables, store values in them, and use them later.
-Here is a sample session with the multi-function calculator:
-
-     $ mfcalc
-     pi = 3.141592653589
-     3.1415926536
-     sin(pi)
-     0.0000000000
-     alpha = beta1 = 2.3
-     2.3000000000
-     alpha
-     2.3000000000
-     ln(alpha)
-     0.8329091229
-     exp(ln(beta1))
-     2.3000000000
-     $
-
-   Note that multiple assignment and nested function calls are
-permitted.
-
-* Menu:
-
-* Mfcalc Declarations::    Bison declarations for multi-function calculator.
-* Mfcalc Rules::           Grammar rules for the calculator.
-* Mfcalc Symbol Table::    Symbol table management subroutines.
-
-\1f
-File: bison.info,  Node: Mfcalc Declarations,  Next: Mfcalc Rules,  Up: Multi-function Calc
-
-2.5.1 Declarations for `mfcalc'
--------------------------------
-
-Here are the C and Bison declarations for the multi-function calculator.
-
-     %{
-       #include <math.h>  /* For math functions, cos(), sin(), etc.  */
-       #include "calc.h"  /* Contains definition of `symrec'.  */
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-
-     %union {
-       double    val;   /* For returning numbers.  */
-       symrec  *tptr;   /* For returning symbol-table pointers.  */
-     }
-     %token <val>  NUM        /* Simple double precision number.  */
-     %token <tptr> VAR FNCT   /* Variable and function.  */
-     %type  <val>  exp
-
-     %right '='
-     %left '-' '+'
-     %left '*' '/'
-     %left NEG     /* negation--unary minus */
-     %right '^'    /* exponentiation */
-
-   The above grammar introduces only two new features of the Bison
-language.  These features allow semantic values to have various data
-types (*note More Than One Value Type: Multiple Types.).
-
-   The `%union' declaration specifies the entire list of possible types;
-this is instead of defining `YYSTYPE'.  The allowable types are now
-double-floats (for `exp' and `NUM') and pointers to entries in the
-symbol table.  *Note The Collection of Value Types: Union Decl.
-
-   Since values can now have various types, it is necessary to
-associate a type with each grammar symbol whose semantic value is used.
-These symbols are `NUM', `VAR', `FNCT', and `exp'.  Their declarations
-are augmented with information about their data type (placed between
-angle brackets).
-
-   The Bison construct `%type' is used for declaring nonterminal
-symbols, just as `%token' is used for declaring token types.  We have
-not used `%type' before because nonterminal symbols are normally
-declared implicitly by the rules that define them.  But `exp' must be
-declared explicitly so we can specify its value type.  *Note
-Nonterminal Symbols: Type Decl.
-
-\1f
-File: bison.info,  Node: Mfcalc Rules,  Next: Mfcalc Symbol Table,  Prev: Mfcalc Declarations,  Up: Multi-function Calc
-
-2.5.2 Grammar Rules for `mfcalc'
---------------------------------
-
-Here are the grammar rules for the multi-function calculator.  Most of
-them are copied directly from `calc'; three rules, those which mention
-`VAR' or `FNCT', are new.
-
-     %% /* The grammar follows.  */
-     input:
-       /* empty */
-     | input line
-     ;
-
-     line:
-       '\n'
-     | exp '\n'   { printf ("%.10g\n", $1); }
-     | error '\n' { yyerrok;                }
-     ;
-
-     exp:
-       NUM                { $$ = $1;                         }
-     | VAR                { $$ = $1->value.var;              }
-     | VAR '=' exp        { $$ = $3; $1->value.var = $3;     }
-     | FNCT '(' exp ')'   { $$ = (*($1->value.fnctptr))($3); }
-     | exp '+' exp        { $$ = $1 + $3;                    }
-     | exp '-' exp        { $$ = $1 - $3;                    }
-     | exp '*' exp        { $$ = $1 * $3;                    }
-     | exp '/' exp        { $$ = $1 / $3;                    }
-     | '-' exp  %prec NEG { $$ = -$2;                        }
-     | exp '^' exp        { $$ = pow ($1, $3);               }
-     | '(' exp ')'        { $$ = $2;                         }
-     ;
-     /* End of grammar.  */
-     %%
-
-\1f
-File: bison.info,  Node: Mfcalc Symbol Table,  Prev: Mfcalc Rules,  Up: Multi-function Calc
-
-2.5.3 The `mfcalc' Symbol Table
--------------------------------
-
-The multi-function calculator requires a symbol table to keep track of
-the names and meanings of variables and functions.  This doesn't affect
-the grammar rules (except for the actions) or the Bison declarations,
-but it requires some additional C functions for support.
-
-   The symbol table itself consists of a linked list of records.  Its
-definition, which is kept in the header `calc.h', is as follows.  It
-provides for either functions or variables to be placed in the table.
-
-     /* Function type.  */
-     typedef double (*func_t) (double);
-
-     /* Data type for links in the chain of symbols.  */
-     struct symrec
-     {
-       char *name;  /* name of symbol */
-       int type;    /* type of symbol: either VAR or FNCT */
-       union
-       {
-         double var;      /* value of a VAR */
-         func_t fnctptr;  /* value of a FNCT */
-       } value;
-       struct symrec *next;  /* link field */
-     };
-
-     typedef struct symrec symrec;
-
-     /* The symbol table: a chain of `struct symrec'.  */
-     extern symrec *sym_table;
-
-     symrec *putsym (char const *, int);
-     symrec *getsym (char const *);
-
-   The new version of `main' includes a call to `init_table', a
-function that initializes the symbol table.  Here it is, and
-`init_table' as well:
-
-     #include <stdio.h>
-
-     /* Called by yyparse on error.  */
-     void
-     yyerror (char const *s)
-     {
-       printf ("%s\n", s);
-     }
-
-     struct init
-     {
-       char const *fname;
-       double (*fnct) (double);
-     };
-
-     struct init const arith_fncts[] =
-     {
-       "sin",  sin,
-       "cos",  cos,
-       "atan", atan,
-       "ln",   log,
-       "exp",  exp,
-       "sqrt", sqrt,
-       0, 0
-     };
-
-     /* The symbol table: a chain of `struct symrec'.  */
-     symrec *sym_table;
-
-     /* Put arithmetic functions in table.  */
-     void
-     init_table (void)
-     {
-       int i;
-       for (i = 0; arith_fncts[i].fname != 0; i++)
-         {
-           symrec *ptr = putsym (arith_fncts[i].fname, FNCT);
-           ptr->value.fnctptr = arith_fncts[i].fnct;
-         }
-     }
-
-     int
-     main (void)
-     {
-       init_table ();
-       return yyparse ();
-     }
-
-   By simply editing the initialization list and adding the necessary
-include files, you can add additional functions to the calculator.
-
-   Two important functions allow look-up and installation of symbols in
-the symbol table.  The function `putsym' is passed a name and the type
-(`VAR' or `FNCT') of the object to be installed.  The object is linked
-to the front of the list, and a pointer to the object is returned.  The
-function `getsym' is passed the name of the symbol to look up.  If
-found, a pointer to that symbol is returned; otherwise zero is returned.
-
-     #include <stdlib.h> /* malloc. */
-     #include <string.h> /* strlen. */
-
-     symrec *
-     putsym (char const *sym_name, int sym_type)
-     {
-       symrec *ptr = (symrec *) malloc (sizeof (symrec));
-       ptr->name = (char *) malloc (strlen (sym_name) + 1);
-       strcpy (ptr->name,sym_name);
-       ptr->type = sym_type;
-       ptr->value.var = 0; /* Set value to 0 even if fctn.  */
-       ptr->next = (struct symrec *)sym_table;
-       sym_table = ptr;
-       return ptr;
-     }
-
-     symrec *
-     getsym (char const *sym_name)
-     {
-       symrec *ptr;
-       for (ptr = sym_table; ptr != (symrec *) 0;
-            ptr = (symrec *)ptr->next)
-         if (strcmp (ptr->name,sym_name) == 0)
-           return ptr;
-       return 0;
-     }
-
-   The function `yylex' must now recognize variables, numeric values,
-and the single-character arithmetic operators.  Strings of alphanumeric
-characters with a leading letter are recognized as either variables or
-functions depending on what the symbol table says about them.
-
-   The string is passed to `getsym' for look up in the symbol table.  If
-the name appears in the table, a pointer to its location and its type
-(`VAR' or `FNCT') is returned to `yyparse'.  If it is not already in
-the table, then it is installed as a `VAR' using `putsym'.  Again, a
-pointer and its type (which must be `VAR') is returned to `yyparse'.
-
-   No change is needed in the handling of numeric values and arithmetic
-operators in `yylex'.
-
-     #include <ctype.h>
-
-     int
-     yylex (void)
-     {
-       int c;
-
-       /* Ignore white space, get first nonwhite character.  */
-       while ((c = getchar ()) == ' ' || c == '\t')
-         continue;
-
-       if (c == EOF)
-         return 0;
-
-       /* Char starts a number => parse the number.         */
-       if (c == '.' || isdigit (c))
-         {
-           ungetc (c, stdin);
-           scanf ("%lf", &yylval.val);
-           return NUM;
-         }
-
-       /* Char starts an identifier => read the name.       */
-       if (isalpha (c))
-         {
-           /* Initially make the buffer long enough
-              for a 40-character symbol name.  */
-           static size_t length = 40;
-           static char *symbuf = 0;
-           symrec *s;
-           int i;
-
-           if (!symbuf)
-             symbuf = (char *) malloc (length + 1);
-
-           i = 0;
-           do
-             {
-               /* If buffer is full, make it bigger.        */
-               if (i == length)
-                 {
-                   length *= 2;
-                   symbuf = (char *) realloc (symbuf, length + 1);
-                 }
-               /* Add this character to the buffer.         */
-               symbuf[i++] = c;
-               /* Get another character.                    */
-               c = getchar ();
-             }
-           while (isalnum (c));
-
-           ungetc (c, stdin);
-           symbuf[i] = '\0';
-
-           s = getsym (symbuf);
-           if (s == 0)
-             s = putsym (symbuf, VAR);
-           yylval.tptr = s;
-           return s->type;
-         }
-
-       /* Any other character is a token by itself.        */
-       return c;
-     }
-
-   The error reporting function is unchanged, and the new version of
-`main' includes a call to `init_table' and sets the `yydebug' on user
-demand (*Note Tracing Your Parser: Tracing, for details):
-
-     /* Called by yyparse on error.  */
-     void
-     yyerror (char const *s)
-     {
-       fprintf (stderr, "%s\n", s);
-     }
-
-     int
-     main (int argc, char const* argv[])
-     {
-       int i;
-       /* Enable parse traces on option -p.  */
-       for (i = 1; i < argc; ++i)
-         if (!strcmp(argv[i], "-p"))
-           yydebug = 1;
-       init_table ();
-       return yyparse ();
-     }
-
-   This program is both powerful and flexible.  You may easily add new
-functions, and it is a simple job to modify this code to install
-predefined variables such as `pi' or `e' as well.
-
-\1f
-File: bison.info,  Node: Exercises,  Prev: Multi-function Calc,  Up: Examples
-
-2.6 Exercises
-=============
-
-  1. Add some new functions from `math.h' to the initialization list.
-
-  2. Add another array that contains constants and their values.  Then
-     modify `init_table' to add these constants to the symbol table.
-     It will be easiest to give the constants type `VAR'.
-
-  3. Make the program report an error if the user refers to an
-     uninitialized variable in any way except to store a value in it.
-
-\1f
-File: bison.info,  Node: Grammar File,  Next: Interface,  Prev: Examples,  Up: Top
-
-3 Bison Grammar Files
-*********************
-
-Bison takes as input a context-free grammar specification and produces a
-C-language function that recognizes correct instances of the grammar.
-
-   The Bison grammar file conventionally has a name ending in `.y'.
-*Note Invoking Bison: Invocation.
-
-* Menu:
-
-* Grammar Outline::    Overall layout of the grammar file.
-* Symbols::            Terminal and nonterminal symbols.
-* Rules::              How to write grammar rules.
-* Recursion::          Writing recursive rules.
-* Semantics::          Semantic values and actions.
-* Tracking Locations:: Locations and actions.
-* Named References::   Using named references in actions.
-* Declarations::       All kinds of Bison declarations are described here.
-* Multiple Parsers::   Putting more than one Bison parser in one program.
-
-\1f
-File: bison.info,  Node: Grammar Outline,  Next: Symbols,  Up: Grammar File
-
-3.1 Outline of a Bison Grammar
-==============================
-
-A Bison grammar file has four main sections, shown here with the
-appropriate delimiters:
-
-     %{
-       PROLOGUE
-     %}
-
-     BISON DECLARATIONS
-
-     %%
-     GRAMMAR RULES
-     %%
-
-     EPILOGUE
-
-   Comments enclosed in `/* ... */' may appear in any of the sections.
-As a GNU extension, `//' introduces a comment that continues until end
-of line.
-
-* Menu:
-
-* Prologue::              Syntax and usage of the prologue.
-* Prologue Alternatives:: Syntax and usage of alternatives to the prologue.
-* Bison Declarations::    Syntax and usage of the Bison declarations section.
-* Grammar Rules::         Syntax and usage of the grammar rules section.
-* Epilogue::              Syntax and usage of the epilogue.
-
-\1f
-File: bison.info,  Node: Prologue,  Next: Prologue Alternatives,  Up: Grammar Outline
-
-3.1.1 The prologue
-------------------
-
-The PROLOGUE section contains macro definitions and declarations of
-functions and variables that are used in the actions in the grammar
-rules.  These are copied to the beginning of the parser implementation
-file so that they precede the definition of `yyparse'.  You can use
-`#include' to get the declarations from a header file.  If you don't
-need any C declarations, you may omit the `%{' and `%}' delimiters that
-bracket this section.
-
-   The PROLOGUE section is terminated by the first occurrence of `%}'
-that is outside a comment, a string literal, or a character constant.
-
-   You may have more than one PROLOGUE section, intermixed with the
-BISON DECLARATIONS.  This allows you to have C and Bison declarations
-that refer to each other.  For example, the `%union' declaration may
-use types defined in a header file, and you may wish to prototype
-functions that take arguments of type `YYSTYPE'.  This can be done with
-two PROLOGUE blocks, one before and one after the `%union' declaration.
-
-     %{
-       #define _GNU_SOURCE
-       #include <stdio.h>
-       #include "ptypes.h"
-     %}
-
-     %union {
-       long int n;
-       tree t;  /* `tree' is defined in `ptypes.h'. */
-     }
-
-     %{
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(F, N, L) print_token_value (F, N, L)
-     %}
-
-     ...
-
-   When in doubt, it is usually safer to put prologue code before all
-Bison declarations, rather than after.  For example, any definitions of
-feature test macros like `_GNU_SOURCE' or `_POSIX_C_SOURCE' should
-appear before all Bison declarations, as feature test macros can affect
-the behavior of Bison-generated `#include' directives.
-
-\1f
-File: bison.info,  Node: Prologue Alternatives,  Next: Bison Declarations,  Prev: Prologue,  Up: Grammar Outline
-
-3.1.2 Prologue Alternatives
----------------------------
-
-The functionality of PROLOGUE sections can often be subtle and
-inflexible.  As an alternative, Bison provides a `%code' directive with
-an explicit qualifier field, which identifies the purpose of the code
-and thus the location(s) where Bison should generate it.  For C/C++,
-the qualifier can be omitted for the default location, or it can be one
-of `requires', `provides', `top'.  *Note %code Summary::.
-
-   Look again at the example of the previous section:
-
-     %{
-       #define _GNU_SOURCE
-       #include <stdio.h>
-       #include "ptypes.h"
-     %}
-
-     %union {
-       long int n;
-       tree t;  /* `tree' is defined in `ptypes.h'. */
-     }
-
-     %{
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(F, N, L) print_token_value (F, N, L)
-     %}
-
-     ...
-
-Notice that there are two PROLOGUE sections here, but there's a subtle
-distinction between their functionality.  For example, if you decide to
-override Bison's default definition for `YYLTYPE', in which PROLOGUE
-section should you write your new definition?  You should write it in
-the first since Bison will insert that code into the parser
-implementation file _before_ the default `YYLTYPE' definition.  In
-which PROLOGUE section should you prototype an internal function,
-`trace_token', that accepts `YYLTYPE' and `yytokentype' as arguments?
-You should prototype it in the second since Bison will insert that code
-_after_ the `YYLTYPE' and `yytokentype' definitions.
-
-   This distinction in functionality between the two PROLOGUE sections
-is established by the appearance of the `%union' between them.  This
-behavior raises a few questions.  First, why should the position of a
-`%union' affect definitions related to `YYLTYPE' and `yytokentype'?
-Second, what if there is no `%union'?  In that case, the second kind of
-PROLOGUE section is not available.  This behavior is not intuitive.
-
-   To avoid this subtle `%union' dependency, rewrite the example using a
-`%code top' and an unqualified `%code'.  Let's go ahead and add the new
-`YYLTYPE' definition and the `trace_token' prototype at the same time:
-
-     %code top {
-       #define _GNU_SOURCE
-       #include <stdio.h>
-
-       /* WARNING: The following code really belongs
-        * in a `%code requires'; see below.  */
-
-       #include "ptypes.h"
-       #define YYLTYPE YYLTYPE
-       typedef struct YYLTYPE
-       {
-         int first_line;
-         int first_column;
-         int last_line;
-         int last_column;
-         char *filename;
-       } YYLTYPE;
-     }
-
-     %union {
-       long int n;
-       tree t;  /* `tree' is defined in `ptypes.h'. */
-     }
-
-     %code {
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(F, N, L) print_token_value (F, N, L)
-       static void trace_token (enum yytokentype token, YYLTYPE loc);
-     }
-
-     ...
-
-In this way, `%code top' and the unqualified `%code' achieve the same
-functionality as the two kinds of PROLOGUE sections, but it's always
-explicit which kind you intend.  Moreover, both kinds are always
-available even in the absence of `%union'.
-
-   The `%code top' block above logically contains two parts.  The first
-two lines before the warning need to appear near the top of the parser
-implementation file.  The first line after the warning is required by
-`YYSTYPE' and thus also needs to appear in the parser implementation
-file.  However, if you've instructed Bison to generate a parser header
-file (*note %defines: Decl Summary.), you probably want that line to
-appear before the `YYSTYPE' definition in that header file as well.
-The `YYLTYPE' definition should also appear in the parser header file
-to override the default `YYLTYPE' definition there.
-
-   In other words, in the `%code top' block above, all but the first two
-lines are dependency code required by the `YYSTYPE' and `YYLTYPE'
-definitions.  Thus, they belong in one or more `%code requires':
-
-     %code top {
-       #define _GNU_SOURCE
-       #include <stdio.h>
-     }
-
-     %code requires {
-       #include "ptypes.h"
-     }
-     %union {
-       long int n;
-       tree t;  /* `tree' is defined in `ptypes.h'. */
-     }
-
-     %code requires {
-       #define YYLTYPE YYLTYPE
-       typedef struct YYLTYPE
-       {
-         int first_line;
-         int first_column;
-         int last_line;
-         int last_column;
-         char *filename;
-       } YYLTYPE;
-     }
-
-     %code {
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(F, N, L) print_token_value (F, N, L)
-       static void trace_token (enum yytokentype token, YYLTYPE loc);
-     }
-
-     ...
-
-Now Bison will insert `#include "ptypes.h"' and the new `YYLTYPE'
-definition before the Bison-generated `YYSTYPE' and `YYLTYPE'
-definitions in both the parser implementation file and the parser
-header file.  (By the same reasoning, `%code requires' would also be
-the appropriate place to write your own definition for `YYSTYPE'.)
-
-   When you are writing dependency code for `YYSTYPE' and `YYLTYPE',
-you should prefer `%code requires' over `%code top' regardless of
-whether you instruct Bison to generate a parser header file.  When you
-are writing code that you need Bison to insert only into the parser
-implementation file and that has no special need to appear at the top
-of that file, you should prefer the unqualified `%code' over `%code
-top'.  These practices will make the purpose of each block of your code
-explicit to Bison and to other developers reading your grammar file.
-Following these practices, we expect the unqualified `%code' and `%code
-requires' to be the most important of the four PROLOGUE alternatives.
-
-   At some point while developing your parser, you might decide to
-provide `trace_token' to modules that are external to your parser.
-Thus, you might wish for Bison to insert the prototype into both the
-parser header file and the parser implementation file.  Since this
-function is not a dependency required by `YYSTYPE' or `YYLTYPE', it
-doesn't make sense to move its prototype to a `%code requires'.  More
-importantly, since it depends upon `YYLTYPE' and `yytokentype', `%code
-requires' is not sufficient.  Instead, move its prototype from the
-unqualified `%code' to a `%code provides':
-
-     %code top {
-       #define _GNU_SOURCE
-       #include <stdio.h>
-     }
-
-     %code requires {
-       #include "ptypes.h"
-     }
-     %union {
-       long int n;
-       tree t;  /* `tree' is defined in `ptypes.h'. */
-     }
-
-     %code requires {
-       #define YYLTYPE YYLTYPE
-       typedef struct YYLTYPE
-       {
-         int first_line;
-         int first_column;
-         int last_line;
-         int last_column;
-         char *filename;
-       } YYLTYPE;
-     }
-
-     %code provides {
-       void trace_token (enum yytokentype token, YYLTYPE loc);
-     }
-
-     %code {
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(F, N, L) print_token_value (F, N, L)
-     }
-
-     ...
-
-Bison will insert the `trace_token' prototype into both the parser
-header file and the parser implementation file after the definitions
-for `yytokentype', `YYLTYPE', and `YYSTYPE'.
-
-   The above examples are careful to write directives in an order that
-reflects the layout of the generated parser implementation and header
-files: `%code top', `%code requires', `%code provides', and then
-`%code'.  While your grammar files may generally be easier to read if
-you also follow this order, Bison does not require it.  Instead, Bison
-lets you choose an organization that makes sense to you.
-
-   You may declare any of these directives multiple times in the
-grammar file.  In that case, Bison concatenates the contained code in
-declaration order.  This is the only way in which the position of one
-of these directives within the grammar file affects its functionality.
-
-   The result of the previous two properties is greater flexibility in
-how you may organize your grammar file.  For example, you may organize
-semantic-type-related directives by semantic type:
-
-     %code requires { #include "type1.h" }
-     %union { type1 field1; }
-     %destructor { type1_free ($$); } <field1>
-     %printer { type1_print (yyoutput, $$); } <field1>
-
-     %code requires { #include "type2.h" }
-     %union { type2 field2; }
-     %destructor { type2_free ($$); } <field2>
-     %printer { type2_print (yyoutput, $$); } <field2>
-
-You could even place each of the above directive groups in the rules
-section of the grammar file next to the set of rules that uses the
-associated semantic type.  (In the rules section, you must terminate
-each of those directives with a semicolon.)  And you don't have to
-worry that some directive (like a `%union') in the definitions section
-is going to adversely affect their functionality in some
-counter-intuitive manner just because it comes first.  Such an
-organization is not possible using PROLOGUE sections.
-
-   This section has been concerned with explaining the advantages of
-the four PROLOGUE alternatives over the original Yacc PROLOGUE.
-However, in most cases when using these directives, you shouldn't need
-to think about all the low-level ordering issues discussed here.
-Instead, you should simply use these directives to label each block of
-your code according to its purpose and let Bison handle the ordering.
-`%code' is the most generic label.  Move code to `%code requires',
-`%code provides', or `%code top' as needed.
-
-\1f
-File: bison.info,  Node: Bison Declarations,  Next: Grammar Rules,  Prev: Prologue Alternatives,  Up: Grammar Outline
-
-3.1.3 The Bison Declarations Section
-------------------------------------
-
-The BISON DECLARATIONS section contains declarations that define
-terminal and nonterminal symbols, specify precedence, and so on.  In
-some simple grammars you may not need any declarations.  *Note Bison
-Declarations: Declarations.
-
-\1f
-File: bison.info,  Node: Grammar Rules,  Next: Epilogue,  Prev: Bison Declarations,  Up: Grammar Outline
-
-3.1.4 The Grammar Rules Section
--------------------------------
-
-The "grammar rules" section contains one or more Bison grammar rules,
-and nothing else.  *Note Syntax of Grammar Rules: Rules.
-
-   There must always be at least one grammar rule, and the first `%%'
-(which precedes the grammar rules) may never be omitted even if it is
-the first thing in the file.
-
-\1f
-File: bison.info,  Node: Epilogue,  Prev: Grammar Rules,  Up: Grammar Outline
-
-3.1.5 The epilogue
-------------------
-
-The EPILOGUE is copied verbatim to the end of the parser implementation
-file, just as the PROLOGUE is copied to the beginning.  This is the
-most convenient place to put anything that you want to have in the
-parser implementation file but which need not come before the
-definition of `yyparse'.  For example, the definitions of `yylex' and
-`yyerror' often go here.  Because C requires functions to be declared
-before being used, you often need to declare functions like `yylex' and
-`yyerror' in the Prologue, even if you define them in the Epilogue.
-*Note Parser C-Language Interface: Interface.
-
-   If the last section is empty, you may omit the `%%' that separates it
-from the grammar rules.
-
-   The Bison parser itself contains many macros and identifiers whose
-names start with `yy' or `YY', so it is a good idea to avoid using any
-such names (except those documented in this manual) in the epilogue of
-the grammar file.
-
-\1f
-File: bison.info,  Node: Symbols,  Next: Rules,  Prev: Grammar Outline,  Up: Grammar File
-
-3.2 Symbols, Terminal and Nonterminal
-=====================================
-
-"Symbols" in Bison grammars represent the grammatical classifications
-of the language.
-
-   A "terminal symbol" (also known as a "token type") represents a
-class of syntactically equivalent tokens.  You use the symbol in grammar
-rules to mean that a token in that class is allowed.  The symbol is
-represented in the Bison parser by a numeric code, and the `yylex'
-function returns a token type code to indicate what kind of token has
-been read.  You don't need to know what the code value is; you can use
-the symbol to stand for it.
-
-   A "nonterminal symbol" stands for a class of syntactically
-equivalent groupings.  The symbol name is used in writing grammar rules.
-By convention, it should be all lower case.
-
-   Symbol names can contain letters, underscores, periods, and
-non-initial digits and dashes.  Dashes in symbol names are a GNU
-extension, incompatible with POSIX Yacc.  Periods and dashes make
-symbol names less convenient to use with named references, which
-require brackets around such names (*note Named References::).
-Terminal symbols that contain periods or dashes make little sense:
-since they are not valid symbols (in most programming languages) they
-are not exported as token names.
-
-   There are three ways of writing terminal symbols in the grammar:
-
-   * A "named token type" is written with an identifier, like an
-     identifier in C.  By convention, it should be all upper case.  Each
-     such name must be defined with a Bison declaration such as
-     `%token'.  *Note Token Type Names: Token Decl.
-
-   * A "character token type" (or "literal character token") is written
-     in the grammar using the same syntax used in C for character
-     constants; for example, `'+'' is a character token type.  A
-     character token type doesn't need to be declared unless you need to
-     specify its semantic value data type (*note Data Types of Semantic
-     Values: Value Type.), associativity, or precedence (*note Operator
-     Precedence: Precedence.).
-
-     By convention, a character token type is used only to represent a
-     token that consists of that particular character.  Thus, the token
-     type `'+'' is used to represent the character `+' as a token.
-     Nothing enforces this convention, but if you depart from it, your
-     program will confuse other readers.
-
-     All the usual escape sequences used in character literals in C can
-     be used in Bison as well, but you must not use the null character
-     as a character literal because its numeric code, zero, signifies
-     end-of-input (*note Calling Convention for `yylex': Calling
-     Convention.).  Also, unlike standard C, trigraphs have no special
-     meaning in Bison character literals, nor is backslash-newline
-     allowed.
-
-   * A "literal string token" is written like a C string constant; for
-     example, `"<="' is a literal string token.  A literal string token
-     doesn't need to be declared unless you need to specify its semantic
-     value data type (*note Value Type::), associativity, or precedence
-     (*note Precedence::).
-
-     You can associate the literal string token with a symbolic name as
-     an alias, using the `%token' declaration (*note Token
-     Declarations: Token Decl.).  If you don't do that, the lexical
-     analyzer has to retrieve the token number for the literal string
-     token from the `yytname' table (*note Calling Convention::).
-
-     *Warning*: literal string tokens do not work in Yacc.
-
-     By convention, a literal string token is used only to represent a
-     token that consists of that particular string.  Thus, you should
-     use the token type `"<="' to represent the string `<=' as a token.
-     Bison does not enforce this convention, but if you depart from it,
-     people who read your program will be confused.
-
-     All the escape sequences used in string literals in C can be used
-     in Bison as well, except that you must not use a null character
-     within a string literal.  Also, unlike Standard C, trigraphs have
-     no special meaning in Bison string literals, nor is
-     backslash-newline allowed.  A literal string token must contain
-     two or more characters; for a token containing just one character,
-     use a character token (see above).
-
-   How you choose to write a terminal symbol has no effect on its
-grammatical meaning.  That depends only on where it appears in rules and
-on when the parser function returns that symbol.
-
-   The value returned by `yylex' is always one of the terminal symbols,
-except that a zero or negative value signifies end-of-input.  Whichever
-way you write the token type in the grammar rules, you write it the
-same way in the definition of `yylex'.  The numeric code for a
-character token type is simply the positive numeric code of the
-character, so `yylex' can use the identical value to generate the
-requisite code, though you may need to convert it to `unsigned char' to
-avoid sign-extension on hosts where `char' is signed.  Each named token
-type becomes a C macro in the parser implementation file, so `yylex'
-can use the name to stand for the code.  (This is why periods don't
-make sense in terminal symbols.)  *Note Calling Convention for `yylex':
-Calling Convention.
-
-   If `yylex' is defined in a separate file, you need to arrange for the
-token-type macro definitions to be available there.  Use the `-d'
-option when you run Bison, so that it will write these macro definitions
-into a separate header file `NAME.tab.h' which you can include in the
-other source files that need it.  *Note Invoking Bison: Invocation.
-
-   If you want to write a grammar that is portable to any Standard C
-host, you must use only nonnull character tokens taken from the basic
-execution character set of Standard C.  This set consists of the ten
-digits, the 52 lower- and upper-case English letters, and the
-characters in the following C-language string:
-
-     "\a\b\t\n\v\f\r !\"#%&'()*+,-./:;<=>?[\\]^_{|}~"
-
-   The `yylex' function and Bison must use a consistent character set
-and encoding for character tokens.  For example, if you run Bison in an
-ASCII environment, but then compile and run the resulting program in an
-environment that uses an incompatible character set like EBCDIC, the
-resulting program may not work because the tables generated by Bison
-will assume ASCII numeric values for character tokens.  It is standard
-practice for software distributions to contain C source files that were
-generated by Bison in an ASCII environment, so installers on platforms
-that are incompatible with ASCII must rebuild those files before
-compiling them.
-
-   The symbol `error' is a terminal symbol reserved for error recovery
-(*note Error Recovery::); you shouldn't use it for any other purpose.
-In particular, `yylex' should never return this value.  The default
-value of the error token is 256, unless you explicitly assigned 256 to
-one of your tokens with a `%token' declaration.
-
-\1f
-File: bison.info,  Node: Rules,  Next: Recursion,  Prev: Symbols,  Up: Grammar File
-
-3.3 Syntax of Grammar Rules
-===========================
-
-A Bison grammar rule has the following general form:
-
-     RESULT: COMPONENTS...;
-
-where RESULT is the nonterminal symbol that this rule describes, and
-COMPONENTS are various terminal and nonterminal symbols that are put
-together by this rule (*note Symbols::).
-
-   For example,
-
-     exp: exp '+' exp;
-
-says that two groupings of type `exp', with a `+' token in between, can
-be combined into a larger grouping of type `exp'.
-
-   White space in rules is significant only to separate symbols.  You
-can add extra white space as you wish.
-
-   Scattered among the components can be ACTIONS that determine the
-semantics of the rule.  An action looks like this:
-
-     {C STATEMENTS}
-
-This is an example of "braced code", that is, C code surrounded by
-braces, much like a compound statement in C.  Braced code can contain
-any sequence of C tokens, so long as its braces are balanced.  Bison
-does not check the braced code for correctness directly; it merely
-copies the code to the parser implementation file, where the C compiler
-can check it.
-
-   Within braced code, the balanced-brace count is not affected by
-braces within comments, string literals, or character constants, but it
-is affected by the C digraphs `<%' and `%>' that represent braces.  At
-the top level braced code must be terminated by `}' and not by a
-digraph.  Bison does not look for trigraphs, so if braced code uses
-trigraphs you should ensure that they do not affect the nesting of
-braces or the boundaries of comments, string literals, or character
-constants.
-
-   Usually there is only one action and it follows the components.
-*Note Actions::.
-
-   Multiple rules for the same RESULT can be written separately or can
-be joined with the vertical-bar character `|' as follows:
-
-     RESULT:
-       RULE1-COMPONENTS...
-     | RULE2-COMPONENTS...
-     ...
-     ;
-
-They are still considered distinct rules even when joined in this way.
-
-   If COMPONENTS in a rule is empty, it means that RESULT can match the
-empty string.  For example, here is how to define a comma-separated
-sequence of zero or more `exp' groupings:
-
-     expseq:
-       /* empty */
-     | expseq1
-     ;
-
-     expseq1:
-       exp
-     | expseq1 ',' exp
-     ;
-
-It is customary to write a comment `/* empty */' in each rule with no
-components.
-
-\1f
-File: bison.info,  Node: Recursion,  Next: Semantics,  Prev: Rules,  Up: Grammar File
-
-3.4 Recursive Rules
-===================
-
-A rule is called "recursive" when its RESULT nonterminal appears also
-on its right hand side.  Nearly all Bison grammars need to use
-recursion, because that is the only way to define a sequence of any
-number of a particular thing.  Consider this recursive definition of a
-comma-separated sequence of one or more expressions:
-
-     expseq1:
-       exp
-     | expseq1 ',' exp
-     ;
-
-Since the recursive use of `expseq1' is the leftmost symbol in the
-right hand side, we call this "left recursion".  By contrast, here the
-same construct is defined using "right recursion":
-
-     expseq1:
-       exp
-     | exp ',' expseq1
-     ;
-
-Any kind of sequence can be defined using either left recursion or right
-recursion, but you should always use left recursion, because it can
-parse a sequence of any number of elements with bounded stack space.
-Right recursion uses up space on the Bison stack in proportion to the
-number of elements in the sequence, because all the elements must be
-shifted onto the stack before the rule can be applied even once.  *Note
-The Bison Parser Algorithm: Algorithm, for further explanation of this.
-
-   "Indirect" or "mutual" recursion occurs when the result of the rule
-does not appear directly on its right hand side, but does appear in
-rules for other nonterminals which do appear on its right hand side.
-
-   For example:
-
-     expr:
-       primary
-     | primary '+' primary
-     ;
-
-     primary:
-       constant
-     | '(' expr ')'
-     ;
-
-defines two mutually-recursive nonterminals, since each refers to the
-other.
-
-\1f
-File: bison.info,  Node: Semantics,  Next: Tracking Locations,  Prev: Recursion,  Up: Grammar File
-
-3.5 Defining Language Semantics
-===============================
-
-The grammar rules for a language determine only the syntax.  The
-semantics are determined by the semantic values associated with various
-tokens and groupings, and by the actions taken when various groupings
-are recognized.
-
-   For example, the calculator calculates properly because the value
-associated with each expression is the proper number; it adds properly
-because the action for the grouping `X + Y' is to add the numbers
-associated with X and Y.
-
-* Menu:
-
-* Value Type::        Specifying one data type for all semantic values.
-* Multiple Types::    Specifying several alternative data types.
-* Actions::           An action is the semantic definition of a grammar rule.
-* Action Types::      Specifying data types for actions to operate on.
-* Mid-Rule Actions::  Most actions go at the end of a rule.
-                      This says when, why and how to use the exceptional
-                        action in the middle of a rule.
-
-\1f
-File: bison.info,  Node: Value Type,  Next: Multiple Types,  Up: Semantics
-
-3.5.1 Data Types of Semantic Values
------------------------------------
-
-In a simple program it may be sufficient to use the same data type for
-the semantic values of all language constructs.  This was true in the
-RPN and infix calculator examples (*note Reverse Polish Notation
-Calculator: RPN Calc.).
-
-   Bison normally uses the type `int' for semantic values if your
-program uses the same data type for all language constructs.  To
-specify some other type, define `YYSTYPE' as a macro, like this:
-
-     #define YYSTYPE double
-
-`YYSTYPE''s replacement list should be a type name that does not
-contain parentheses or square brackets.  This macro definition must go
-in the prologue of the grammar file (*note Outline of a Bison Grammar:
-Grammar Outline.).
-
-\1f
-File: bison.info,  Node: Multiple Types,  Next: Actions,  Prev: Value Type,  Up: Semantics
-
-3.5.2 More Than One Value Type
-------------------------------
-
-In most programs, you will need different data types for different kinds
-of tokens and groupings.  For example, a numeric constant may need type
-`int' or `long int', while a string constant needs type `char *', and
-an identifier might need a pointer to an entry in the symbol table.
-
-   To use more than one data type for semantic values in one parser,
-Bison requires you to do two things:
-
-   * Specify the entire collection of possible data types, either by
-     using the `%union' Bison declaration (*note The Collection of
-     Value Types: Union Decl.), or by using a `typedef' or a `#define'
-     to define `YYSTYPE' to be a union type whose member names are the
-     type tags.
-
-   * Choose one of those types for each symbol (terminal or
-     nonterminal) for which semantic values are used.  This is done for
-     tokens with the `%token' Bison declaration (*note Token Type
-     Names: Token Decl.)  and for groupings with the `%type' Bison
-     declaration (*note Nonterminal Symbols: Type Decl.).
-
-\1f
-File: bison.info,  Node: Actions,  Next: Action Types,  Prev: Multiple Types,  Up: Semantics
-
-3.5.3 Actions
--------------
-
-An action accompanies a syntactic rule and contains C code to be
-executed each time an instance of that rule is recognized.  The task of
-most actions is to compute a semantic value for the grouping built by
-the rule from the semantic values associated with tokens or smaller
-groupings.
-
-   An action consists of braced code containing C statements, and can be
-placed at any position in the rule; it is executed at that position.
-Most rules have just one action at the end of the rule, following all
-the components.  Actions in the middle of a rule are tricky and used
-only for special purposes (*note Actions in Mid-Rule: Mid-Rule
-Actions.).
-
-   The C code in an action can refer to the semantic values of the
-components matched by the rule with the construct `$N', which stands
-for the value of the Nth component.  The semantic value for the
-grouping being constructed is `$$'.  In addition, the semantic values
-of symbols can be accessed with the named references construct `$NAME'
-or `$[NAME]'.  Bison translates both of these constructs into
-expressions of the appropriate type when it copies the actions into the
-parser implementation file.  `$$' (or `$NAME', when it stands for the
-current grouping) is translated to a modifiable lvalue, so it can be
-assigned to.
-
-   Here is a typical example:
-
-     exp:
-     ...
-     | exp '+' exp     { $$ = $1 + $3; }
-
-   Or, in terms of named references:
-
-     exp[result]:
-     ...
-     | exp[left] '+' exp[right]  { $result = $left + $right; }
-
-This rule constructs an `exp' from two smaller `exp' groupings
-connected by a plus-sign token.  In the action, `$1' and `$3' (`$left'
-and `$right') refer to the semantic values of the two component `exp'
-groupings, which are the first and third symbols on the right hand side
-of the rule.  The sum is stored into `$$' (`$result') so that it
-becomes the semantic value of the addition-expression just recognized
-by the rule.  If there were a useful semantic value associated with the
-`+' token, it could be referred to as `$2'.
-
-   *Note Named References::, for more information about using the named
-references construct.
-
-   Note that the vertical-bar character `|' is really a rule separator,
-and actions are attached to a single rule.  This is a difference with
-tools like Flex, for which `|' stands for either "or", or "the same
-action as that of the next rule".  In the following example, the action
-is triggered only when `b' is found:
-
-     a-or-b: 'a'|'b'   { a_or_b_found = 1; };
-
-   If you don't specify an action for a rule, Bison supplies a default:
-`$$ = $1'.  Thus, the value of the first symbol in the rule becomes the
-value of the whole rule.  Of course, the default action is valid only
-if the two data types match.  There is no meaningful default action for
-an empty rule; every empty rule must have an explicit action unless the
-rule's value does not matter.
-
-   `$N' with N zero or negative is allowed for reference to tokens and
-groupings on the stack _before_ those that match the current rule.
-This is a very risky practice, and to use it reliably you must be
-certain of the context in which the rule is applied.  Here is a case in
-which you can use this reliably:
-
-     foo:
-       expr bar '+' expr  { ... }
-     | expr bar '-' expr  { ... }
-     ;
-
-     bar:
-       /* empty */    { previous_expr = $0; }
-     ;
-
-   As long as `bar' is used only in the fashion shown here, `$0' always
-refers to the `expr' which precedes `bar' in the definition of `foo'.
-
-   It is also possible to access the semantic value of the lookahead
-token, if any, from a semantic action.  This semantic value is stored
-in `yylval'.  *Note Special Features for Use in Actions: Action
-Features.
-
-\1f
-File: bison.info,  Node: Action Types,  Next: Mid-Rule Actions,  Prev: Actions,  Up: Semantics
-
-3.5.4 Data Types of Values in Actions
--------------------------------------
-
-If you have chosen a single data type for semantic values, the `$$' and
-`$N' constructs always have that data type.
-
-   If you have used `%union' to specify a variety of data types, then
-you must declare a choice among these types for each terminal or
-nonterminal symbol that can have a semantic value.  Then each time you
-use `$$' or `$N', its data type is determined by which symbol it refers
-to in the rule.  In this example,
-
-     exp:
-       ...
-     | exp '+' exp    { $$ = $1 + $3; }
-
-`$1' and `$3' refer to instances of `exp', so they all have the data
-type declared for the nonterminal symbol `exp'.  If `$2' were used, it
-would have the data type declared for the terminal symbol `'+'',
-whatever that might be.
-
-   Alternatively, you can specify the data type when you refer to the
-value, by inserting `<TYPE>' after the `$' at the beginning of the
-reference.  For example, if you have defined types as shown here:
-
-     %union {
-       int itype;
-       double dtype;
-     }
-
-then you can write `$<itype>1' to refer to the first subunit of the
-rule as an integer, or `$<dtype>1' to refer to it as a double.
-
-\1f
-File: bison.info,  Node: Mid-Rule Actions,  Prev: Action Types,  Up: Semantics
-
-3.5.5 Actions in Mid-Rule
--------------------------
-
-Occasionally it is useful to put an action in the middle of a rule.
-These actions are written just like usual end-of-rule actions, but they
-are executed before the parser even recognizes the following components.
-
-   A mid-rule action may refer to the components preceding it using
-`$N', but it may not refer to subsequent components because it is run
-before they are parsed.
-
-   The mid-rule action itself counts as one of the components of the
-rule.  This makes a difference when there is another action later in
-the same rule (and usually there is another at the end): you have to
-count the actions along with the symbols when working out which number
-N to use in `$N'.
-
-   The mid-rule action can also have a semantic value.  The action can
-set its value with an assignment to `$$', and actions later in the rule
-can refer to the value using `$N'.  Since there is no symbol to name
-the action, there is no way to declare a data type for the value in
-advance, so you must use the `$<...>N' construct to specify a data type
-each time you refer to this value.
-
-   There is no way to set the value of the entire rule with a mid-rule
-action, because assignments to `$$' do not have that effect.  The only
-way to set the value for the entire rule is with an ordinary action at
-the end of the rule.
-
-   Here is an example from a hypothetical compiler, handling a `let'
-statement that looks like `let (VARIABLE) STATEMENT' and serves to
-create a variable named VARIABLE temporarily for the duration of
-STATEMENT.  To parse this construct, we must put VARIABLE into the
-symbol table while STATEMENT is parsed, then remove it afterward.  Here
-is how it is done:
-
-     stmt:
-       LET '(' var ')'
-         { $<context>$ = push_context (); declare_variable ($3); }
-       stmt
-         { $$ = $6; pop_context ($<context>5); }
-
-As soon as `let (VARIABLE)' has been recognized, the first action is
-run.  It saves a copy of the current semantic context (the list of
-accessible variables) as its semantic value, using alternative
-`context' in the data-type union.  Then it calls `declare_variable' to
-add the new variable to that list.  Once the first action is finished,
-the embedded statement `stmt' can be parsed.  Note that the mid-rule
-action is component number 5, so the `stmt' is component number 6.
-
-   After the embedded statement is parsed, its semantic value becomes
-the value of the entire `let'-statement.  Then the semantic value from
-the earlier action is used to restore the prior list of variables.  This
-removes the temporary `let'-variable from the list so that it won't
-appear to exist while the rest of the program is parsed.
-
-   In the above example, if the parser initiates error recovery (*note
-Error Recovery::) while parsing the tokens in the embedded statement
-`stmt', it might discard the previous semantic context `$<context>5'
-without restoring it.  Thus, `$<context>5' needs a destructor (*note
-Freeing Discarded Symbols: Destructor Decl.).  However, Bison currently
-provides no means to declare a destructor specific to a particular
-mid-rule action's semantic value.
-
-   One solution is to bury the mid-rule action inside a nonterminal
-symbol and to declare a destructor for that symbol:
-
-     %type <context> let
-     %destructor { pop_context ($$); } let
-
-     %%
-
-     stmt:
-       let stmt
-         {
-           $$ = $2;
-           pop_context ($1);
-         };
-
-     let:
-       LET '(' var ')'
-         {
-           $$ = push_context ();
-           declare_variable ($3);
-         };
-
-Note that the action is now at the end of its rule.  Any mid-rule
-action can be converted to an end-of-rule action in this way, and this
-is what Bison actually does to implement mid-rule actions.
-
-   Taking action before a rule is completely recognized often leads to
-conflicts since the parser must commit to a parse in order to execute
-the action.  For example, the following two rules, without mid-rule
-actions, can coexist in a working parser because the parser can shift
-the open-brace token and look at what follows before deciding whether
-there is a declaration or not:
-
-     compound:
-       '{' declarations statements '}'
-     | '{' statements '}'
-     ;
-
-But when we add a mid-rule action as follows, the rules become
-nonfunctional:
-
-     compound:
-       { prepare_for_local_variables (); }
-          '{' declarations statements '}'
-     |    '{' statements '}'
-     ;
-
-Now the parser is forced to decide whether to run the mid-rule action
-when it has read no farther than the open-brace.  In other words, it
-must commit to using one rule or the other, without sufficient
-information to do it correctly.  (The open-brace token is what is called
-the "lookahead" token at this time, since the parser is still deciding
-what to do about it.  *Note Lookahead Tokens: Lookahead.)
-
-   You might think that you could correct the problem by putting
-identical actions into the two rules, like this:
-
-     compound:
-       { prepare_for_local_variables (); }
-         '{' declarations statements '}'
-     | { prepare_for_local_variables (); }
-         '{' statements '}'
-     ;
-
-But this does not help, because Bison does not realize that the two
-actions are identical.  (Bison never tries to understand the C code in
-an action.)
-
-   If the grammar is such that a declaration can be distinguished from a
-statement by the first token (which is true in C), then one solution
-which does work is to put the action after the open-brace, like this:
-
-     compound:
-       '{' { prepare_for_local_variables (); }
-         declarations statements '}'
-     | '{' statements '}'
-     ;
-
-Now the first token of the following declaration or statement, which
-would in any case tell Bison which rule to use, can still do so.
-
-   Another solution is to bury the action inside a nonterminal symbol
-which serves as a subroutine:
-
-     subroutine:
-       /* empty */  { prepare_for_local_variables (); }
-     ;
-
-     compound:
-       subroutine '{' declarations statements '}'
-     | subroutine '{' statements '}'
-     ;
-
-Now Bison can execute the action in the rule for `subroutine' without
-deciding which rule for `compound' it will eventually use.
-
-\1f
-File: bison.info,  Node: Tracking Locations,  Next: Named References,  Prev: Semantics,  Up: Grammar File
-
-3.6 Tracking Locations
-======================
-
-Though grammar rules and semantic actions are enough to write a fully
-functional parser, it can be useful to process some additional
-information, especially symbol locations.
-
-   The way locations are handled is defined by providing a data type,
-and actions to take when rules are matched.
-
-* Menu:
-
-* Location Type::               Specifying a data type for locations.
-* Actions and Locations::       Using locations in actions.
-* Location Default Action::     Defining a general way to compute locations.
-
-\1f
-File: bison.info,  Node: Location Type,  Next: Actions and Locations,  Up: Tracking Locations
-
-3.6.1 Data Type of Locations
-----------------------------
-
-Defining a data type for locations is much simpler than for semantic
-values, since all tokens and groupings always use the same type.
-
-   You can specify the type of locations by defining a macro called
-`YYLTYPE', just as you can specify the semantic value type by defining
-a `YYSTYPE' macro (*note Value Type::).  When `YYLTYPE' is not defined,
-Bison uses a default structure type with four members:
-
-     typedef struct YYLTYPE
-     {
-       int first_line;
-       int first_column;
-       int last_line;
-       int last_column;
-     } YYLTYPE;
-
-   When `YYLTYPE' is not defined, at the beginning of the parsing, Bison
-initializes all these fields to 1 for `yylloc'.  To initialize `yylloc'
-with a custom location type (or to chose a different initialization),
-use the `%initial-action' directive.  *Note Performing Actions before
-Parsing: Initial Action Decl.
-
-\1f
-File: bison.info,  Node: Actions and Locations,  Next: Location Default Action,  Prev: Location Type,  Up: Tracking Locations
-
-3.6.2 Actions and Locations
----------------------------
-
-Actions are not only useful for defining language semantics, but also
-for describing the behavior of the output parser with locations.
-
-   The most obvious way for building locations of syntactic groupings
-is very similar to the way semantic values are computed.  In a given
-rule, several constructs can be used to access the locations of the
-elements being matched.  The location of the Nth component of the right
-hand side is `@N', while the location of the left hand side grouping is
-`@$'.
-
-   In addition, the named references construct `@NAME' and `@[NAME]'
-may also be used to address the symbol locations.  *Note Named
-References::, for more information about using the named references
-construct.
-
-   Here is a basic example using the default data type for locations:
-
-     exp:
-       ...
-     | exp '/' exp
-         {
-           @$.first_column = @1.first_column;
-           @$.first_line = @1.first_line;
-           @$.last_column = @3.last_column;
-           @$.last_line = @3.last_line;
-           if ($3)
-             $$ = $1 / $3;
-           else
-             {
-               $$ = 1;
-               fprintf (stderr,
-                        "Division by zero, l%d,c%d-l%d,c%d",
-                        @3.first_line, @3.first_column,
-                        @3.last_line, @3.last_column);
-             }
-         }
-
-   As for semantic values, there is a default action for locations that
-is run each time a rule is matched.  It sets the beginning of `@$' to
-the beginning of the first symbol, and the end of `@$' to the end of the
-last symbol.
-
-   With this default action, the location tracking can be fully
-automatic.  The example above simply rewrites this way:
-
-     exp:
-       ...
-     | exp '/' exp
-         {
-           if ($3)
-             $$ = $1 / $3;
-           else
-             {
-               $$ = 1;
-               fprintf (stderr,
-                        "Division by zero, l%d,c%d-l%d,c%d",
-                        @3.first_line, @3.first_column,
-                        @3.last_line, @3.last_column);
-             }
-         }
-
-   It is also possible to access the location of the lookahead token,
-if any, from a semantic action.  This location is stored in `yylloc'.
-*Note Special Features for Use in Actions: Action Features.
-
-\1f
-File: bison.info,  Node: Location Default Action,  Prev: Actions and Locations,  Up: Tracking Locations
-
-3.6.3 Default Action for Locations
-----------------------------------
-
-Actually, actions are not the best place to compute locations.  Since
-locations are much more general than semantic values, there is room in
-the output parser to redefine the default action to take for each rule.
-The `YYLLOC_DEFAULT' macro is invoked each time a rule is matched,
-before the associated action is run.  It is also invoked while
-processing a syntax error, to compute the error's location.  Before
-reporting an unresolvable syntactic ambiguity, a GLR parser invokes
-`YYLLOC_DEFAULT' recursively to compute the location of that ambiguity.
-
-   Most of the time, this macro is general enough to suppress location
-dedicated code from semantic actions.
-
-   The `YYLLOC_DEFAULT' macro takes three parameters.  The first one is
-the location of the grouping (the result of the computation).  When a
-rule is matched, the second parameter identifies locations of all right
-hand side elements of the rule being matched, and the third parameter
-is the size of the rule's right hand side.  When a GLR parser reports
-an ambiguity, which of multiple candidate right hand sides it passes to
-`YYLLOC_DEFAULT' is undefined.  When processing a syntax error, the
-second parameter identifies locations of the symbols that were
-discarded during error processing, and the third parameter is the
-number of discarded symbols.
-
-   By default, `YYLLOC_DEFAULT' is defined this way:
-
-     # define YYLLOC_DEFAULT(Cur, Rhs, N)                      \
-     do                                                        \
-       if (N)                                                  \
-         {                                                     \
-           (Cur).first_line   = YYRHSLOC(Rhs, 1).first_line;   \
-           (Cur).first_column = YYRHSLOC(Rhs, 1).first_column; \
-           (Cur).last_line    = YYRHSLOC(Rhs, N).last_line;    \
-           (Cur).last_column  = YYRHSLOC(Rhs, N).last_column;  \
-         }                                                     \
-       else                                                    \
-         {                                                     \
-           (Cur).first_line   = (Cur).last_line   =            \
-             YYRHSLOC(Rhs, 0).last_line;                       \
-           (Cur).first_column = (Cur).last_column =            \
-             YYRHSLOC(Rhs, 0).last_column;                     \
-         }                                                     \
-     while (0)
-
-where `YYRHSLOC (rhs, k)' is the location of the Kth symbol in RHS when
-K is positive, and the location of the symbol just before the reduction
-when K and N are both zero.
-
-   When defining `YYLLOC_DEFAULT', you should consider that:
-
-   * All arguments are free of side-effects.  However, only the first
-     one (the result) should be modified by `YYLLOC_DEFAULT'.
-
-   * For consistency with semantic actions, valid indexes within the
-     right hand side range from 1 to N.  When N is zero, only 0 is a
-     valid index, and it refers to the symbol just before the reduction.
-     During error processing N is always positive.
-
-   * Your macro should parenthesize its arguments, if need be, since the
-     actual arguments may not be surrounded by parentheses.  Also, your
-     macro should expand to something that can be used as a single
-     statement when it is followed by a semicolon.
-
-\1f
-File: bison.info,  Node: Named References,  Next: Declarations,  Prev: Tracking Locations,  Up: Grammar File
-
-3.7 Named References
-====================
-
-As described in the preceding sections, the traditional way to refer to
-any semantic value or location is a "positional reference", which takes
-the form `$N', `$$', `@N', and `@$'.  However, such a reference is not
-very descriptive.  Moreover, if you later decide to insert or remove
-symbols in the right-hand side of a grammar rule, the need to renumber
-such references can be tedious and error-prone.
-
-   To avoid these issues, you can also refer to a semantic value or
-location using a "named reference".  First of all, original symbol
-names may be used as named references.  For example:
-
-     invocation: op '(' args ')'
-       { $invocation = new_invocation ($op, $args, @invocation); }
-
-Positional and named references can be mixed arbitrarily.  For example:
-
-     invocation: op '(' args ')'
-       { $$ = new_invocation ($op, $args, @$); }
-
-However, sometimes regular symbol names are not sufficient due to
-ambiguities:
-
-     exp: exp '/' exp
-       { $exp = $exp / $exp; } // $exp is ambiguous.
-
-     exp: exp '/' exp
-       { $$ = $1 / $exp; } // One usage is ambiguous.
-
-     exp: exp '/' exp
-       { $$ = $1 / $3; } // No error.
-
-When ambiguity occurs, explicitly declared names may be used for values
-and locations.  Explicit names are declared as a bracketed name after a
-symbol appearance in rule definitions.  For example:
-     exp[result]: exp[left] '/' exp[right]
-       { $result = $left / $right; }
-
-In order to access a semantic value generated by a mid-rule action, an
-explicit name may also be declared by putting a bracketed name after the
-closing brace of the mid-rule action code:
-     exp[res]: exp[x] '+' {$left = $x;}[left] exp[right]
-       { $res = $left + $right; }
-
-In references, in order to specify names containing dots and dashes, an
-explicit bracketed syntax `$[name]' and `@[name]' must be used:
-     if-stmt: "if" '(' expr ')' "then" then.stmt ';'
-       { $[if-stmt] = new_if_stmt ($expr, $[then.stmt]); }
-
-   It often happens that named references are followed by a dot, dash
-or other C punctuation marks and operators.  By default, Bison will read
-`$name.suffix' as a reference to symbol value `$name' followed by
-`.suffix', i.e., an access to the `suffix' field of the semantic value.
-In order to force Bison to recognize `name.suffix' in its entirety as
-the name of a semantic value, the bracketed syntax `$[name.suffix]'
-must be used.
-
-   The named references feature is experimental.  More user feedback
-will help to stabilize it.
-
-\1f
-File: bison.info,  Node: Declarations,  Next: Multiple Parsers,  Prev: Named References,  Up: Grammar File
-
-3.8 Bison Declarations
-======================
-
-The "Bison declarations" section of a Bison grammar defines the symbols
-used in formulating the grammar and the data types of semantic values.
-*Note Symbols::.
-
-   All token type names (but not single-character literal tokens such as
-`'+'' and `'*'') must be declared.  Nonterminal symbols must be
-declared if you need to specify which data type to use for the semantic
-value (*note More Than One Value Type: Multiple Types.).
-
-   The first rule in the grammar file also specifies the start symbol,
-by default.  If you want some other symbol to be the start symbol, you
-must declare it explicitly (*note Languages and Context-Free Grammars:
-Language and Grammar.).
-
-* Menu:
-
-* Require Decl::      Requiring a Bison version.
-* Token Decl::        Declaring terminal symbols.
-* Precedence Decl::   Declaring terminals with precedence and associativity.
-* Union Decl::        Declaring the set of all semantic value types.
-* Type Decl::         Declaring the choice of type for a nonterminal symbol.
-* Initial Action Decl::  Code run before parsing starts.
-* Destructor Decl::   Declaring how symbols are freed.
-* Printer Decl::      Declaring how symbol values are displayed.
-* Expect Decl::       Suppressing warnings about parsing conflicts.
-* Start Decl::        Specifying the start symbol.
-* Pure Decl::         Requesting a reentrant parser.
-* Push Decl::         Requesting a push parser.
-* Decl Summary::      Table of all Bison declarations.
-* %define Summary::   Defining variables to adjust Bison's behavior.
-* %code Summary::     Inserting code into the parser source.
-
-\1f
-File: bison.info,  Node: Require Decl,  Next: Token Decl,  Up: Declarations
-
-3.8.1 Require a Version of Bison
---------------------------------
-
-You may require the minimum version of Bison to process the grammar.  If
-the requirement is not met, `bison' exits with an error (exit status
-63).
-
-     %require "VERSION"
-
-\1f
-File: bison.info,  Node: Token Decl,  Next: Precedence Decl,  Prev: Require Decl,  Up: Declarations
-
-3.8.2 Token Type Names
-----------------------
-
-The basic way to declare a token type name (terminal symbol) is as
-follows:
-
-     %token NAME
-
-   Bison will convert this into a `#define' directive in the parser, so
-that the function `yylex' (if it is in this file) can use the name NAME
-to stand for this token type's code.
-
-   Alternatively, you can use `%left', `%right', or `%nonassoc' instead
-of `%token', if you wish to specify associativity and precedence.
-*Note Operator Precedence: Precedence Decl.
-
-   You can explicitly specify the numeric code for a token type by
-appending a nonnegative decimal or hexadecimal integer value in the
-field immediately following the token name:
-
-     %token NUM 300
-     %token XNUM 0x12d // a GNU extension
-
-It is generally best, however, to let Bison choose the numeric codes for
-all token types.  Bison will automatically select codes that don't
-conflict with each other or with normal characters.
-
-   In the event that the stack type is a union, you must augment the
-`%token' or other token declaration to include the data type
-alternative delimited by angle-brackets (*note More Than One Value
-Type: Multiple Types.).
-
-   For example:
-
-     %union {              /* define stack type */
-       double val;
-       symrec *tptr;
-     }
-     %token <val> NUM      /* define token NUM and its type */
-
-   You can associate a literal string token with a token type name by
-writing the literal string at the end of a `%token' declaration which
-declares the name.  For example:
-
-     %token arrow "=>"
-
-For example, a grammar for the C language might specify these names with
-equivalent literal string tokens:
-
-     %token  <operator>  OR      "||"
-     %token  <operator>  LE 134  "<="
-     %left  OR  "<="
-
-Once you equate the literal string and the token name, you can use them
-interchangeably in further declarations or the grammar rules.  The
-`yylex' function can use the token name or the literal string to obtain
-the token type code number (*note Calling Convention::).  Syntax error
-messages passed to `yyerror' from the parser will reference the literal
-string instead of the token name.
-
-   The token numbered as 0 corresponds to end of file; the following
-line allows for nicer error messages referring to "end of file" instead
-of "$end":
-
-     %token END 0 "end of file"
-
-\1f
-File: bison.info,  Node: Precedence Decl,  Next: Union Decl,  Prev: Token Decl,  Up: Declarations
-
-3.8.3 Operator Precedence
--------------------------
-
-Use the `%left', `%right' or `%nonassoc' declaration to declare a token
-and specify its precedence and associativity, all at once.  These are
-called "precedence declarations".  *Note Operator Precedence:
-Precedence, for general information on operator precedence.
-
-   The syntax of a precedence declaration is nearly the same as that of
-`%token': either
-
-     %left SYMBOLS...
-
-or
-
-     %left <TYPE> SYMBOLS...
-
-   And indeed any of these declarations serves the purposes of `%token'.
-But in addition, they specify the associativity and relative precedence
-for all the SYMBOLS:
-
-   * The associativity of an operator OP determines how repeated uses
-     of the operator nest: whether `X OP Y OP Z' is parsed by grouping
-     X with Y first or by grouping Y with Z first.  `%left' specifies
-     left-associativity (grouping X with Y first) and `%right'
-     specifies right-associativity (grouping Y with Z first).
-     `%nonassoc' specifies no associativity, which means that `X OP Y
-     OP Z' is considered a syntax error.
-
-   * The precedence of an operator determines how it nests with other
-     operators.  All the tokens declared in a single precedence
-     declaration have equal precedence and nest together according to
-     their associativity.  When two tokens declared in different
-     precedence declarations associate, the one declared later has the
-     higher precedence and is grouped first.
-
-   For backward compatibility, there is a confusing difference between
-the argument lists of `%token' and precedence declarations.  Only a
-`%token' can associate a literal string with a token type name.  A
-precedence declaration always interprets a literal string as a
-reference to a separate token.  For example:
-
-     %left  OR "<="         // Does not declare an alias.
-     %left  OR 134 "<=" 135 // Declares 134 for OR and 135 for "<=".
-
-\1f
-File: bison.info,  Node: Union Decl,  Next: Type Decl,  Prev: Precedence Decl,  Up: Declarations
-
-3.8.4 The Collection of Value Types
------------------------------------
-
-The `%union' declaration specifies the entire collection of possible
-data types for semantic values.  The keyword `%union' is followed by
-braced code containing the same thing that goes inside a `union' in C.
-
-   For example:
-
-     %union {
-       double val;
-       symrec *tptr;
-     }
-
-This says that the two alternative types are `double' and `symrec *'.
-They are given names `val' and `tptr'; these names are used in the
-`%token' and `%type' declarations to pick one of the types for a
-terminal or nonterminal symbol (*note Nonterminal Symbols: Type Decl.).
-
-   As an extension to POSIX, a tag is allowed after the `union'.  For
-example:
-
-     %union value {
-       double val;
-       symrec *tptr;
-     }
-
-specifies the union tag `value', so the corresponding C type is `union
-value'.  If you do not specify a tag, it defaults to `YYSTYPE'.
-
-   As another extension to POSIX, you may specify multiple `%union'
-declarations; their contents are concatenated.  However, only the first
-`%union' declaration can specify a tag.
-
-   Note that, unlike making a `union' declaration in C, you need not
-write a semicolon after the closing brace.
-
-   Instead of `%union', you can define and use your own union type
-`YYSTYPE' if your grammar contains at least one `<TYPE>' tag.  For
-example, you can put the following into a header file `parser.h':
-
-     union YYSTYPE {
-       double val;
-       symrec *tptr;
-     };
-     typedef union YYSTYPE YYSTYPE;
-
-and then your grammar can use the following instead of `%union':
-
-     %{
-     #include "parser.h"
-     %}
-     %type <val> expr
-     %token <tptr> ID
-
-\1f
-File: bison.info,  Node: Type Decl,  Next: Initial Action Decl,  Prev: Union Decl,  Up: Declarations
-
-3.8.5 Nonterminal Symbols
--------------------------
-
-When you use `%union' to specify multiple value types, you must declare
-the value type of each nonterminal symbol for which values are used.
-This is done with a `%type' declaration, like this:
-
-     %type <TYPE> NONTERMINAL...
-
-Here NONTERMINAL is the name of a nonterminal symbol, and TYPE is the
-name given in the `%union' to the alternative that you want (*note The
-Collection of Value Types: Union Decl.).  You can give any number of
-nonterminal symbols in the same `%type' declaration, if they have the
-same value type.  Use spaces to separate the symbol names.
-
-   You can also declare the value type of a terminal symbol.  To do
-this, use the same `<TYPE>' construction in a declaration for the
-terminal symbol.  All kinds of token declarations allow `<TYPE>'.
-
-\1f
-File: bison.info,  Node: Initial Action Decl,  Next: Destructor Decl,  Prev: Type Decl,  Up: Declarations
-
-3.8.6 Performing Actions before Parsing
----------------------------------------
-
-Sometimes your parser needs to perform some initializations before
-parsing.  The `%initial-action' directive allows for such arbitrary
-code.
-
- -- Directive: %initial-action { CODE }
-     Declare that the braced CODE must be invoked before parsing each
-     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
-
-     %parse-param { char const *file_name };
-     %initial-action
-     {
-       @$.initialize (file_name);
-     };
-
-\1f
-File: bison.info,  Node: Destructor Decl,  Next: Printer Decl,  Prev: Initial Action Decl,  Up: Declarations
-
-3.8.7 Freeing Discarded Symbols
--------------------------------
-
-During error recovery (*note Error Recovery::), symbols already pushed
-on the stack and tokens coming from the rest of the file are discarded
-until the parser falls on its feet.  If the parser runs out of memory,
-or if it returns via `YYABORT' or `YYACCEPT', all the symbols on the
-stack must be discarded.  Even if the parser succeeds, it must discard
-the start symbol.
-
-   When discarded symbols convey heap based information, this memory is
-lost.  While this behavior can be tolerable for batch parsers, such as
-in traditional compilers, it is unacceptable for programs like shells or
-protocol implementations that may parse and execute indefinitely.
-
-   The `%destructor' directive defines code that is called when a
-symbol is automatically discarded.
-
- -- Directive: %destructor { CODE } SYMBOLS
-     Invoke the braced CODE whenever the parser discards one of the
-     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
-     a per-symbol `%destructor'.  You may also define a per-type
-     `%destructor' by listing a semantic type tag among SYMBOLS.  In
-     that case, the parser will invoke this CODE whenever it discards
-     any grammar symbol that has that semantic type tag unless that
-     symbol has its own per-symbol `%destructor'.
-
-     Finally, you can define two different kinds of default
-     `%destructor's.  (These default forms are experimental.  More user
-     feedback will help to determine whether they should become
-     permanent features.)  You can place each of `<*>' and `<>' in the
-     SYMBOLS list of exactly one `%destructor' declaration in your
-     grammar file.  The parser will invoke the CODE associated with one
-     of these whenever it discards any user-defined grammar symbol that
-     has no per-symbol and no per-type `%destructor'.  The parser uses
-     the CODE for `<*>' in the case of such a grammar symbol for which
-     you have formally declared a semantic type tag (`%type' counts as
-     such a declaration, but `$<tag>$' does not).  The parser uses the
-     CODE for `<>' in the case of such a grammar symbol that has no
-     declared semantic type tag.
-
-For example:
-
-     %union { char *string; }
-     %token <string> STRING1
-     %token <string> STRING2
-     %type  <string> string1
-     %type  <string> string2
-     %union { char character; }
-     %token <character> CHR
-     %type  <character> chr
-     %token TAGLESS
-
-     %destructor { } <character>
-     %destructor { free ($$); } <*>
-     %destructor { free ($$); printf ("%d", @$.first_line); } STRING1 string1
-     %destructor { printf ("Discarding tagless symbol.\n"); } <>
-
-guarantees that, when the parser discards any user-defined symbol that
-has a semantic type tag other than `<character>', it passes its
-semantic value to `free' by default.  However, when the parser discards
-a `STRING1' or a `string1', it also prints its line number to `stdout'.
-It performs only the second `%destructor' in this case, so it invokes
-`free' only once.  Finally, the parser merely prints a message whenever
-it discards any symbol, such as `TAGLESS', that has no semantic type
-tag.
-
-   A Bison-generated parser invokes the default `%destructor's only for
-user-defined as opposed to Bison-defined symbols.  For example, the
-parser will not invoke either kind of default `%destructor' for the
-special Bison-defined symbols `$accept', `$undefined', or `$end' (*note
-Bison Symbols: Table of Symbols.), none of which you can reference in
-your grammar.  It also will not invoke either for the `error' token
-(*note error: Table of Symbols.), which is always defined by Bison
-regardless of whether you reference it in your grammar.  However, it
-may invoke one of them for the end token (token 0) if you redefine it
-from `$end' to, for example, `END':
-
-     %token END 0
-
-   Finally, Bison will never invoke a `%destructor' for an unreferenced
-mid-rule semantic value (*note Actions in Mid-Rule: Mid-Rule Actions.).
-That is, Bison does not consider a mid-rule to have a semantic value if
-you do not reference `$$' in the mid-rule's action or `$N' (where N is
-the right-hand side symbol position of the mid-rule) in any later
-action in that rule.  However, if you do reference either, the
-Bison-generated parser will invoke the `<>' `%destructor' whenever it
-discards the mid-rule symbol.
-
-
-   "Discarded symbols" are the following:
-
-   * stacked symbols popped during the first phase of error recovery,
-
-   * incoming terminals during the second phase of error recovery,
-
-   * the current lookahead and the entire stack (except the current
-     right-hand side symbols) when the parser returns immediately, and
-
-   * the start symbol, when the parser succeeds.
-
-   The parser can "return immediately" because of an explicit call to
-`YYABORT' or `YYACCEPT', or failed error recovery, or memory exhaustion.
-
-   Right-hand side symbols of a rule that explicitly triggers a syntax
-error via `YYERROR' are not discarded automatically.  As a rule of
-thumb, destructors are invoked only when user actions cannot manage the
-memory.
-
-\1f
-File: bison.info,  Node: Printer Decl,  Next: Expect Decl,  Prev: Destructor Decl,  Up: Declarations
-
-3.8.8 Printing Semantic Values
-------------------------------
-
-When run-time traces are enabled (*note Tracing Your Parser: Tracing.),
-the parser reports its actions, such as reductions.  When a symbol
-involved in an action is reported, only its kind is displayed, as the
-parser cannot know how semantic values should be formatted.
-
-   The `%printer' directive defines code that is called when a symbol is
-reported.  Its syntax is the same as `%destructor' (*note Freeing
-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++), `$$' (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.,
-     `<ival>'), per-symbol (e.g., `exp', `NUM', `"float"'), typed
-     per-default (i.e., `<*>', or untyped per-default (i.e., `<>').
-
-For example:
-
-     %union { char *string; }
-     %token <string> STRING1
-     %token <string> STRING2
-     %type  <string> string1
-     %type  <string> string2
-     %union { char character; }
-     %token <character> CHR
-     %type  <character> chr
-     %token TAGLESS
-
-     %printer { fprintf (yyoutput, "'%c'", $$); } <character>
-     %printer { fprintf (yyoutput, "&%p", $$); } <*>
-     %printer { fprintf (yyoutput, "\"%s\"", $$); } STRING1 string1
-     %printer { fprintf (yyoutput, "<>"); } <>
-
-guarantees that, when the parser print any symbol that has a semantic
-type tag other than `<character>', it display the address of the
-semantic value by default.  However, when the parser displays a
-`STRING1' or a `string1', it formats it as a string in double quotes.
-It performs only the second `%printer' in this case, so it prints only
-once.  Finally, the parser print `<>' for any symbol, such as `TAGLESS',
-that has no semantic type tag.  See also
-
-\1f
-File: bison.info,  Node: Expect Decl,  Next: Start Decl,  Prev: Printer Decl,  Up: Declarations
-
-3.8.9 Suppressing Conflict Warnings
------------------------------------
-
-Bison normally warns if there are any conflicts in the grammar (*note
-Shift/Reduce Conflicts: Shift/Reduce.), but most real grammars have
-harmless shift/reduce conflicts which are resolved in a predictable way
-and would be difficult to eliminate.  It is desirable to suppress the
-warning about these conflicts unless the number of conflicts changes.
-You can do this with the `%expect' declaration.
-
-   The declaration looks like this:
-
-     %expect N
-
-   Here N is a decimal integer.  The declaration says there should be N
-shift/reduce conflicts and no reduce/reduce conflicts.  Bison reports
-an error if the number of shift/reduce conflicts differs from N, or if
-there are any reduce/reduce conflicts.
-
-   For deterministic parsers, reduce/reduce conflicts are more serious,
-and should be eliminated entirely.  Bison will always report
-reduce/reduce conflicts for these parsers.  With GLR parsers, however,
-both kinds of conflicts are routine; otherwise, there would be no need
-to use GLR parsing.  Therefore, it is also possible to specify an
-expected number of reduce/reduce conflicts in GLR parsers, using the
-declaration:
-
-     %expect-rr N
-
-   In general, using `%expect' involves these steps:
-
-   * Compile your grammar without `%expect'.  Use the `-v' option to
-     get a verbose list of where the conflicts occur.  Bison will also
-     print the number of conflicts.
-
-   * Check each of the conflicts to make sure that Bison's default
-     resolution is what you really want.  If not, rewrite the grammar
-     and go back to the beginning.
-
-   * Add an `%expect' declaration, copying the number N from the number
-     which Bison printed.  With GLR parsers, add an `%expect-rr'
-     declaration as well.
-
-   Now Bison will report an error if you introduce an unexpected
-conflict, but will keep silent otherwise.
-
-\1f
-File: bison.info,  Node: Start Decl,  Next: Pure Decl,  Prev: Expect Decl,  Up: Declarations
-
-3.8.10 The Start-Symbol
------------------------
-
-Bison assumes by default that the start symbol for the grammar is the
-first nonterminal specified in the grammar specification section.  The
-programmer may override this restriction with the `%start' declaration
-as follows:
-
-     %start SYMBOL
-
-\1f
-File: bison.info,  Node: Pure Decl,  Next: Push Decl,  Prev: Start Decl,  Up: Declarations
-
-3.8.11 A Pure (Reentrant) Parser
---------------------------------
-
-A "reentrant" program is one which does not alter in the course of
-execution; in other words, it consists entirely of "pure" (read-only)
-code.  Reentrancy is important whenever asynchronous execution is
-possible; for example, a nonreentrant program may not be safe to call
-from a signal handler.  In systems with multiple threads of control, a
-nonreentrant program must be called only within interlocks.
-
-   Normally, Bison generates a parser which is not reentrant.  This is
-suitable for most uses, and it permits compatibility with Yacc.  (The
-standard Yacc interfaces are inherently nonreentrant, because they use
-statically allocated variables for communication with `yylex',
-including `yylval' and `yylloc'.)
-
-   Alternatively, you can generate a pure, reentrant parser.  The Bison
-declaration `%define api.pure' says that you want the parser to be
-reentrant.  It looks like this:
-
-     %define api.pure
-
-   The result is that the communication variables `yylval' and `yylloc'
-become local variables in `yyparse', and a different calling convention
-is used for the lexical analyzer function `yylex'.  *Note Calling
-Conventions for Pure Parsers: Pure Calling, for the details of this.
-The variable `yynerrs' becomes local in `yyparse' in pull mode but it
-becomes a member of yypstate in push mode.  (*note The Error Reporting
-Function `yyerror': Error Reporting.).  The convention for calling
-`yyparse' itself is unchanged.
-
-   Whether the parser is pure has nothing to do with the grammar rules.
-You can generate either a pure parser or a nonreentrant parser from any
-valid grammar.
-
-\1f
-File: bison.info,  Node: Push Decl,  Next: Decl Summary,  Prev: Pure Decl,  Up: Declarations
-
-3.8.12 A Push Parser
---------------------
-
-(The current push parsing interface is experimental and may evolve.
-More user feedback will help to stabilize it.)
-
-   A pull parser is called once and it takes control until all its input
-is completely parsed.  A push parser, on the other hand, is called each
-time a new token is made available.
-
-   A push parser is typically useful when the parser is part of a main
-event loop in the client's application.  This is typically a
-requirement of a GUI, when the main event loop needs to be triggered
-within a certain time period.
-
-   Normally, Bison generates a pull parser.  The following Bison
-declaration says that you want the parser to be a push parser (*note
-api.push-pull: %define Summary.):
-
-     %define api.push-pull push
-
-   In almost all cases, you want to ensure that your push parser is also
-a pure parser (*note A Pure (Reentrant) Parser: Pure Decl.).  The only
-time you should create an impure push parser is to have backwards
-compatibility with the impure Yacc pull mode interface.  Unless you know
-what you are doing, your declarations should look like this:
-
-     %define api.pure
-     %define api.push-pull push
-
-   There is a major notable functional difference between the pure push
-parser and the impure push parser.  It is acceptable for a pure push
-parser to have many parser instances, of the same type of parser, in
-memory at the same time.  An impure push parser should only use one
-parser at a time.
-
-   When a push parser is selected, Bison will generate some new symbols
-in the generated parser.  `yypstate' is a structure that the generated
-parser uses to store the parser's state.  `yypstate_new' is the
-function that will create a new parser instance.  `yypstate_delete'
-will free the resources associated with the corresponding parser
-instance.  Finally, `yypush_parse' is the function that should be
-called whenever a token is available to provide the parser.  A trivial
-example of using a pure push parser would look like this:
-
-     int status;
-     yypstate *ps = yypstate_new ();
-     do {
-       status = yypush_parse (ps, yylex (), NULL);
-     } while (status == YYPUSH_MORE);
-     yypstate_delete (ps);
-
-   If the user decided to use an impure push parser, a few things about
-the generated parser will change.  The `yychar' variable becomes a
-global variable instead of a variable in the `yypush_parse' function.
-For this reason, the signature of the `yypush_parse' function is
-changed to remove the token as a parameter.  A nonreentrant push parser
-example would thus look like this:
-
-     extern int yychar;
-     int status;
-     yypstate *ps = yypstate_new ();
-     do {
-       yychar = yylex ();
-       status = yypush_parse (ps);
-     } while (status == YYPUSH_MORE);
-     yypstate_delete (ps);
-
-   That's it. Notice the next token is put into the global variable
-`yychar' for use by the next invocation of the `yypush_parse' function.
-
-   Bison also supports both the push parser interface along with the
-pull parser interface in the same generated parser.  In order to get
-this functionality, you should replace the `%define api.push-pull push'
-declaration with the `%define api.push-pull both' declaration.  Doing
-this will create all of the symbols mentioned earlier along with the
-two extra symbols, `yyparse' and `yypull_parse'.  `yyparse' can be used
-exactly as it normally would be used.  However, the user should note
-that it is implemented in the generated parser by calling
-`yypull_parse'.  This makes the `yyparse' function that is generated
-with the `%define api.push-pull both' declaration slower than the normal
-`yyparse' function.  If the user calls the `yypull_parse' function it
-will parse the rest of the input stream.  It is possible to
-`yypush_parse' tokens to select a subgrammar and then `yypull_parse'
-the rest of the input stream.  If you would like to switch back and
-forth between between parsing styles, you would have to write your own
-`yypull_parse' function that knows when to quit looking for input.  An
-example of using the `yypull_parse' function would look like this:
-
-     yypstate *ps = yypstate_new ();
-     yypull_parse (ps); /* Will call the lexer */
-     yypstate_delete (ps);
-
-   Adding the `%define api.pure' declaration does exactly the same
-thing to the generated parser with `%define api.push-pull both' as it
-did for `%define api.push-pull push'.
-
-\1f
-File: bison.info,  Node: Decl Summary,  Next: %define Summary,  Prev: Push Decl,  Up: Declarations
-
-3.8.13 Bison Declaration Summary
---------------------------------
-
-Here is a summary of the declarations used to define a grammar:
-
- -- Directive: %union
-     Declare the collection of data types that semantic values may have
-     (*note The Collection of Value Types: Union Decl.).
-
- -- Directive: %token
-     Declare a terminal symbol (token type name) with no precedence or
-     associativity specified (*note Token Type Names: Token Decl.).
-
- -- Directive: %right
-     Declare a terminal symbol (token type name) that is
-     right-associative (*note Operator Precedence: Precedence Decl.).
-
- -- Directive: %left
-     Declare a terminal symbol (token type name) that is
-     left-associative (*note Operator Precedence: Precedence Decl.).
-
- -- Directive: %nonassoc
-     Declare a terminal symbol (token type name) that is nonassociative
-     (*note Operator Precedence: Precedence Decl.).  Using it in a way
-     that would be associative is a syntax error.
-
- -- Directive: %type
-     Declare the type of semantic values for a nonterminal symbol
-     (*note Nonterminal Symbols: Type Decl.).
-
- -- Directive: %start
-     Specify the grammar's start symbol (*note The Start-Symbol: Start
-     Decl.).
-
- -- Directive: %expect
-     Declare the expected number of shift-reduce conflicts (*note
-     Suppressing Conflict Warnings: Expect Decl.).
-
-
-In order to change the behavior of `bison', use the following
-directives:
-
- -- Directive: %code {CODE}
- -- Directive: %code QUALIFIER {CODE}
-     Insert CODE verbatim into the output parser source at the default
-     location or at the location specified by QUALIFIER.  *Note %code
-     Summary::.
-
- -- Directive: %debug
-     In the parser implementation file, define the macro `YYDEBUG' (or
-     `PREFIXDEBUG' with `%define api.prefix PREFIX'), see *note
-     Multiple Parsers in the Same Program: Multiple Parsers.) to 1 if
-     it is not already defined, so that the debugging facilities are
-     compiled.  *Note Tracing Your Parser: Tracing.
-
- -- Directive: %define VARIABLE
- -- Directive: %define VARIABLE VALUE
- -- Directive: %define VARIABLE "VALUE"
-     Define a variable to adjust Bison's behavior.  *Note %define
-     Summary::.
-
- -- Directive: %defines
-     Write a parser header file containing macro definitions for the
-     token type names defined in the grammar as well as a few other
-     declarations.  If the parser implementation file is named `NAME.c'
-     then the parser header file is named `NAME.h'.
-
-     For C parsers, the parser header file declares `YYSTYPE' unless
-     `YYSTYPE' is already defined as a macro or you have used a
-     `<TYPE>' tag without using `%union'.  Therefore, if you are using
-     a `%union' (*note More Than One Value Type: Multiple Types.) with
-     components that require other definitions, or if you have defined
-     a `YYSTYPE' macro or type definition (*note Data Types of Semantic
-     Values: Value Type.), you need to arrange for these definitions to
-     be propagated to all modules, e.g., by putting them in a
-     prerequisite header that is included both by your parser and by any
-     other module that needs `YYSTYPE'.
-
-     Unless your parser is pure, the parser header file declares
-     `yylval' as an external variable.  *Note A Pure (Reentrant)
-     Parser: Pure Decl.
-
-     If you have also used locations, the parser header file declares
-     `YYLTYPE' and `yylloc' using a protocol similar to that of the
-     `YYSTYPE' macro and `yylval'.  *Note Tracking Locations::.
-
-     This parser header file is normally essential if you wish to put
-     the definition of `yylex' in a separate source file, because
-     `yylex' typically needs to be able to refer to the above-mentioned
-     declarations and to the token type codes.  *Note Semantic Values
-     of Tokens: Token Values.
-
-     If you have declared `%code requires' or `%code provides', the
-     output header also contains their code.  *Note %code Summary::.
-
- -- Directive: %defines DEFINES-FILE
-     Same as above, but save in the file DEFINES-FILE.
-
- -- Directive: %destructor
-     Specify how the parser should reclaim the memory associated to
-     discarded symbols.  *Note Freeing Discarded Symbols: Destructor
-     Decl.
-
- -- Directive: %file-prefix "PREFIX"
-     Specify a prefix to use for all Bison output file names.  The names
-     are chosen as if the grammar file were named `PREFIX.y'.
-
- -- Directive: %language "LANGUAGE"
-     Specify the programming language for the generated parser.
-     Currently supported languages include C, C++, and Java.  LANGUAGE
-     is case-insensitive.
-
-     This directive is experimental and its effect may be modified in
-     future releases.
-
- -- Directive: %locations
-     Generate the code processing the locations (*note Special Features
-     for Use in Actions: Action Features.).  This mode is enabled as
-     soon as the grammar uses the special `@N' tokens, but if your
-     grammar does not use it, using `%locations' allows for more
-     accurate syntax error messages.
-
- -- Directive: %no-lines
-     Don't generate any `#line' preprocessor commands in the parser
-     implementation file.  Ordinarily Bison writes these commands in the
-     parser implementation file so that the C compiler and debuggers
-     will associate errors and object code with your source file (the
-     grammar file).  This directive causes them to associate errors
-     with the parser implementation file, treating it as an independent
-     source file in its own right.
-
- -- Directive: %output "FILE"
-     Specify FILE for the parser implementation file.
-
- -- Directive: %pure-parser
-     Deprecated version of `%define api.pure' (*note api.pure: %define
-     Summary.), for which Bison is more careful to warn about
-     unreasonable usage.
-
- -- Directive: %require "VERSION"
-     Require version VERSION or higher of Bison.  *Note Require a
-     Version of Bison: Require Decl.
-
- -- Directive: %skeleton "FILE"
-     Specify the skeleton to use.
-
-     If FILE does not contain a `/', FILE is the name of a skeleton
-     file in the Bison installation directory.  If it does, FILE is an
-     absolute file name or a file name relative to the directory of the
-     grammar file.  This is similar to how most shells resolve commands.
-
- -- Directive: %token-table
-     Generate an array of token names in the parser implementation file.
-     The name of the array is `yytname'; `yytname[I]' is the name of
-     the token whose internal Bison token code number is I.  The first
-     three elements of `yytname' correspond to the predefined tokens
-     `"$end"', `"error"', and `"$undefined"'; after these come the
-     symbols defined in the grammar file.
-
-     The name in the table includes all the characters needed to
-     represent the token in Bison.  For single-character literals and
-     literal strings, this includes the surrounding quoting characters
-     and any escape sequences.  For example, the Bison single-character
-     literal `'+'' corresponds to a three-character name, represented
-     in C as `"'+'"'; and the Bison two-character literal string `"\\/"'
-     corresponds to a five-character name, represented in C as
-     `"\"\\\\/\""'.
-
-     When you specify `%token-table', Bison also generates macro
-     definitions for macros `YYNTOKENS', `YYNNTS', and `YYNRULES', and
-     `YYNSTATES':
-
-    `YYNTOKENS'
-          The highest token number, plus one.
-
-    `YYNNTS'
-          The number of nonterminal symbols.
-
-    `YYNRULES'
-          The number of grammar rules,
-
-    `YYNSTATES'
-          The number of parser states (*note Parser States::).
-
- -- Directive: %verbose
-     Write an extra output file containing verbose descriptions of the
-     parser states and what is done for each type of lookahead token in
-     that state.  *Note Understanding Your Parser: Understanding, for
-     more information.
-
- -- Directive: %yacc
-     Pretend the option `--yacc' was given, i.e., imitate Yacc,
-     including its naming conventions.  *Note Bison Options::, for more.
-
-\1f
-File: bison.info,  Node: %define Summary,  Next: %code Summary,  Prev: Decl Summary,  Up: Declarations
-
-3.8.14 %define Summary
-----------------------
-
-There are many features of Bison's behavior that can be controlled by
-assigning the feature a single value.  For historical reasons, some
-such features are assigned values by dedicated directives, such as
-`%start', which assigns the start symbol.  However, newer such features
-are associated with variables, which are assigned by the `%define'
-directive:
-
- -- Directive: %define VARIABLE
- -- Directive: %define VARIABLE VALUE
- -- Directive: %define VARIABLE "VALUE"
-     Define VARIABLE to VALUE.
-
-     VALUE must be placed in quotation marks if it contains any
-     character other than a letter, underscore, period, or non-initial
-     dash or digit.  Omitting `"VALUE"' entirely is always equivalent
-     to specifying `""'.
-
-     It is an error if a VARIABLE is defined by `%define' multiple
-     times, but see *note -D NAME[=VALUE]: Bison Options.
-
-   The rest of this section summarizes variables and values that
-`%define' accepts.
-
-   Some VARIABLEs take Boolean values.  In this case, Bison will
-complain if the variable definition does not meet one of the following
-four conditions:
-
-  1. `VALUE' is `true'
-
-  2. `VALUE' is omitted (or `""' is specified).  This is equivalent to
-     `true'.
-
-  3. `VALUE' is `false'.
-
-  4. VARIABLE is never defined.  In this case, Bison selects a default
-     value.
-
-   What VARIABLEs are accepted, as well as their meanings and default
-values, depend on the selected target language and/or the parser
-skeleton (*note %language: Decl Summary, *note %skeleton: Decl
-Summary.).  Unaccepted VARIABLEs produce an error.  Some of the
-accepted VARIABLEs are:
-
-   * `api.prefix' 
-
-        * Language(s): All
-
-        * Purpose: Rename exported symbols *Note Multiple Parsers in
-          the Same Program: Multiple Parsers.
-
-        * Accepted Values: String
-
-        * Default Value: `yy'
-
-        * History: introduced in Bison 2.6
-
-   * `api.pure' 
-
-        * Language(s): C
-
-        * Purpose: Request a pure (reentrant) parser program.  *Note A
-          Pure (Reentrant) Parser: Pure Decl.
-
-        * Accepted Values: Boolean
-
-        * Default Value: `false'
-
-   * `api.push-pull' 
-
-        * Language(s): C (deterministic parsers only)
-
-        * Purpose: Request a pull parser, a push parser, or both.
-          *Note A Push Parser: Push Decl.  (The current push parsing
-          interface is experimental and may evolve.  More user feedback
-          will help to stabilize it.)
-
-        * Accepted Values: `pull', `push', `both'
-
-        * Default Value: `pull'
-
-   * `lr.default-reductions' 
-
-        * Language(s): all
-
-        * Purpose: Specify the kind of states that are permitted to
-          contain default reductions.  *Note Default Reductions::.
-          (The ability to specify where default reductions should be
-          used is experimental.  More user feedback will help to
-          stabilize it.)
-
-        * Accepted Values: `most', `consistent', `accepting'
-
-        * Default Value:
-             * `accepting' if `lr.type' is `canonical-lr'.
-
-             * `most' otherwise.
-
-   * `lr.keep-unreachable-states' 
-
-        * Language(s): all
-
-        * Purpose: Request that Bison allow unreachable parser states to
-          remain in the parser tables.  *Note Unreachable States::.
-
-        * Accepted Values: Boolean
-
-        * Default Value: `false'
-
-   * `lr.type' 
-
-        * Language(s): all
-
-        * Purpose: Specify the type of parser tables within the LR(1)
-          family.  *Note LR Table Construction::.  (This feature is
-          experimental.  More user feedback will help to stabilize it.)
-
-        * Accepted Values: `lalr', `ielr', `canonical-lr'
-
-        * Default Value: `lalr'
-
-   * `namespace' 
-
-        * Languages(s): C++
-
-        * Purpose: Specify the namespace for the parser class.  For
-          example, if you specify:
-
-               %define namespace "foo::bar"
-
-          Bison uses `foo::bar' verbatim in references such as:
-
-               foo::bar::parser::semantic_type
-
-          However, to open a namespace, Bison removes any leading `::'
-          and then splits on any remaining occurrences:
-
-               namespace foo { namespace bar {
-                 class position;
-                 class location;
-               } }
-
-        * Accepted Values: Any absolute or relative C++ namespace
-          reference without a trailing `"::"'.  For example, `"foo"' or
-          `"::foo::bar"'.
-
-        * Default Value: The value specified by `%name-prefix', which
-          defaults to `yy'.  This usage of `%name-prefix' is for
-          backward compatibility and can be confusing since
-          `%name-prefix' also specifies the textual prefix for the
-          lexical analyzer function.  Thus, if you specify
-          `%name-prefix', it is best to also specify `%define
-          namespace' so that `%name-prefix' _only_ affects the lexical
-          analyzer function.  For example, if you specify:
-
-               %define namespace "foo"
-               %name-prefix "bar::"
-
-          The parser namespace is `foo' and `yylex' is referenced as
-          `bar::lex'.
-
-   * `parse.lac' 
-
-        * Languages(s): C (deterministic parsers only)
-
-        * Purpose: Enable LAC (lookahead correction) to improve syntax
-          error handling.  *Note LAC::.
-
-        * Accepted Values: `none', `full'
-
-        * Default Value: `none'
-
-\1f
-File: bison.info,  Node: %code Summary,  Prev: %define Summary,  Up: Declarations
-
-3.8.15 %code Summary
---------------------
-
-The `%code' directive inserts code verbatim into the output parser
-source at any of a predefined set of locations.  It thus serves as a
-flexible and user-friendly alternative to the traditional Yacc
-prologue, `%{CODE%}'.  This section summarizes the functionality of
-`%code' for the various target languages supported by Bison.  For a
-detailed discussion of how to use `%code' in place of `%{CODE%}' for
-C/C++ and why it is advantageous to do so, *note Prologue
-Alternatives::.
-
- -- Directive: %code {CODE}
-     This is the unqualified form of the `%code' directive.  It inserts
-     CODE verbatim at a language-dependent default location in the
-     parser implementation.
-
-     For C/C++, the default location is the parser implementation file
-     after the usual contents of the parser header file.  Thus, the
-     unqualified form replaces `%{CODE%}' for most purposes.
-
-     For Java, the default location is inside the parser class.
-
- -- Directive: %code QUALIFIER {CODE}
-     This is the qualified form of the `%code' directive.  QUALIFIER
-     identifies the purpose of CODE and thus the location(s) where
-     Bison should insert it.  That is, if you need to specify
-     location-sensitive CODE that does not belong at the default
-     location selected by the unqualified `%code' form, use this form
-     instead.
-
-   For any particular qualifier or for the unqualified form, if there
-are multiple occurrences of the `%code' directive, Bison concatenates
-the specified code in the order in which it appears in the grammar file.
-
-   Not all qualifiers are accepted for all target languages.  Unaccepted
-qualifiers produce an error.  Some of the accepted qualifiers are:
-
-   * requires 
-
-        * Language(s): C, C++
-
-        * Purpose: This is the best place to write dependency code
-          required for `YYSTYPE' and `YYLTYPE'.  In other words, it's
-          the best place to define types referenced in `%union'
-          directives, and it's the best place to override Bison's
-          default `YYSTYPE' and `YYLTYPE' definitions.
-
-        * Location(s): The parser header file and the parser
-          implementation file before the Bison-generated `YYSTYPE' and
-          `YYLTYPE' definitions.
-
-   * provides 
-
-        * Language(s): C, C++
-
-        * Purpose: This is the best place to write additional
-          definitions and declarations that should be provided to other
-          modules.
-
-        * Location(s): The parser header file and the parser
-          implementation file after the Bison-generated `YYSTYPE',
-          `YYLTYPE', and token definitions.
-
-   * top 
-
-        * Language(s): C, C++
-
-        * Purpose: The unqualified `%code' or `%code requires' should
-          usually be more appropriate than `%code top'.  However,
-          occasionally it is necessary to insert code much nearer the
-          top of the parser implementation file.  For example:
-
-               %code top {
-                 #define _GNU_SOURCE
-                 #include <stdio.h>
-               }
-
-        * Location(s): Near the top of the parser implementation file.
-
-   * imports 
-
-        * Language(s): Java
-
-        * Purpose: This is the best place to write Java import
-          directives.
-
-        * Location(s): The parser Java file after any Java package
-          directive and before any class definitions.
-
-   Though we say the insertion locations are language-dependent, they
-are technically skeleton-dependent.  Writers of non-standard skeletons
-however should choose their locations consistently with the behavior of
-the standard Bison skeletons.
-
-\1f
-File: bison.info,  Node: Multiple Parsers,  Prev: Declarations,  Up: Grammar File
-
-3.9 Multiple Parsers in the Same Program
-========================================
-
-Most programs that use Bison parse only one language and therefore
-contain only one Bison parser.  But what if you want to parse more than
-one language with the same program?  Then you need to avoid name
-conflicts between different definitions of functions and variables such
-as `yyparse', `yylval'.  To use different parsers from the same
-compilation unit, you also need to avoid conflicts on types and macros
-(e.g., `YYSTYPE') exported in the generated header.
-
-   The easy way to do this is to define the `%define' variable
-`api.prefix'.  With different `api.prefix's it is guaranteed that
-headers do not conflict when included together, and that compiled
-objects can be linked together too.  Specifying `%define api.prefix
-PREFIX' (or passing the option `-Dapi.prefix=PREFIX', see *note
-Invoking Bison: Invocation.) renames the interface functions and
-variables of the Bison parser to start with PREFIX instead of `yy', and
-all the macros to start by PREFIX (i.e., PREFIX upper-cased) instead of
-`YY'.
-
-   The renamed symbols include `yyparse', `yylex', `yyerror',
-`yynerrs', `yylval', `yylloc', `yychar' and `yydebug'.  If you use a
-push parser, `yypush_parse', `yypull_parse', `yypstate', `yypstate_new'
-and `yypstate_delete' will also be renamed.  The renamed macros include
-`YYSTYPE', `YYLTYPE', and `YYDEBUG', which is treated specifically --
-more about this below.
-
-   For example, if you use `%define api.prefix c', the names become
-`cparse', `clex', ..., `CSTYPE', `CLTYPE', and so on.
-
-   The `%define' variable `api.prefix' works in two different ways.  In
-the implementation file, it works by adding macro definitions to the
-beginning of the parser implementation file, defining `yyparse' as
-`PREFIXparse', and so on:
-
-     #define YYSTYPE CTYPE
-     #define yyparse cparse
-     #define yylval  clval
-     ...
-     YYSTYPE yylval;
-     int yyparse (void);
-
-   This effectively substitutes one name for the other in the entire
-parser implementation file, thus the "original" names (`yylex',
-`YYSTYPE', ...) are also usable in the parser implementation file.
-
-   However, in the parser header file, the symbols are defined renamed,
-for instance:
-
-     extern CSTYPE clval;
-     int cparse (void);
-
-   The macro `YYDEBUG' is commonly used to enable the tracing support in
-parsers.  To comply with this tradition, when `api.prefix' is used,
-`YYDEBUG' (not renamed) is used as a default value:
-
-     /* Enabling traces.  */
-     #ifndef CDEBUG
-     # if defined YYDEBUG
-     #  if YYDEBUG
-     #   define CDEBUG 1
-     #  else
-     #   define CDEBUG 0
-     #  endif
-     # else
-     #  define CDEBUG 0
-     # endif
-     #endif
-     #if CDEBUG
-     extern int cdebug;
-     #endif
-
-
-
-   Prior to Bison 2.6, a feature similar to `api.prefix' was provided by
-the obsolete directive `%name-prefix' (*note Bison Symbols: Table of
-Symbols.) and the option `--name-prefix' (*note Bison Options::).
-
-\1f
-File: bison.info,  Node: Interface,  Next: Algorithm,  Prev: Grammar File,  Up: Top
-
-4 Parser C-Language Interface
-*****************************
-
-The Bison parser is actually a C function named `yyparse'.  Here we
-describe the interface conventions of `yyparse' and the other functions
-that it needs to use.
-
-   Keep in mind that the parser uses many C identifiers starting with
-`yy' and `YY' for internal purposes.  If you use such an identifier
-(aside from those in this manual) in an action or in epilogue in the
-grammar file, you are likely to run into trouble.
-
-* Menu:
-
-* Parser Function::         How to call `yyparse' and what it returns.
-* Push Parser Function::    How to call `yypush_parse' and what it returns.
-* Pull Parser Function::    How to call `yypull_parse' and what it returns.
-* Parser Create Function::  How to call `yypstate_new' and what it returns.
-* Parser Delete Function::  How to call `yypstate_delete' and what it returns.
-* Lexical::                 You must supply a function `yylex'
-                              which reads tokens.
-* Error Reporting::         You must supply a function `yyerror'.
-* Action Features::         Special features for use in actions.
-* Internationalization::    How to let the parser speak in the user's
-                              native language.
-
-\1f
-File: bison.info,  Node: Parser Function,  Next: Push Parser Function,  Up: Interface
-
-4.1 The Parser Function `yyparse'
-=================================
-
-You call the function `yyparse' to cause parsing to occur.  This
-function reads tokens, executes actions, and ultimately returns when it
-encounters end-of-input or an unrecoverable syntax error.  You can also
-write an action which directs `yyparse' to return immediately without
-reading further.
-
- -- Function: int yyparse (void)
-     The value returned by `yyparse' is 0 if parsing was successful
-     (return is due to end-of-input).
-
-     The value is 1 if parsing failed because of invalid input, i.e.,
-     input that contains a syntax error or that causes `YYABORT' to be
-     invoked.
-
-     The value is 2 if parsing failed due to memory exhaustion.
-
-   In an action, you can cause immediate return from `yyparse' by using
-these macros:
-
- -- Macro: YYACCEPT
-     Return immediately with value 0 (to report success).
-
- -- Macro: YYABORT
-     Return immediately with value 1 (to report failure).
-
-   If you use a reentrant parser, you can optionally pass additional
-parameter information to it in a reentrant way.  To do so, use the
-declaration `%parse-param':
-
- -- Directive: %parse-param {ARGUMENT-DECLARATION}
-     Declare that an argument declared by the braced-code
-     ARGUMENT-DECLARATION is an additional `yyparse' argument.  The
-     ARGUMENT-DECLARATION is used when declaring functions or
-     prototypes.  The last identifier in ARGUMENT-DECLARATION must be
-     the argument name.
-
-   Here's an example.  Write this in the parser:
-
-     %parse-param {int *nastiness}
-     %parse-param {int *randomness}
-
-Then call the parser like this:
-
-     {
-       int nastiness, randomness;
-       ...  /* Store proper data in `nastiness' and `randomness'.  */
-       value = yyparse (&nastiness, &randomness);
-       ...
-     }
-
-In the grammar actions, use expressions like this to refer to the data:
-
-     exp: ...    { ...; *randomness += 1; ... }
-
-\1f
-File: bison.info,  Node: Push Parser Function,  Next: Pull Parser Function,  Prev: Parser Function,  Up: Interface
-
-4.2 The Push Parser Function `yypush_parse'
-===========================================
-
-(The current push parsing interface is experimental and may evolve.
-More user feedback will help to stabilize it.)
-
-   You call the function `yypush_parse' to parse a single token.  This
-function is available if either the `%define api.push-pull push' or
-`%define api.push-pull both' declaration is used.  *Note A Push Parser:
-Push Decl.
-
- -- Function: int yypush_parse (yypstate *yyps)
-     The value returned by `yypush_parse' is the same as for yyparse
-     with the following exception: it returns `YYPUSH_MORE' if more
-     input is required to finish parsing the grammar.
-
-\1f
-File: bison.info,  Node: Pull Parser Function,  Next: Parser Create Function,  Prev: Push Parser Function,  Up: Interface
-
-4.3 The Pull Parser Function `yypull_parse'
-===========================================
-
-(The current push parsing interface is experimental and may evolve.
-More user feedback will help to stabilize it.)
-
-   You call the function `yypull_parse' to parse the rest of the input
-stream.  This function is available if the `%define api.push-pull both'
-declaration is used.  *Note A Push Parser: Push Decl.
-
- -- Function: int yypull_parse (yypstate *yyps)
-     The value returned by `yypull_parse' is the same as for `yyparse'.
-
-\1f
-File: bison.info,  Node: Parser Create Function,  Next: Parser Delete Function,  Prev: Pull Parser Function,  Up: Interface
-
-4.4 The Parser Create Function `yystate_new'
-============================================
-
-(The current push parsing interface is experimental and may evolve.
-More user feedback will help to stabilize it.)
-
-   You call the function `yypstate_new' to create a new parser instance.
-This function is available if either the `%define api.push-pull push' or
-`%define api.push-pull both' declaration is used.  *Note A Push Parser:
-Push Decl.
-
- -- Function: yypstate* yypstate_new (void)
-     The function will return a valid parser instance if there was
-     memory available or 0 if no memory was available.  In impure mode,
-     it will also return 0 if a parser instance is currently allocated.
-
-\1f
-File: bison.info,  Node: Parser Delete Function,  Next: Lexical,  Prev: Parser Create Function,  Up: Interface
-
-4.5 The Parser Delete Function `yystate_delete'
-===============================================
-
-(The current push parsing interface is experimental and may evolve.
-More user feedback will help to stabilize it.)
-
-   You call the function `yypstate_delete' to delete a parser instance.
-function is available if either the `%define api.push-pull push' or
-`%define api.push-pull both' declaration is used.  *Note A Push Parser:
-Push Decl.
-
- -- Function: void yypstate_delete (yypstate *yyps)
-     This function will reclaim the memory associated with a parser
-     instance.  After this call, you should no longer attempt to use
-     the parser instance.
-
-\1f
-File: bison.info,  Node: Lexical,  Next: Error Reporting,  Prev: Parser Delete Function,  Up: Interface
-
-4.6 The Lexical Analyzer Function `yylex'
-=========================================
-
-The "lexical analyzer" function, `yylex', recognizes tokens from the
-input stream and returns them to the parser.  Bison does not create
-this function automatically; you must write it so that `yyparse' can
-call it.  The function is sometimes referred to as a lexical scanner.
-
-   In simple programs, `yylex' is often defined at the end of the Bison
-grammar file.  If `yylex' is defined in a separate source file, you
-need to arrange for the token-type macro definitions to be available
-there.  To do this, use the `-d' option when you run Bison, so that it
-will write these macro definitions into the separate parser header
-file, `NAME.tab.h', which you can include in the other source files
-that need it.  *Note Invoking Bison: Invocation.
-
-* Menu:
-
-* Calling Convention::  How `yyparse' calls `yylex'.
-* Token Values::        How `yylex' must return the semantic value
-                          of the token it has read.
-* Token Locations::     How `yylex' must return the text location
-                          (line number, etc.) of the token, if the
-                          actions want that.
-* Pure Calling::        How the calling convention differs in a pure parser
-                          (*note A Pure (Reentrant) Parser: Pure Decl.).
-
-\1f
-File: bison.info,  Node: Calling Convention,  Next: Token Values,  Up: Lexical
-
-4.6.1 Calling Convention for `yylex'
-------------------------------------
-
-The value that `yylex' returns must be the positive numeric code for
-the type of token it has just found; a zero or negative value signifies
-end-of-input.
-
-   When a token is referred to in the grammar rules by a name, that name
-in the parser implementation file becomes a C macro whose definition is
-the proper numeric code for that token type.  So `yylex' can use the
-name to indicate that type.  *Note Symbols::.
-
-   When a token is referred to in the grammar rules by a character
-literal, the numeric code for that character is also the code for the
-token type.  So `yylex' can simply return that character code, possibly
-converted to `unsigned char' to avoid sign-extension.  The null
-character must not be used this way, because its code is zero and that
-signifies end-of-input.
-
-   Here is an example showing these things:
-
-     int
-     yylex (void)
-     {
-       ...
-       if (c == EOF)    /* Detect end-of-input.  */
-         return 0;
-       ...
-       if (c == '+' || c == '-')
-         return c;      /* Assume token type for `+' is '+'.  */
-       ...
-       return INT;      /* Return the type of the token.  */
-       ...
-     }
-
-This interface has been designed so that the output from the `lex'
-utility can be used without change as the definition of `yylex'.
-
-   If the grammar uses literal string tokens, there are two ways that
-`yylex' can determine the token type codes for them:
-
-   * If the grammar defines symbolic token names as aliases for the
-     literal string tokens, `yylex' can use these symbolic names like
-     all others.  In this case, the use of the literal string tokens in
-     the grammar file has no effect on `yylex'.
-
-   * `yylex' can find the multicharacter token in the `yytname' table.
-     The index of the token in the table is the token type's code.  The
-     name of a multicharacter token is recorded in `yytname' with a
-     double-quote, the token's characters, and another double-quote.
-     The token's characters are escaped as necessary to be suitable as
-     input to Bison.
-
-     Here's code for looking up a multicharacter token in `yytname',
-     assuming that the characters of the token are stored in
-     `token_buffer', and assuming that the token does not contain any
-     characters like `"' that require escaping.
-
-          for (i = 0; i < YYNTOKENS; i++)
-            {
-              if (yytname[i] != 0
-                  && yytname[i][0] == '"'
-                  && ! strncmp (yytname[i] + 1, token_buffer,
-                                strlen (token_buffer))
-                  && yytname[i][strlen (token_buffer) + 1] == '"'
-                  && yytname[i][strlen (token_buffer) + 2] == 0)
-                break;
-            }
-
-     The `yytname' table is generated only if you use the
-     `%token-table' declaration.  *Note Decl Summary::.
-
-\1f
-File: bison.info,  Node: Token Values,  Next: Token Locations,  Prev: Calling Convention,  Up: Lexical
-
-4.6.2 Semantic Values of Tokens
--------------------------------
-
-In an ordinary (nonreentrant) parser, the semantic value of the token
-must be stored into the global variable `yylval'.  When you are using
-just one data type for semantic values, `yylval' has that type.  Thus,
-if the type is `int' (the default), you might write this in `yylex':
-
-       ...
-       yylval = value;  /* Put value onto Bison stack.  */
-       return INT;      /* Return the type of the token.  */
-       ...
-
-   When you are using multiple data types, `yylval''s type is a union
-made from the `%union' declaration (*note The Collection of Value
-Types: Union Decl.).  So when you store a token's value, you must use
-the proper member of the union.  If the `%union' declaration looks like
-this:
-
-     %union {
-       int intval;
-       double val;
-       symrec *tptr;
-     }
-
-then the code in `yylex' might look like this:
-
-       ...
-       yylval.intval = value; /* Put value onto Bison stack.  */
-       return INT;            /* Return the type of the token.  */
-       ...
-
-\1f
-File: bison.info,  Node: Token Locations,  Next: Pure Calling,  Prev: Token Values,  Up: Lexical
-
-4.6.3 Textual Locations of Tokens
----------------------------------
-
-If you are using the `@N'-feature (*note Tracking Locations::) in
-actions to keep track of the textual locations of tokens and groupings,
-then you must provide this information in `yylex'.  The function
-`yyparse' expects to find the textual location of a token just parsed
-in the global variable `yylloc'.  So `yylex' must store the proper data
-in that variable.
-
-   By default, the value of `yylloc' is a structure and you need only
-initialize the members that are going to be used by the actions.  The
-four members are called `first_line', `first_column', `last_line' and
-`last_column'.  Note that the use of this feature makes the parser
-noticeably slower.
-
-   The data type of `yylloc' has the name `YYLTYPE'.
-
-\1f
-File: bison.info,  Node: Pure Calling,  Prev: Token Locations,  Up: Lexical
-
-4.6.4 Calling Conventions for Pure Parsers
-------------------------------------------
-
-When you use the Bison declaration `%define api.pure' to request a
-pure, reentrant parser, the global communication variables `yylval' and
-`yylloc' cannot be used.  (*Note A Pure (Reentrant) Parser: Pure Decl.)
-In such parsers the two global variables are replaced by pointers
-passed as arguments to `yylex'.  You must declare them as shown here,
-and pass the information back by storing it through those pointers.
-
-     int
-     yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
-     {
-       ...
-       *lvalp = value;  /* Put value onto Bison stack.  */
-       return INT;      /* Return the type of the token.  */
-       ...
-     }
-
-   If the grammar file does not use the `@' constructs to refer to
-textual locations, then the type `YYLTYPE' will not be defined.  In
-this case, omit the second argument; `yylex' will be called with only
-one argument.
-
-   If you wish to pass the additional parameter data to `yylex', use
-`%lex-param' just like `%parse-param' (*note Parser Function::).
-
- -- Directive: lex-param {ARGUMENT-DECLARATION}
-     Declare that the braced-code ARGUMENT-DECLARATION is an additional
-     `yylex' argument declaration.
-
-   For instance:
-
-     %parse-param {int *nastiness}
-     %lex-param   {int *nastiness}
-     %parse-param {int *randomness}
-
-results in the following signatures:
-
-     int yylex   (int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
-
-   If `%define api.pure' is added:
-
-     int yylex   (YYSTYPE *lvalp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
-
-and finally, if both `%define api.pure' and `%locations' are used:
-
-     int yylex   (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
-
-\1f
-File: bison.info,  Node: Error Reporting,  Next: Action Features,  Prev: Lexical,  Up: Interface
-
-4.7 The Error Reporting Function `yyerror'
-==========================================
-
-The Bison parser detects a "syntax error" or "parse error" whenever it
-reads a token which cannot satisfy any syntax rule.  An action in the
-grammar can also explicitly proclaim an error, using the macro
-`YYERROR' (*note Special Features for Use in Actions: Action Features.).
-
-   The Bison parser expects to report the error by calling an error
-reporting function named `yyerror', which you must supply.  It is
-called by `yyparse' whenever a syntax error is found, and it receives
-one argument.  For a syntax error, the string is normally
-`"syntax error"'.
-
-   If you invoke the directive `%error-verbose' in the Bison
-declarations section (*note The Bison Declarations Section: Bison
-Declarations.), then Bison provides a more verbose and specific error
-message string instead of just plain `"syntax error"'.  However, that
-message sometimes contains incorrect information if LAC is not enabled
-(*note LAC::).
-
-   The parser can detect one other kind of error: memory exhaustion.
-This can happen when the input contains constructions that are very
-deeply nested.  It isn't likely you will encounter this, since the Bison
-parser normally extends its stack automatically up to a very large
-limit.  But if memory is exhausted, `yyparse' calls `yyerror' in the
-usual fashion, except that the argument string is `"memory exhausted"'.
-
-   In some cases diagnostics like `"syntax error"' are translated
-automatically from English to some other language before they are
-passed to `yyerror'.  *Note Internationalization::.
-
-   The following definition suffices in simple programs:
-
-     void
-     yyerror (char const *s)
-     {
-       fprintf (stderr, "%s\n", s);
-     }
-
-   After `yyerror' returns to `yyparse', the latter will attempt error
-recovery if you have written suitable error recovery grammar rules
-(*note Error Recovery::).  If recovery is impossible, `yyparse' will
-immediately return 1.
-
-   Obviously, in location tracking pure parsers, `yyerror' should have
-an access to the current location.  This is indeed the case for the GLR
-parsers, but not for the Yacc parser, for historical reasons.  I.e., if
-`%locations %define api.pure' is passed then the prototypes for
-`yyerror' are:
-
-     void yyerror (char const *msg);                 /* Yacc parsers.  */
-     void yyerror (YYLTYPE *locp, char const *msg);  /* GLR parsers.   */
-
-   If `%parse-param {int *nastiness}' is used, then:
-
-     void yyerror (int *nastiness, char const *msg);  /* Yacc parsers.  */
-     void yyerror (int *nastiness, char const *msg);  /* GLR parsers.   */
-
-   Finally, GLR and Yacc parsers share the same `yyerror' calling
-convention for absolutely pure parsers, i.e., when the calling
-convention of `yylex' _and_ the calling convention of `%define
-api.pure' are pure.  I.e.:
-
-     /* Location tracking.  */
-     %locations
-     /* Pure yylex.  */
-     %define api.pure
-     %lex-param   {int *nastiness}
-     /* Pure yyparse.  */
-     %parse-param {int *nastiness}
-     %parse-param {int *randomness}
-
-results in the following signatures for all the parser kinds:
-
-     int yylex (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-     int yyparse (int *nastiness, int *randomness);
-     void yyerror (YYLTYPE *locp,
-                   int *nastiness, int *randomness,
-                   char const *msg);
-
-The prototypes are only indications of how the code produced by Bison
-uses `yyerror'.  Bison-generated code always ignores the returned
-value, so `yyerror' can return any type, including `void'.  Also,
-`yyerror' can be a variadic function; that is why the message is always
-passed last.
-
-   Traditionally `yyerror' returns an `int' that is always ignored, but
-this is purely for historical reasons, and `void' is preferable since
-it more accurately describes the return type for `yyerror'.
-
-   The variable `yynerrs' contains the number of syntax errors reported
-so far.  Normally this variable is global; but if you request a pure
-parser (*note A Pure (Reentrant) Parser: Pure Decl.)  then it is a
-local variable which only the actions can access.
-
-\1f
-File: bison.info,  Node: Action Features,  Next: Internationalization,  Prev: Error Reporting,  Up: Interface
-
-4.8 Special Features for Use in Actions
-=======================================
-
-Here is a table of Bison constructs, variables and macros that are
-useful in actions.
-
- -- Variable: $$
-     Acts like a variable that contains the semantic value for the
-     grouping made by the current rule.  *Note Actions::.
-
- -- Variable: $N
-     Acts like a variable that contains the semantic value for the Nth
-     component of the current rule.  *Note Actions::.
-
- -- Variable: $<TYPEALT>$
-     Like `$$' but specifies alternative TYPEALT in the union specified
-     by the `%union' declaration.  *Note Data Types of Values in
-     Actions: Action Types.
-
- -- Variable: $<TYPEALT>N
-     Like `$N' but specifies alternative TYPEALT in the union specified
-     by the `%union' declaration.  *Note Data Types of Values in
-     Actions: Action Types.
-
- -- Macro: YYABORT `;'
-     Return immediately from `yyparse', indicating failure.  *Note The
-     Parser Function `yyparse': Parser Function.
-
- -- Macro: YYACCEPT `;'
-     Return immediately from `yyparse', indicating success.  *Note The
-     Parser Function `yyparse': Parser Function.
-
- -- Macro: YYBACKUP (TOKEN, VALUE)`;'
-     Unshift a token.  This macro is allowed only for rules that reduce
-     a single value, and only when there is no lookahead token.  It is
-     also disallowed in GLR parsers.  It installs a lookahead token
-     with token type TOKEN and semantic value VALUE; then it discards
-     the value that was going to be reduced by this rule.
-
-     If the macro is used when it is not valid, such as when there is a
-     lookahead token already, then it reports a syntax error with a
-     message `cannot back up' and performs ordinary error recovery.
-
-     In either case, the rest of the action is not executed.
-
- -- Macro: YYEMPTY
-     Value stored in `yychar' when there is no lookahead token.
-
- -- Macro: YYEOF
-     Value stored in `yychar' when the lookahead is the end of the input
-     stream.
-
- -- Macro: YYERROR `;'
-     Cause an immediate syntax error.  This statement initiates error
-     recovery just as if the parser itself had detected an error;
-     however, it does not call `yyerror', and does not print any
-     message.  If you want to print an error message, call `yyerror'
-     explicitly before the `YYERROR;' statement.  *Note Error
-     Recovery::.
-
- -- Macro: YYRECOVERING
-     The expression `YYRECOVERING ()' yields 1 when the parser is
-     recovering from a syntax error, and 0 otherwise.  *Note Error
-     Recovery::.
-
- -- Variable: yychar
-     Variable containing either the lookahead token, or `YYEOF' when the
-     lookahead is the end of the input stream, or `YYEMPTY' when no
-     lookahead has been performed so the next token is not yet known.
-     Do not modify `yychar' in a deferred semantic action (*note GLR
-     Semantic Actions::).  *Note Lookahead Tokens: Lookahead.
-
- -- Macro: yyclearin `;'
-     Discard the current lookahead token.  This is useful primarily in
-     error rules.  Do not invoke `yyclearin' in a deferred semantic
-     action (*note GLR Semantic Actions::).  *Note Error Recovery::.
-
- -- Macro: yyerrok `;'
-     Resume generating error messages immediately for subsequent syntax
-     errors.  This is useful primarily in error rules.  *Note Error
-     Recovery::.
-
- -- Variable: yylloc
-     Variable containing the lookahead token location when `yychar' is
-     not set to `YYEMPTY' or `YYEOF'.  Do not modify `yylloc' in a
-     deferred semantic action (*note GLR Semantic Actions::).  *Note
-     Actions and Locations: Actions and Locations.
-
- -- Variable: yylval
-     Variable containing the lookahead token semantic value when
-     `yychar' is not set to `YYEMPTY' or `YYEOF'.  Do not modify
-     `yylval' in a deferred semantic action (*note GLR Semantic
-     Actions::).  *Note Actions: Actions.
-
- -- Value: @$
-     Acts like a structure variable containing information on the
-     textual location of the grouping made by the current rule.  *Note
-     Tracking Locations::.
-
-
- -- Value: @N
-     Acts like a structure variable containing information on the
-     textual location of the Nth component of the current rule.  *Note
-     Tracking Locations::.
-
-\1f
-File: bison.info,  Node: Internationalization,  Prev: Action Features,  Up: Interface
-
-4.9 Parser Internationalization
-===============================
-
-A Bison-generated parser can print diagnostics, including error and
-tracing messages.  By default, they appear in English.  However, Bison
-also supports outputting diagnostics in the user's native language.  To
-make this work, the user should set the usual environment variables.
-*Note The User's View: (gettext)Users.  For example, the shell command
-`export LC_ALL=fr_CA.UTF-8' might set the user's locale to French
-Canadian using the UTF-8 encoding.  The exact set of available locales
-depends on the user's installation.
-
-   The maintainer of a package that uses a Bison-generated parser
-enables the internationalization of the parser's output through the
-following steps.  Here we assume a package that uses GNU Autoconf and
-GNU Automake.
-
-  1. Into the directory containing the GNU Autoconf macros used by the
-     package--often called `m4'--copy the `bison-i18n.m4' file
-     installed by Bison under `share/aclocal/bison-i18n.m4' in Bison's
-     installation directory.  For example:
-
-          cp /usr/local/share/aclocal/bison-i18n.m4 m4/bison-i18n.m4
-
-  2. In the top-level `configure.ac', after the `AM_GNU_GETTEXT'
-     invocation, add an invocation of `BISON_I18N'.  This macro is
-     defined in the file `bison-i18n.m4' that you copied earlier.  It
-     causes `configure' to find the value of the `BISON_LOCALEDIR'
-     variable, and it defines the source-language symbol `YYENABLE_NLS'
-     to enable translations in the Bison-generated parser.
-
-  3. In the `main' function of your program, designate the directory
-     containing Bison's runtime message catalog, through a call to
-     `bindtextdomain' with domain name `bison-runtime'.  For example:
-
-          bindtextdomain ("bison-runtime", BISON_LOCALEDIR);
-
-     Typically this appears after any other call `bindtextdomain
-     (PACKAGE, LOCALEDIR)' that your package already has.  Here we rely
-     on `BISON_LOCALEDIR' to be defined as a string through the
-     `Makefile'.
-
-  4. In the `Makefile.am' that controls the compilation of the `main'
-     function, make `BISON_LOCALEDIR' available as a C preprocessor
-     macro, either in `DEFS' or in `AM_CPPFLAGS'.  For example:
-
-          DEFS = @DEFS@ -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"'
-
-     or:
-
-          AM_CPPFLAGS = -DBISON_LOCALEDIR='"$(BISON_LOCALEDIR)"'
-
-  5. Finally, invoke the command `autoreconf' to generate the build
-     infrastructure.
-
-\1f
-File: bison.info,  Node: Algorithm,  Next: Error Recovery,  Prev: Interface,  Up: Top
-
-5 The Bison Parser Algorithm
-****************************
-
-As Bison reads tokens, it pushes them onto a stack along with their
-semantic values.  The stack is called the "parser stack".  Pushing a
-token is traditionally called "shifting".
-
-   For example, suppose the infix calculator has read `1 + 5 *', with a
-`3' to come.  The stack will have four elements, one for each token
-that was shifted.
-
-   But the stack does not always have an element for each token read.
-When the last N tokens and groupings shifted match the components of a
-grammar rule, they can be combined according to that rule.  This is
-called "reduction".  Those tokens and groupings are replaced on the
-stack by a single grouping whose symbol is the result (left hand side)
-of that rule.  Running the rule's action is part of the process of
-reduction, because this is what computes the semantic value of the
-resulting grouping.
-
-   For example, if the infix calculator's parser stack contains this:
-
-     1 + 5 * 3
-
-and the next input token is a newline character, then the last three
-elements can be reduced to 15 via the rule:
-
-     expr: expr '*' expr;
-
-Then the stack contains just these three elements:
-
-     1 + 15
-
-At this point, another reduction can be made, resulting in the single
-value 16.  Then the newline token can be shifted.
-
-   The parser tries, by shifts and reductions, to reduce the entire
-input down to a single grouping whose symbol is the grammar's
-start-symbol (*note Languages and Context-Free Grammars: Language and
-Grammar.).
-
-   This kind of parser is known in the literature as a bottom-up parser.
-
-* Menu:
-
-* Lookahead::         Parser looks one token ahead when deciding what to do.
-* Shift/Reduce::      Conflicts: when either shifting or reduction is valid.
-* Precedence::        Operator precedence works by resolving conflicts.
-* Contextual Precedence::  When an operator's precedence depends on context.
-* Parser States::     The parser is a finite-state-machine with stack.
-* Reduce/Reduce::     When two rules are applicable in the same situation.
-* Mysterious Conflicts:: Conflicts that look unjustified.
-* Tuning LR::         How to tune fundamental aspects of LR-based parsing.
-* Generalized LR Parsing::  Parsing arbitrary context-free grammars.
-* Memory Management:: What happens when memory is exhausted.  How to avoid it.
-
-\1f
-File: bison.info,  Node: Lookahead,  Next: Shift/Reduce,  Up: Algorithm
-
-5.1 Lookahead Tokens
-====================
-
-The Bison parser does _not_ always reduce immediately as soon as the
-last N tokens and groupings match a rule.  This is because such a
-simple strategy is inadequate to handle most languages.  Instead, when a
-reduction is possible, the parser sometimes "looks ahead" at the next
-token in order to decide what to do.
-
-   When a token is read, it is not immediately shifted; first it
-becomes the "lookahead token", which is not on the stack.  Now the
-parser can perform one or more reductions of tokens and groupings on
-the stack, while the lookahead token remains off to the side.  When no
-more reductions should take place, the lookahead token is shifted onto
-the stack.  This does not mean that all possible reductions have been
-done; depending on the token type of the lookahead token, some rules
-may choose to delay their application.
-
-   Here is a simple case where lookahead is needed.  These three rules
-define expressions which contain binary addition operators and postfix
-unary factorial operators (`!'), and allow parentheses for grouping.
-
-     expr:
-       term '+' expr
-     | term
-     ;
-
-     term:
-       '(' expr ')'
-     | term '!'
-     | NUMBER
-     ;
-
-   Suppose that the tokens `1 + 2' have been read and shifted; what
-should be done?  If the following token is `)', then the first three
-tokens must be reduced to form an `expr'.  This is the only valid
-course, because shifting the `)' would produce a sequence of symbols
-`term ')'', and no rule allows this.
-
-   If the following token is `!', then it must be shifted immediately so
-that `2 !' can be reduced to make a `term'.  If instead the parser were
-to reduce before shifting, `1 + 2' would become an `expr'.  It would
-then be impossible to shift the `!' because doing so would produce on
-the stack the sequence of symbols `expr '!''.  No rule allows that
-sequence.
-
-   The lookahead token is stored in the variable `yychar'.  Its
-semantic value and location, if any, are stored in the variables
-`yylval' and `yylloc'.  *Note Special Features for Use in Actions:
-Action Features.
-
-\1f
-File: bison.info,  Node: Shift/Reduce,  Next: Precedence,  Prev: Lookahead,  Up: Algorithm
-
-5.2 Shift/Reduce Conflicts
-==========================
-
-Suppose we are parsing a language which has if-then and if-then-else
-statements, with a pair of rules like this:
-
-     if_stmt:
-       IF expr THEN stmt
-     | IF expr THEN stmt ELSE stmt
-     ;
-
-Here we assume that `IF', `THEN' and `ELSE' are terminal symbols for
-specific keyword tokens.
-
-   When the `ELSE' token is read and becomes the lookahead token, the
-contents of the stack (assuming the input is valid) are just right for
-reduction by the first rule.  But it is also legitimate to shift the
-`ELSE', because that would lead to eventual reduction by the second
-rule.
-
-   This situation, where either a shift or a reduction would be valid,
-is called a "shift/reduce conflict".  Bison is designed to resolve
-these conflicts by choosing to shift, unless otherwise directed by
-operator precedence declarations.  To see the reason for this, let's
-contrast it with the other alternative.
-
-   Since the parser prefers to shift the `ELSE', the result is to attach
-the else-clause to the innermost if-statement, making these two inputs
-equivalent:
-
-     if x then if y then win (); else lose;
-
-     if x then do; if y then win (); else lose; end;
-
-   But if the parser chose to reduce when possible rather than shift,
-the result would be to attach the else-clause to the outermost
-if-statement, making these two inputs equivalent:
-
-     if x then if y then win (); else lose;
-
-     if x then do; if y then win (); end; else lose;
-
-   The conflict exists because the grammar as written is ambiguous:
-either parsing of the simple nested if-statement is legitimate.  The
-established convention is that these ambiguities are resolved by
-attaching the else-clause to the innermost if-statement; this is what
-Bison accomplishes by choosing to shift rather than reduce.  (It would
-ideally be cleaner to write an unambiguous grammar, but that is very
-hard to do in this case.)  This particular ambiguity was first
-encountered in the specifications of Algol 60 and is called the
-"dangling `else'" ambiguity.
-
-   To avoid warnings from Bison about predictable, legitimate
-shift/reduce conflicts, use the `%expect N' declaration.  There will be
-no warning as long as the number of shift/reduce conflicts is exactly
-N, and Bison will report an error if there is a different number.
-*Note Suppressing Conflict Warnings: Expect Decl.
-
-   The definition of `if_stmt' above is solely to blame for the
-conflict, but the conflict does not actually appear without additional
-rules.  Here is a complete Bison grammar file that actually manifests
-the conflict:
-
-     %token IF THEN ELSE variable
-     %%
-     stmt:
-       expr
-     | if_stmt
-     ;
-
-     if_stmt:
-       IF expr THEN stmt
-     | IF expr THEN stmt ELSE stmt
-     ;
-
-     expr:
-       variable
-     ;
-
-\1f
-File: bison.info,  Node: Precedence,  Next: Contextual Precedence,  Prev: Shift/Reduce,  Up: Algorithm
-
-5.3 Operator Precedence
-=======================
-
-Another situation where shift/reduce conflicts appear is in arithmetic
-expressions.  Here shifting is not always the preferred resolution; the
-Bison declarations for operator precedence allow you to specify when to
-shift and when to reduce.
-
-* Menu:
-
-* Why Precedence::    An example showing why precedence is needed.
-* Using Precedence::  How to specify precedence in Bison grammars.
-* Precedence Examples::  How these features are used in the previous example.
-* How Precedence::    How they work.
-
-\1f
-File: bison.info,  Node: Why Precedence,  Next: Using Precedence,  Up: Precedence
-
-5.3.1 When Precedence is Needed
--------------------------------
-
-Consider the following ambiguous grammar fragment (ambiguous because the
-input `1 - 2 * 3' can be parsed in two different ways):
-
-     expr:
-       expr '-' expr
-     | expr '*' expr
-     | expr '<' expr
-     | '(' expr ')'
-     ...
-     ;
-
-Suppose the parser has seen the tokens `1', `-' and `2'; should it
-reduce them via the rule for the subtraction operator?  It depends on
-the next token.  Of course, if the next token is `)', we must reduce;
-shifting is invalid because no single rule can reduce the token
-sequence `- 2 )' or anything starting with that.  But if the next token
-is `*' or `<', we have a choice: either shifting or reduction would
-allow the parse to complete, but with different results.
-
-   To decide which one Bison should do, we must consider the results.
-If the next operator token OP is shifted, then it must be reduced first
-in order to permit another opportunity to reduce the difference.  The
-result is (in effect) `1 - (2 OP 3)'.  On the other hand, if the
-subtraction is reduced before shifting OP, the result is
-`(1 - 2) OP 3'.  Clearly, then, the choice of shift or reduce should
-depend on the relative precedence of the operators `-' and OP: `*'
-should be shifted first, but not `<'.
-
-   What about input such as `1 - 2 - 5'; should this be `(1 - 2) - 5'
-or should it be `1 - (2 - 5)'?  For most operators we prefer the
-former, which is called "left association".  The latter alternative,
-"right association", is desirable for assignment operators.  The choice
-of left or right association is a matter of whether the parser chooses
-to shift or reduce when the stack contains `1 - 2' and the lookahead
-token is `-': shifting makes right-associativity.
-
-\1f
-File: bison.info,  Node: Using Precedence,  Next: Precedence Examples,  Prev: Why Precedence,  Up: Precedence
-
-5.3.2 Specifying Operator Precedence
-------------------------------------
-
-Bison allows you to specify these choices with the operator precedence
-declarations `%left' and `%right'.  Each such declaration contains a
-list of tokens, which are operators whose precedence and associativity
-is being declared.  The `%left' declaration makes all those operators
-left-associative and the `%right' declaration makes them
-right-associative.  A third alternative is `%nonassoc', which declares
-that it is a syntax error to find the same operator twice "in a row".
-
-   The relative precedence of different operators is controlled by the
-order in which they are declared.  The first `%left' or `%right'
-declaration in the file declares the operators whose precedence is
-lowest, the next such declaration declares the operators whose
-precedence is a little higher, and so on.
-
-\1f
-File: bison.info,  Node: Precedence Examples,  Next: How Precedence,  Prev: Using Precedence,  Up: Precedence
-
-5.3.3 Precedence Examples
--------------------------
-
-In our example, we would want the following declarations:
-
-     %left '<'
-     %left '-'
-     %left '*'
-
-   In a more complete example, which supports other operators as well,
-we would declare them in groups of equal precedence.  For example,
-`'+'' is declared with `'-'':
-
-     %left '<' '>' '=' NE LE GE
-     %left '+' '-'
-     %left '*' '/'
-
-(Here `NE' and so on stand for the operators for "not equal" and so on.
-We assume that these tokens are more than one character long and
-therefore are represented by names, not character literals.)
-
-\1f
-File: bison.info,  Node: How Precedence,  Prev: Precedence Examples,  Up: Precedence
-
-5.3.4 How Precedence Works
---------------------------
-
-The first effect of the precedence declarations is to assign precedence
-levels to the terminal symbols declared.  The second effect is to assign
-precedence levels to certain rules: each rule gets its precedence from
-the last terminal symbol mentioned in the components.  (You can also
-specify explicitly the precedence of a rule.  *Note Context-Dependent
-Precedence: Contextual Precedence.)
-
-   Finally, the resolution of conflicts works by comparing the
-precedence of the rule being considered with that of the lookahead
-token.  If the token's precedence is higher, the choice is to shift.
-If the rule's precedence is higher, the choice is to reduce.  If they
-have equal precedence, the choice is made based on the associativity of
-that precedence level.  The verbose output file made by `-v' (*note
-Invoking Bison: Invocation.) says how each conflict was resolved.
-
-   Not all rules and not all tokens have precedence.  If either the
-rule or the lookahead token has no precedence, then the default is to
-shift.
-
-\1f
-File: bison.info,  Node: Contextual Precedence,  Next: Parser States,  Prev: Precedence,  Up: Algorithm
-
-5.4 Context-Dependent Precedence
-================================
-
-Often the precedence of an operator depends on the context.  This sounds
-outlandish at first, but it is really very common.  For example, a minus
-sign typically has a very high precedence as a unary operator, and a
-somewhat lower precedence (lower than multiplication) as a binary
-operator.
-
-   The Bison precedence declarations, `%left', `%right' and
-`%nonassoc', can only be used once for a given token; so a token has
-only one precedence declared in this way.  For context-dependent
-precedence, you need to use an additional mechanism: the `%prec'
-modifier for rules.
-
-   The `%prec' modifier declares the precedence of a particular rule by
-specifying a terminal symbol whose precedence should be used for that
-rule.  It's not necessary for that symbol to appear otherwise in the
-rule.  The modifier's syntax is:
-
-     %prec TERMINAL-SYMBOL
-
-and it is written after the components of the rule.  Its effect is to
-assign the rule the precedence of TERMINAL-SYMBOL, overriding the
-precedence that would be deduced for it in the ordinary way.  The
-altered rule precedence then affects how conflicts involving that rule
-are resolved (*note Operator Precedence: Precedence.).
-
-   Here is how `%prec' solves the problem of unary minus.  First,
-declare a precedence for a fictitious terminal symbol named `UMINUS'.
-There are no tokens of this type, but the symbol serves to stand for its
-precedence:
-
-     ...
-     %left '+' '-'
-     %left '*'
-     %left UMINUS
-
-   Now the precedence of `UMINUS' can be used in specific rules:
-
-     exp:
-       ...
-     | exp '-' exp
-       ...
-     | '-' exp %prec UMINUS
-
-\1f
-File: bison.info,  Node: Parser States,  Next: Reduce/Reduce,  Prev: Contextual Precedence,  Up: Algorithm
-
-5.5 Parser States
-=================
-
-The function `yyparse' is implemented using a finite-state machine.
-The values pushed on the parser stack are not simply token type codes;
-they represent the entire sequence of terminal and nonterminal symbols
-at or near the top of the stack.  The current state collects all the
-information about previous input which is relevant to deciding what to
-do next.
-
-   Each time a lookahead token is read, the current parser state
-together with the type of lookahead token are looked up in a table.
-This table entry can say, "Shift the lookahead token."  In this case,
-it also specifies the new parser state, which is pushed onto the top of
-the parser stack.  Or it can say, "Reduce using rule number N."  This
-means that a certain number of tokens or groupings are taken off the
-top of the stack, and replaced by one grouping.  In other words, that
-number of states are popped from the stack, and one new state is pushed.
-
-   There is one other alternative: the table can say that the lookahead
-token is erroneous in the current state.  This causes error processing
-to begin (*note Error Recovery::).
-
-\1f
-File: bison.info,  Node: Reduce/Reduce,  Next: Mysterious Conflicts,  Prev: Parser States,  Up: Algorithm
-
-5.6 Reduce/Reduce Conflicts
-===========================
-
-A reduce/reduce conflict occurs if there are two or more rules that
-apply to the same sequence of input.  This usually indicates a serious
-error in the grammar.
-
-   For example, here is an erroneous attempt to define a sequence of
-zero or more `word' groupings.
-
-     sequence:
-       /* empty */    { printf ("empty sequence\n"); }
-     | maybeword
-     | sequence word  { printf ("added word %s\n", $2); }
-     ;
-
-     maybeword:
-       /* empty */   { printf ("empty maybeword\n"); }
-     | word          { printf ("single word %s\n", $1); }
-     ;
-
-The error is an ambiguity: there is more than one way to parse a single
-`word' into a `sequence'.  It could be reduced to a `maybeword' and
-then into a `sequence' via the second rule.  Alternatively,
-nothing-at-all could be reduced into a `sequence' via the first rule,
-and this could be combined with the `word' using the third rule for
-`sequence'.
-
-   There is also more than one way to reduce nothing-at-all into a
-`sequence'.  This can be done directly via the first rule, or
-indirectly via `maybeword' and then the second rule.
-
-   You might think that this is a distinction without a difference,
-because it does not change whether any particular input is valid or
-not.  But it does affect which actions are run.  One parsing order runs
-the second rule's action; the other runs the first rule's action and
-the third rule's action.  In this example, the output of the program
-changes.
-
-   Bison resolves a reduce/reduce conflict by choosing to use the rule
-that appears first in the grammar, but it is very risky to rely on
-this.  Every reduce/reduce conflict must be studied and usually
-eliminated.  Here is the proper way to define `sequence':
-
-     sequence:
-       /* empty */    { printf ("empty sequence\n"); }
-     | sequence word  { printf ("added word %s\n", $2); }
-     ;
-
-   Here is another common error that yields a reduce/reduce conflict:
-
-     sequence:
-       /* empty */
-     | sequence words
-     | sequence redirects
-     ;
-
-     words:
-       /* empty */
-     | words word
-     ;
-
-     redirects:
-       /* empty */
-     | redirects redirect
-     ;
-
-The intention here is to define a sequence which can contain either
-`word' or `redirect' groupings.  The individual definitions of
-`sequence', `words' and `redirects' are error-free, but the three
-together make a subtle ambiguity: even an empty input can be parsed in
-infinitely many ways!
-
-   Consider: nothing-at-all could be a `words'.  Or it could be two
-`words' in a row, or three, or any number.  It could equally well be a
-`redirects', or two, or any number.  Or it could be a `words' followed
-by three `redirects' and another `words'.  And so on.
-
-   Here are two ways to correct these rules.  First, to make it a
-single level of sequence:
-
-     sequence:
-       /* empty */
-     | sequence word
-     | sequence redirect
-     ;
-
-   Second, to prevent either a `words' or a `redirects' from being
-empty:
-
-     sequence:
-       /* empty */
-     | sequence words
-     | sequence redirects
-     ;
-
-     words:
-       word
-     | words word
-     ;
-
-     redirects:
-       redirect
-     | redirects redirect
-     ;
-
-\1f
-File: bison.info,  Node: Mysterious Conflicts,  Next: Tuning LR,  Prev: Reduce/Reduce,  Up: Algorithm
-
-5.7 Mysterious Conflicts
-========================
-
-Sometimes reduce/reduce conflicts can occur that don't look warranted.
-Here is an example:
-
-     %token ID
-
-     %%
-     def: param_spec return_spec ',';
-     param_spec:
-       type
-     | name_list ':' type
-     ;
-     return_spec:
-       type
-     | name ':' type
-     ;
-     type: ID;
-     name: ID;
-     name_list:
-       name
-     | name ',' name_list
-     ;
-
-   It would seem that this grammar can be parsed with only a single
-token of lookahead: when a `param_spec' is being read, an `ID' is a
-`name' if a comma or colon follows, or a `type' if another `ID'
-follows.  In other words, this grammar is LR(1).
-
-   However, for historical reasons, Bison cannot by default handle all
-LR(1) grammars.  In this grammar, two contexts, that after an `ID' at
-the beginning of a `param_spec' and likewise at the beginning of a
-`return_spec', are similar enough that Bison assumes they are the same.
-They appear similar because the same set of rules would be active--the
-rule for reducing to a `name' and that for reducing to a `type'.  Bison
-is unable to determine at that stage of processing that the rules would
-require different lookahead tokens in the two contexts, so it makes a
-single parser state for them both.  Combining the two contexts causes a
-conflict later.  In parser terminology, this occurrence means that the
-grammar is not LALR(1).
-
-   For many practical grammars (specifically those that fall into the
-non-LR(1) class), the limitations of LALR(1) result in difficulties
-beyond just mysterious reduce/reduce conflicts.  The best way to fix
-all these problems is to select a different parser table construction
-algorithm.  Either IELR(1) or canonical LR(1) would suffice, but the
-former is more efficient and easier to debug during development.  *Note
-LR Table Construction::, for details.  (Bison's IELR(1) and canonical
-LR(1) implementations are experimental.  More user feedback will help
-to stabilize them.)
-
-   If you instead wish to work around LALR(1)'s limitations, you can
-often fix a mysterious conflict by identifying the two parser states
-that are being confused, and adding something to make them look
-distinct.  In the above example, adding one rule to `return_spec' as
-follows makes the problem go away:
-
-     %token BOGUS
-     ...
-     %%
-     ...
-     return_spec:
-       type
-     | name ':' type
-     | ID BOGUS       /* This rule is never used.  */
-     ;
-
-   This corrects the problem because it introduces the possibility of an
-additional active rule in the context after the `ID' at the beginning of
-`return_spec'.  This rule is not active in the corresponding context in
-a `param_spec', so the two contexts receive distinct parser states.  As
-long as the token `BOGUS' is never generated by `yylex', the added rule
-cannot alter the way actual input is parsed.
-
-   In this particular example, there is another way to solve the
-problem: rewrite the rule for `return_spec' to use `ID' directly
-instead of via `name'.  This also causes the two confusing contexts to
-have different sets of active rules, because the one for `return_spec'
-activates the altered rule for `return_spec' rather than the one for
-`name'.
-
-     param_spec:
-       type
-     | name_list ':' type
-     ;
-     return_spec:
-       type
-     | ID ':' type
-     ;
-
-   For a more detailed exposition of LALR(1) parsers and parser
-generators, *note DeRemer 1982: Bibliography.
-
-\1f
-File: bison.info,  Node: Tuning LR,  Next: Generalized LR Parsing,  Prev: Mysterious Conflicts,  Up: Algorithm
-
-5.8 Tuning LR
-=============
-
-The default behavior of Bison's LR-based parsers is chosen mostly for
-historical reasons, but that behavior is often not robust.  For
-example, in the previous section, we discussed the mysterious conflicts
-that can be produced by LALR(1), Bison's default parser table
-construction algorithm.  Another example is Bison's `%error-verbose'
-directive, which instructs the generated parser to produce verbose
-syntax error messages, which can sometimes contain incorrect
-information.
-
-   In this section, we explore several modern features of Bison that
-allow you to tune fundamental aspects of the generated LR-based
-parsers.  Some of these features easily eliminate shortcomings like
-those mentioned above.  Others can be helpful purely for understanding
-your parser.
-
-   Most of the features discussed in this section are still
-experimental.  More user feedback will help to stabilize them.
-
-* Menu:
-
-* LR Table Construction:: Choose a different construction algorithm.
-* Default Reductions::    Disable default reductions.
-* LAC::                   Correct lookahead sets in the parser states.
-* Unreachable States::    Keep unreachable parser states for debugging.
-
-\1f
-File: bison.info,  Node: LR Table Construction,  Next: Default Reductions,  Up: Tuning LR
-
-5.8.1 LR Table Construction
----------------------------
-
-For historical reasons, Bison constructs LALR(1) parser tables by
-default.  However, LALR does not possess the full language-recognition
-power of LR.  As a result, the behavior of parsers employing LALR
-parser tables is often mysterious.  We presented a simple example of
-this effect in *note Mysterious Conflicts::.
-
-   As we also demonstrated in that example, the traditional approach to
-eliminating such mysterious behavior is to restructure the grammar.
-Unfortunately, doing so correctly is often difficult.  Moreover, merely
-discovering that LALR causes mysterious behavior in your parser can be
-difficult as well.
-
-   Fortunately, Bison provides an easy way to eliminate the possibility
-of such mysterious behavior altogether.  You simply need to activate a
-more powerful parser table construction algorithm by using the `%define
-lr.type' directive.
-
- -- Directive: %define lr.type TYPE
-     Specify the type of parser tables within the LR(1) family.  The
-     accepted values for TYPE are:
-
-        * `lalr' (default)
-
-        * `ielr'
-
-        * `canonical-lr'
-
-     (This feature is experimental. More user feedback will help to
-     stabilize it.)
-
-   For example, to activate IELR, you might add the following directive
-to you grammar file:
-
-     %define lr.type ielr
-
-For the example in *note Mysterious Conflicts::, the mysterious
-conflict is then eliminated, so there is no need to invest time in
-comprehending the conflict or restructuring the grammar to fix it.  If,
-during future development, the grammar evolves such that all mysterious
-behavior would have disappeared using just LALR, you need not fear that
-continuing to use IELR will result in unnecessarily large parser tables.
-That is, IELR generates LALR tables when LALR (using a deterministic
-parsing algorithm) is sufficient to support the full
-language-recognition power of LR.  Thus, by enabling IELR at the start
-of grammar development, you can safely and completely eliminate the
-need to consider LALR's shortcomings.
-
-   While IELR is almost always preferable, there are circumstances
-where LALR or the canonical LR parser tables described by Knuth (*note
-Knuth 1965: Bibliography.) can be useful.  Here we summarize the
-relative advantages of each parser table construction algorithm within
-Bison:
-
-   * LALR
-
-     There are at least two scenarios where LALR can be worthwhile:
-
-        * GLR without static conflict resolution.
-
-          When employing GLR parsers (*note GLR Parsers::), if you do
-          not resolve any conflicts statically (for example, with
-          `%left' or `%prec'), then the parser explores all potential
-          parses of any given input.  In this case, the choice of
-          parser table construction algorithm is guaranteed not to alter
-          the language accepted by the parser.  LALR parser tables are
-          the smallest parser tables Bison can currently construct, so
-          they may then be preferable.  Nevertheless, once you begin to
-          resolve conflicts statically, GLR behaves more like a
-          deterministic parser in the syntactic contexts where those
-          conflicts appear, and so either IELR or canonical LR can then
-          be helpful to avoid LALR's mysterious behavior.
-
-        * Malformed grammars.
-
-          Occasionally during development, an especially malformed
-          grammar with a major recurring flaw may severely impede the
-          IELR or canonical LR parser table construction algorithm.
-          LALR can be a quick way to construct parser tables in order
-          to investigate such problems while ignoring the more subtle
-          differences from IELR and canonical LR.
-
-   * IELR
-
-     IELR (Inadequacy Elimination LR) is a minimal LR algorithm.  That
-     is, given any grammar (LR or non-LR), parsers using IELR or
-     canonical LR parser tables always accept exactly the same set of
-     sentences.  However, like LALR, IELR merges parser states during
-     parser table construction so that the number of parser states is
-     often an order of magnitude less than for canonical LR.  More
-     importantly, because canonical LR's extra parser states may contain
-     duplicate conflicts in the case of non-LR grammars, the number of
-     conflicts for IELR is often an order of magnitude less as well.
-     This effect can significantly reduce the complexity of developing
-     a grammar.
-
-   * Canonical LR
-
-     While inefficient, canonical LR parser tables can be an
-     interesting means to explore a grammar because they possess a
-     property that IELR and LALR tables do not.  That is, if
-     `%nonassoc' is not used and default reductions are left disabled
-     (*note Default Reductions::), then, for every left context of
-     every canonical LR state, the set of tokens accepted by that state
-     is guaranteed to be the exact set of tokens that is syntactically
-     acceptable in that left context.  It might then seem that an
-     advantage of canonical LR parsers in production is that, under the
-     above constraints, they are guaranteed to detect a syntax error as
-     soon as possible without performing any unnecessary reductions.
-     However, IELR parsers that use LAC are also able to achieve this
-     behavior without sacrificing `%nonassoc' or default reductions.
-     For details and a few caveats of LAC, *note LAC::.
-
-   For a more detailed exposition of the mysterious behavior in LALR
-parsers and the benefits of IELR, *note Denny 2008 March: Bibliography,
-and *note Denny 2010 November: Bibliography.
-
-\1f
-File: bison.info,  Node: Default Reductions,  Next: LAC,  Prev: LR Table Construction,  Up: Tuning LR
-
-5.8.2 Default Reductions
-------------------------
-
-After parser table construction, Bison identifies the reduction with the
-largest lookahead set in each parser state.  To reduce the size of the
-parser state, traditional Bison behavior is to remove that lookahead
-set and to assign that reduction to be the default parser action.  Such
-a reduction is known as a "default reduction".
-
-   Default reductions affect more than the size of the parser tables.
-They also affect the behavior of the parser:
-
-   * Delayed `yylex' invocations.
-
-     A "consistent state" is a state that has only one possible parser
-     action.  If that action is a reduction and is encoded as a default
-     reduction, then that consistent state is called a "defaulted
-     state".  Upon reaching a defaulted state, a Bison-generated parser
-     does not bother to invoke `yylex' to fetch the next token before
-     performing the reduction.  In other words, whether default
-     reductions are enabled in consistent states determines how soon a
-     Bison-generated parser invokes `yylex' for a token: immediately
-     when it _reaches_ that token in the input or when it eventually
-     _needs_ that token as a lookahead to determine the next parser
-     action.  Traditionally, default reductions are enabled, and so the
-     parser exhibits the latter behavior.
-
-     The presence of defaulted states is an important consideration when
-     designing `yylex' and the grammar file.  That is, if the behavior
-     of `yylex' can influence or be influenced by the semantic actions
-     associated with the reductions in defaulted states, then the delay
-     of the next `yylex' invocation until after those reductions is
-     significant.  For example, the semantic actions might pop a scope
-     stack that `yylex' uses to determine what token to return.  Thus,
-     the delay might be necessary to ensure that `yylex' does not look
-     up the next token in a scope that should already be considered
-     closed.
-
-   * Delayed syntax error detection.
-
-     When the parser fetches a new token by invoking `yylex', it checks
-     whether there is an action for that token in the current parser
-     state.  The parser detects a syntax error if and only if either
-     (1) there is no action for that token or (2) the action for that
-     token is the error action (due to the use of `%nonassoc').
-     However, if there is a default reduction in that state (which
-     might or might not be a defaulted state), then it is impossible
-     for condition 1 to exist.  That is, all tokens have an action.
-     Thus, the parser sometimes fails to detect the syntax error until
-     it reaches a later state.
-
-     While default reductions never cause the parser to accept
-     syntactically incorrect sentences, the delay of syntax error
-     detection can have unexpected effects on the behavior of the
-     parser.  However, the delay can be caused anyway by parser state
-     merging and the use of `%nonassoc', and it can be fixed by another
-     Bison feature, LAC.  We discuss the effects of delayed syntax
-     error detection and LAC more in the next section (*note LAC::).
-
-   For canonical LR, the only default reduction that Bison enables by
-default is the accept action, which appears only in the accepting
-state, which has no other action and is thus a defaulted state.
-However, the default accept action does not delay any `yylex'
-invocation or syntax error detection because the accept action ends the
-parse.
-
-   For LALR and IELR, Bison enables default reductions in nearly all
-states by default.  There are only two exceptions.  First, states that
-have a shift action on the `error' token do not have default reductions
-because delayed syntax error detection could then prevent the `error'
-token from ever being shifted in that state.  However, parser state
-merging can cause the same effect anyway, and LAC fixes it in both
-cases, so future versions of Bison might drop this exception when LAC
-is activated.  Second, GLR parsers do not record the default reduction
-as the action on a lookahead token for which there is a conflict.  The
-correct action in this case is to split the parse instead.
-
-   To adjust which states have default reductions enabled, use the
-`%define lr.default-reductions' directive.
-
- -- Directive: %define lr.default-reductions WHERE
-     Specify the kind of states that are permitted to contain default
-     reductions.  The accepted values of WHERE are:
-        * `most' (default for LALR and IELR)
-
-        * `consistent'
-
-        * `accepting' (default for canonical LR)
-
-     (The ability to specify where default reductions are permitted is
-     experimental.  More user feedback will help to stabilize it.)
-
-\1f
-File: bison.info,  Node: LAC,  Next: Unreachable States,  Prev: Default Reductions,  Up: Tuning LR
-
-5.8.3 LAC
----------
-
-Canonical LR, IELR, and LALR can suffer from a couple of problems upon
-encountering a syntax error.  First, the parser might perform additional
-parser stack reductions before discovering the syntax error.  Such
-reductions can perform user semantic actions that are unexpected because
-they are based on an invalid token, and they cause error recovery to
-begin in a different syntactic context than the one in which the
-invalid token was encountered.  Second, when verbose error messages are
-enabled (*note Error Reporting::), the expected token list in the
-syntax error message can both contain invalid tokens and omit valid
-tokens.
-
-   The culprits for the above problems are `%nonassoc', default
-reductions in inconsistent states (*note Default Reductions::), and
-parser state merging.  Because IELR and LALR merge parser states, they
-suffer the most.  Canonical LR can suffer only if `%nonassoc' is used
-or if default reductions are enabled for inconsistent states.
-
-   LAC (Lookahead Correction) is a new mechanism within the parsing
-algorithm that solves these problems for canonical LR, IELR, and LALR
-without sacrificing `%nonassoc', default reductions, or state merging.
-You can enable LAC with the `%define parse.lac' directive.
-
- -- Directive: %define parse.lac VALUE
-     Enable LAC to improve syntax error handling.
-        * `none' (default)
-
-        * `full'
-     (This feature is experimental.  More user feedback will help to
-     stabilize it.  Moreover, it is currently only available for
-     deterministic parsers in C.)
-
-   Conceptually, the LAC mechanism is straight-forward.  Whenever the
-parser fetches a new token from the scanner so that it can determine
-the next parser action, it immediately suspends normal parsing and
-performs an exploratory parse using a temporary copy of the normal
-parser state stack.  During this exploratory parse, the parser does not
-perform user semantic actions.  If the exploratory parse reaches a
-shift action, normal parsing then resumes on the normal parser stacks.
-If the exploratory parse reaches an error instead, the parser reports a
-syntax error.  If verbose syntax error messages are enabled, the parser
-must then discover the list of expected tokens, so it performs a
-separate exploratory parse for each token in the grammar.
-
-   There is one subtlety about the use of LAC.  That is, when in a
-consistent parser state with a default reduction, the parser will not
-attempt to fetch a token from the scanner because no lookahead is
-needed to determine the next parser action.  Thus, whether default
-reductions are enabled in consistent states (*note Default
-Reductions::) affects how soon the parser detects a syntax error:
-immediately when it _reaches_ an erroneous token or when it eventually
-_needs_ that token as a lookahead to determine the next parser action.
-The latter behavior is probably more intuitive, so Bison currently
-provides no way to achieve the former behavior while default reductions
-are enabled in consistent states.
-
-   Thus, when LAC is in use, for some fixed decision of whether to
-enable default reductions in consistent states, canonical LR and IELR
-behave almost exactly the same for both syntactically acceptable and
-syntactically unacceptable input.  While LALR still does not support
-the full language-recognition power of canonical LR and IELR, LAC at
-least enables LALR's syntax error handling to correctly reflect LALR's
-language-recognition power.
-
-   There are a few caveats to consider when using LAC:
-
-   * Infinite parsing loops.
-
-     IELR plus LAC does have one shortcoming relative to canonical LR.
-     Some parsers generated by Bison can loop infinitely.  LAC does not
-     fix infinite parsing loops that occur between encountering a
-     syntax error and detecting it, but enabling canonical LR or
-     disabling default reductions sometimes does.
-
-   * Verbose error message limitations.
-
-     Because of internationalization considerations, Bison-generated
-     parsers limit the size of the expected token list they are willing
-     to report in a verbose syntax error message.  If the number of
-     expected tokens exceeds that limit, the list is simply dropped
-     from the message.  Enabling LAC can increase the size of the list
-     and thus cause the parser to drop it.  Of course, dropping the
-     list is better than reporting an incorrect list.
-
-   * Performance.
-
-     Because LAC requires many parse actions to be performed twice, it
-     can have a performance penalty.  However, not all parse actions
-     must be performed twice.  Specifically, during a series of default
-     reductions in consistent states and shift actions, the parser
-     never has to initiate an exploratory parse.  Moreover, the most
-     time-consuming tasks in a parse are often the file I/O, the
-     lexical analysis performed by the scanner, and the user's semantic
-     actions, but none of these are performed during the exploratory
-     parse.  Finally, the base of the temporary stack used during an
-     exploratory parse is a pointer into the normal parser state stack
-     so that the stack is never physically copied.  In our experience,
-     the performance penalty of LAC has proved insignificant for
-     practical grammars.
-
-   While the LAC algorithm shares techniques that have been recognized
-in the parser community for years, for the publication that introduces
-LAC, *note Denny 2010 May: Bibliography.
-
-\1f
-File: bison.info,  Node: Unreachable States,  Prev: LAC,  Up: Tuning LR
-
-5.8.4 Unreachable States
-------------------------
-
-If there exists no sequence of transitions from the parser's start
-state to some state S, then Bison considers S to be an "unreachable
-state".  A state can become unreachable during conflict resolution if
-Bison disables a shift action leading to it from a predecessor state.
-
-   By default, Bison removes unreachable states from the parser after
-conflict resolution because they are useless in the generated parser.
-However, keeping unreachable states is sometimes useful when trying to
-understand the relationship between the parser and the grammar.
-
- -- Directive: %define lr.keep-unreachable-states VALUE
-     Request that Bison allow unreachable states to remain in the
-     parser tables.  VALUE must be a Boolean.  The default is `false'.
-
-   There are a few caveats to consider:
-
-   * Missing or extraneous warnings.
-
-     Unreachable states may contain conflicts and may use rules not
-     used in any other state.  Thus, keeping unreachable states may
-     induce warnings that are irrelevant to your parser's behavior, and
-     it may eliminate warnings that are relevant.  Of course, the
-     change in warnings may actually be relevant to a parser table
-     analysis that wants to keep unreachable states, so this behavior
-     will likely remain in future Bison releases.
-
-   * Other useless states.
-
-     While Bison is able to remove unreachable states, it is not
-     guaranteed to remove other kinds of useless states.  Specifically,
-     when Bison disables reduce actions during conflict resolution,
-     some goto actions may become useless, and thus some additional
-     states may become useless.  If Bison were to compute which goto
-     actions were useless and then disable those actions, it could
-     identify such states as unreachable and then remove those states.
-     However, Bison does not compute which goto actions are useless.
-
-\1f
-File: bison.info,  Node: Generalized LR Parsing,  Next: Memory Management,  Prev: Tuning LR,  Up: Algorithm
-
-5.9 Generalized LR (GLR) Parsing
-================================
-
-Bison produces _deterministic_ parsers that choose uniquely when to
-reduce and which reduction to apply based on a summary of the preceding
-input and on one extra token of lookahead.  As a result, normal Bison
-handles a proper subset of the family of context-free languages.
-Ambiguous grammars, since they have strings with more than one possible
-sequence of reductions cannot have deterministic parsers in this sense.
-The same is true of languages that require more than one symbol of
-lookahead, since the parser lacks the information necessary to make a
-decision at the point it must be made in a shift-reduce parser.
-Finally, as previously mentioned (*note Mysterious Conflicts::), there
-are languages where Bison's default choice of how to summarize the
-input seen so far loses necessary information.
-
-   When you use the `%glr-parser' declaration in your grammar file,
-Bison generates a parser that uses a different algorithm, called
-Generalized LR (or GLR).  A Bison GLR parser uses the same basic
-algorithm for parsing as an ordinary Bison parser, but behaves
-differently in cases where there is a shift-reduce conflict that has not
-been resolved by precedence rules (*note Precedence::) or a
-reduce-reduce conflict.  When a GLR parser encounters such a situation,
-it effectively _splits_ into a several parsers, one for each possible
-shift or reduction.  These parsers then proceed as usual, consuming
-tokens in lock-step.  Some of the stacks may encounter other conflicts
-and split further, with the result that instead of a sequence of states,
-a Bison GLR parsing stack is what is in effect a tree of states.
-
-   In effect, each stack represents a guess as to what the proper parse
-is.  Additional input may indicate that a guess was wrong, in which case
-the appropriate stack silently disappears.  Otherwise, the semantics
-actions generated in each stack are saved, rather than being executed
-immediately.  When a stack disappears, its saved semantic actions never
-get executed.  When a reduction causes two stacks to become equivalent,
-their sets of semantic actions are both saved with the state that
-results from the reduction.  We say that two stacks are equivalent when
-they both represent the same sequence of states, and each pair of
-corresponding states represents a grammar symbol that produces the same
-segment of the input token stream.
-
-   Whenever the parser makes a transition from having multiple states
-to having one, it reverts to the normal deterministic parsing
-algorithm, after resolving and executing the saved-up actions.  At this
-transition, some of the states on the stack will have semantic values
-that are sets (actually multisets) of possible actions.  The parser
-tries to pick one of the actions by first finding one whose rule has
-the highest dynamic precedence, as set by the `%dprec' declaration.
-Otherwise, if the alternative actions are not ordered by precedence,
-but there the same merging function is declared for both rules by the
-`%merge' declaration, Bison resolves and evaluates both and then calls
-the merge function on the result.  Otherwise, it reports an ambiguity.
-
-   It is possible to use a data structure for the GLR parsing tree that
-permits the processing of any LR(1) grammar in linear time (in the size
-of the input), any unambiguous (not necessarily LR(1)) grammar in
-quadratic worst-case time, and any general (possibly ambiguous)
-context-free grammar in cubic worst-case time.  However, Bison currently
-uses a simpler data structure that requires time proportional to the
-length of the input times the maximum number of stacks required for any
-prefix of the input.  Thus, really ambiguous or nondeterministic
-grammars can require exponential time and space to process.  Such badly
-behaving examples, however, are not generally of practical interest.
-Usually, nondeterminism in a grammar is local--the parser is "in doubt"
-only for a few tokens at a time.  Therefore, the current data structure
-should generally be adequate.  On LR(1) portions of a grammar, in
-particular, it is only slightly slower than with the deterministic
-LR(1) Bison parser.
-
-   For a more detailed exposition of GLR parsers, *note Scott 2000:
-Bibliography.
-
diff --git a/doc/bison.info-2 b/doc/bison.info-2
deleted file mode 100644 (file)
index 018cab7..0000000
+++ /dev/null
@@ -1,4862 +0,0 @@
-This is bison.info, produced by makeinfo version 4.13 from
-/Users/akim/src/gnu/bison-2.5/doc/bison.texi.
-
-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.
-
-     Permission is granted to copy, distribute and/or modify this
-     document under the terms of the GNU Free Documentation License,
-     Version 1.3 or any later version published by the Free Software
-     Foundation; with no Invariant Sections, with the Front-Cover texts
-     being "A GNU Manual," and with the Back-Cover Texts as in (a)
-     below.  A copy of the license is included in the section entitled
-     "GNU Free Documentation License."
-
-     (a) The FSF's Back-Cover Text is: "You have the freedom to copy and
-     modify this GNU manual.  Buying copies from the FSF supports it in
-     developing GNU and promoting software freedom."
-
-INFO-DIR-SECTION Software development
-START-INFO-DIR-ENTRY
-* bison: (bison).       GNU parser generator (Yacc replacement).
-END-INFO-DIR-ENTRY
-
-\1f
-File: bison.info,  Node: Memory Management,  Prev: Generalized LR Parsing,  Up: Algorithm
-
-5.10 Memory Management, and How to Avoid Memory Exhaustion
-==========================================================
-
-The Bison parser stack can run out of memory if too many tokens are
-shifted and not reduced.  When this happens, the parser function
-`yyparse' calls `yyerror' and then returns 2.
-
-   Because Bison parsers have growing stacks, hitting the upper limit
-usually results from using a right recursion instead of a left
-recursion, see *note Recursive Rules: Recursion.
-
-   By defining the macro `YYMAXDEPTH', you can control how deep the
-parser stack can become before memory is exhausted.  Define the macro
-with a value that is an integer.  This value is the maximum number of
-tokens that can be shifted (and not reduced) before overflow.
-
-   The stack space allowed is not necessarily allocated.  If you
-specify a large value for `YYMAXDEPTH', the parser normally allocates a
-small stack at first, and then makes it bigger by stages as needed.
-This increasing allocation happens automatically and silently.
-Therefore, you do not need to make `YYMAXDEPTH' painfully small merely
-to save space for ordinary inputs that do not need much stack.
-
-   However, do not allow `YYMAXDEPTH' to be a value so large that
-arithmetic overflow could occur when calculating the size of the stack
-space.  Also, do not allow `YYMAXDEPTH' to be less than `YYINITDEPTH'.
-
-   The default value of `YYMAXDEPTH', if you do not define it, is 10000.
-
-   You can control how much stack is allocated initially by defining the
-macro `YYINITDEPTH' to a positive integer.  For the deterministic
-parser in C, this value must be a compile-time constant unless you are
-assuming C99 or some other target language or compiler that allows
-variable-length arrays.  The default is 200.
-
-   Do not allow `YYINITDEPTH' to be greater than `YYMAXDEPTH'.
-
-   Because of semantic differences between C and C++, the deterministic
-parsers in C produced by Bison cannot grow when compiled by C++
-compilers.  In this precise case (compiling a C parser as C++) you are
-suggested to grow `YYINITDEPTH'.  The Bison maintainers hope to fix
-this deficiency in a future release.
-
-\1f
-File: bison.info,  Node: Error Recovery,  Next: Context Dependency,  Prev: Algorithm,  Up: Top
-
-6 Error Recovery
-****************
-
-It is not usually acceptable to have a program terminate on a syntax
-error.  For example, a compiler should recover sufficiently to parse the
-rest of the input file and check it for errors; a calculator should
-accept another expression.
-
-   In a simple interactive command parser where each input is one line,
-it may be sufficient to allow `yyparse' to return 1 on error and have
-the caller ignore the rest of the input line when that happens (and
-then call `yyparse' again).  But this is inadequate for a compiler,
-because it forgets all the syntactic context leading up to the error.
-A syntax error deep within a function in the compiler input should not
-cause the compiler to treat the following line like the beginning of a
-source file.
-
-   You can define how to recover from a syntax error by writing rules to
-recognize the special token `error'.  This is a terminal symbol that is
-always defined (you need not declare it) and reserved for error
-handling.  The Bison parser generates an `error' token whenever a
-syntax error happens; if you have provided a rule to recognize this
-token in the current context, the parse can continue.
-
-   For example:
-
-     stmts:
-       /* empty string */
-     | stmts '\n'
-     | stmts exp '\n'
-     | stmts error '\n'
-
-   The fourth rule in this example says that an error followed by a
-newline makes a valid addition to any `stmts'.
-
-   What happens if a syntax error occurs in the middle of an `exp'?  The
-error recovery rule, interpreted strictly, applies to the precise
-sequence of a `stmts', an `error' and a newline.  If an error occurs in
-the middle of an `exp', there will probably be some additional tokens
-and subexpressions on the stack after the last `stmts', and there will
-be tokens to read before the next newline.  So the rule is not
-applicable in the ordinary way.
-
-   But Bison can force the situation to fit the rule, by discarding
-part of the semantic context and part of the input.  First it discards
-states and objects from the stack until it gets back to a state in
-which the `error' token is acceptable.  (This means that the
-subexpressions already parsed are discarded, back to the last complete
-`stmts'.)  At this point the `error' token can be shifted.  Then, if
-the old lookahead token is not acceptable to be shifted next, the
-parser reads tokens and discards them until it finds a token which is
-acceptable.  In this example, Bison reads and discards input until the
-next newline so that the fourth rule can apply.  Note that discarded
-symbols are possible sources of memory leaks, see *note Freeing
-Discarded Symbols: Destructor Decl, for a means to reclaim this memory.
-
-   The choice of error rules in the grammar is a choice of strategies
-for error recovery.  A simple and useful strategy is simply to skip the
-rest of the current input line or current statement if an error is
-detected:
-
-     stmt: error ';'  /* On error, skip until ';' is read.  */
-
-   It is also useful to recover to the matching close-delimiter of an
-opening-delimiter that has already been parsed.  Otherwise the
-close-delimiter will probably appear to be unmatched, and generate
-another, spurious error message:
-
-     primary:
-       '(' expr ')'
-     | '(' error ')'
-     ...
-     ;
-
-   Error recovery strategies are necessarily guesses.  When they guess
-wrong, one syntax error often leads to another.  In the above example,
-the error recovery rule guesses that an error is due to bad input
-within one `stmt'.  Suppose that instead a spurious semicolon is
-inserted in the middle of a valid `stmt'.  After the error recovery
-rule recovers from the first error, another syntax error will be found
-straightaway, since the text following the spurious semicolon is also
-an invalid `stmt'.
-
-   To prevent an outpouring of error messages, the parser will output
-no error message for another syntax error that happens shortly after
-the first; only after three consecutive input tokens have been
-successfully shifted will error messages resume.
-
-   Note that rules which accept the `error' token may have actions, just
-as any other rules can.
-
-   You can make error messages resume immediately by using the macro
-`yyerrok' in an action.  If you do this in the error rule's action, no
-error messages will be suppressed.  This macro requires no arguments;
-`yyerrok;' is a valid C statement.
-
-   The previous lookahead token is reanalyzed immediately after an
-error.  If this is unacceptable, then the macro `yyclearin' may be used
-to clear this token.  Write the statement `yyclearin;' in the error
-rule's action.  *Note Special Features for Use in Actions: Action
-Features.
-
-   For example, suppose that on a syntax error, an error handling
-routine is called that advances the input stream to some point where
-parsing should once again commence.  The next symbol returned by the
-lexical scanner is probably correct.  The previous lookahead token
-ought to be discarded with `yyclearin;'.
-
-   The expression `YYRECOVERING ()' yields 1 when the parser is
-recovering from a syntax error, and 0 otherwise.  Syntax error
-diagnostics are suppressed while recovering from a syntax error.
-
-\1f
-File: bison.info,  Node: Context Dependency,  Next: Debugging,  Prev: Error Recovery,  Up: Top
-
-7 Handling Context Dependencies
-*******************************
-
-The Bison paradigm is to parse tokens first, then group them into larger
-syntactic units.  In many languages, the meaning of a token is affected
-by its context.  Although this violates the Bison paradigm, certain
-techniques (known as "kludges") may enable you to write Bison parsers
-for such languages.
-
-* Menu:
-
-* Semantic Tokens::   Token parsing can depend on the semantic context.
-* Lexical Tie-ins::   Token parsing can depend on the syntactic context.
-* Tie-in Recovery::   Lexical tie-ins have implications for how
-                        error recovery rules must be written.
-
-   (Actually, "kludge" means any technique that gets its job done but is
-neither clean nor robust.)
-
-\1f
-File: bison.info,  Node: Semantic Tokens,  Next: Lexical Tie-ins,  Up: Context Dependency
-
-7.1 Semantic Info in Token Types
-================================
-
-The C language has a context dependency: the way an identifier is used
-depends on what its current meaning is.  For example, consider this:
-
-     foo (x);
-
-   This looks like a function call statement, but if `foo' is a typedef
-name, then this is actually a declaration of `x'.  How can a Bison
-parser for C decide how to parse this input?
-
-   The method used in GNU C is to have two different token types,
-`IDENTIFIER' and `TYPENAME'.  When `yylex' finds an identifier, it
-looks up the current declaration of the identifier in order to decide
-which token type to return: `TYPENAME' if the identifier is declared as
-a typedef, `IDENTIFIER' otherwise.
-
-   The grammar rules can then express the context dependency by the
-choice of token type to recognize.  `IDENTIFIER' is accepted as an
-expression, but `TYPENAME' is not.  `TYPENAME' can start a declaration,
-but `IDENTIFIER' cannot.  In contexts where the meaning of the
-identifier is _not_ significant, such as in declarations that can
-shadow a typedef name, either `TYPENAME' or `IDENTIFIER' is
-accepted--there is one rule for each of the two token types.
-
-   This technique is simple to use if the decision of which kinds of
-identifiers to allow is made at a place close to where the identifier is
-parsed.  But in C this is not always so: C allows a declaration to
-redeclare a typedef name provided an explicit type has been specified
-earlier:
-
-     typedef int foo, bar;
-     int baz (void)
-     {
-       static bar (bar);      /* redeclare `bar' as static variable */
-       extern foo foo (foo);  /* redeclare `foo' as function */
-       return foo (bar);
-     }
-
-   Unfortunately, the name being declared is separated from the
-declaration construct itself by a complicated syntactic structure--the
-"declarator".
-
-   As a result, part of the Bison parser for C needs to be duplicated,
-with all the nonterminal names changed: once for parsing a declaration
-in which a typedef name can be redefined, and once for parsing a
-declaration in which that can't be done.  Here is a part of the
-duplication, with actions omitted for brevity:
-
-     initdcl:
-       declarator maybeasm '=' init
-     | declarator maybeasm
-     ;
-
-     notype_initdcl:
-       notype_declarator maybeasm '=' init
-     | notype_declarator maybeasm
-     ;
-
-Here `initdcl' can redeclare a typedef name, but `notype_initdcl'
-cannot.  The distinction between `declarator' and `notype_declarator'
-is the same sort of thing.
-
-   There is some similarity between this technique and a lexical tie-in
-(described next), in that information which alters the lexical analysis
-is changed during parsing by other parts of the program.  The
-difference is here the information is global, and is used for other
-purposes in the program.  A true lexical tie-in has a special-purpose
-flag controlled by the syntactic context.
-
-\1f
-File: bison.info,  Node: Lexical Tie-ins,  Next: Tie-in Recovery,  Prev: Semantic Tokens,  Up: Context Dependency
-
-7.2 Lexical Tie-ins
-===================
-
-One way to handle context-dependency is the "lexical tie-in": a flag
-which is set by Bison actions, whose purpose is to alter the way tokens
-are parsed.
-
-   For example, suppose we have a language vaguely like C, but with a
-special construct `hex (HEX-EXPR)'.  After the keyword `hex' comes an
-expression in parentheses in which all integers are hexadecimal.  In
-particular, the token `a1b' must be treated as an integer rather than
-as an identifier if it appears in that context.  Here is how you can do
-it:
-
-     %{
-       int hexflag;
-       int yylex (void);
-       void yyerror (char const *);
-     %}
-     %%
-     ...
-     expr:
-       IDENTIFIER
-     | constant
-     | HEX '('        { hexflag = 1; }
-         expr ')'     { hexflag = 0; $$ = $4; }
-     | expr '+' expr  { $$ = make_sum ($1, $3); }
-     ...
-     ;
-
-     constant:
-       INTEGER
-     | STRING
-     ;
-
-Here we assume that `yylex' looks at the value of `hexflag'; when it is
-nonzero, all integers are parsed in hexadecimal, and tokens starting
-with letters are parsed as integers if possible.
-
-   The declaration of `hexflag' shown in the prologue of the grammar
-file is needed to make it accessible to the actions (*note The
-Prologue: Prologue.).  You must also write the code in `yylex' to obey
-the flag.
-
-\1f
-File: bison.info,  Node: Tie-in Recovery,  Prev: Lexical Tie-ins,  Up: Context Dependency
-
-7.3 Lexical Tie-ins and Error Recovery
-======================================
-
-Lexical tie-ins make strict demands on any error recovery rules you
-have.  *Note Error Recovery::.
-
-   The reason for this is that the purpose of an error recovery rule is
-to abort the parsing of one construct and resume in some larger
-construct.  For example, in C-like languages, a typical error recovery
-rule is to skip tokens until the next semicolon, and then start a new
-statement, like this:
-
-     stmt:
-       expr ';'
-     | IF '(' expr ')' stmt { ... }
-     ...
-     | error ';'  { hexflag = 0; }
-     ;
-
-   If there is a syntax error in the middle of a `hex (EXPR)'
-construct, this error rule will apply, and then the action for the
-completed `hex (EXPR)' will never run.  So `hexflag' would remain set
-for the entire rest of the input, or until the next `hex' keyword,
-causing identifiers to be misinterpreted as integers.
-
-   To avoid this problem the error recovery rule itself clears
-`hexflag'.
-
-   There may also be an error recovery rule that works within
-expressions.  For example, there could be a rule which applies within
-parentheses and skips to the close-parenthesis:
-
-     expr:
-       ...
-     | '(' expr ')'   { $$ = $2; }
-     | '(' error ')'
-     ...
-
-   If this rule acts within the `hex' construct, it is not going to
-abort that construct (since it applies to an inner level of parentheses
-within the construct).  Therefore, it should not clear the flag: the
-rest of the `hex' construct should be parsed with the flag still in
-effect.
-
-   What if there is an error recovery rule which might abort out of the
-`hex' construct or might not, depending on circumstances?  There is no
-way you can write the action to determine whether a `hex' construct is
-being aborted or not.  So if you are using a lexical tie-in, you had
-better make sure your error recovery rules are not of this kind.  Each
-rule must be such that you can be sure that it always will, or always
-won't, have to clear the flag.
-
-\1f
-File: bison.info,  Node: Debugging,  Next: Invocation,  Prev: Context Dependency,  Up: Top
-
-8 Debugging Your Parser
-***********************
-
-Developing a parser can be a challenge, especially if you don't
-understand the algorithm (*note The Bison Parser Algorithm:
-Algorithm.).  This chapter explains how to generate and read the
-detailed description of the automaton, and how to enable and understand
-the parser run-time traces.
-
-* Menu:
-
-* Understanding::     Understanding the structure of your parser.
-* Tracing::           Tracing the execution of your parser.
-
-\1f
-File: bison.info,  Node: Understanding,  Next: Tracing,  Up: Debugging
-
-8.1 Understanding Your Parser
-=============================
-
-As documented elsewhere (*note The Bison Parser Algorithm: Algorithm.)
-Bison parsers are "shift/reduce automata".  In some cases (much more
-frequent than one would hope), looking at this automaton is required to
-tune or simply fix a parser.  Bison provides two different
-representation of it, either textually or graphically (as a DOT file).
-
-   The textual file is generated when the options `--report' or
-`--verbose' are specified, see *note Invoking Bison: Invocation.  Its
-name is made by removing `.tab.c' or `.c' from the parser
-implementation file name, and adding `.output' instead.  Therefore, if
-the grammar file is `foo.y', then the parser implementation file is
-called `foo.tab.c' by default.  As a consequence, the verbose output
-file is called `foo.output'.
-
-   The following grammar file, `calc.y', will be used in the sequel:
-
-     %token NUM STR
-     %left '+' '-'
-     %left '*'
-     %%
-     exp:
-       exp '+' exp
-     | exp '-' exp
-     | exp '*' exp
-     | exp '/' exp
-     | NUM
-     ;
-     useless: STR;
-     %%
-
-   `bison' reports:
-
-     calc.y: warning: 1 nonterminal useless in grammar
-     calc.y: warning: 1 rule useless in grammar
-     calc.y:11.1-7: warning: nonterminal useless in grammar: useless
-     calc.y:11.10-12: warning: rule useless in grammar: useless: STR
-     calc.y: conflicts: 7 shift/reduce
-
-   When given `--report=state', in addition to `calc.tab.c', it creates
-a file `calc.output' with contents detailed below.  The order of the
-output and the exact presentation might vary, but the interpretation is
-the same.
-
-The first section reports useless tokens, nonterminals and rules.
-Useless nonterminals and rules are removed in order to produce a
-smaller parser, but useless tokens are preserved, since they might be
-used by the scanner (note the difference between "useless" and "unused"
-below):
-
-     Nonterminals useless in grammar
-        useless
-
-     Terminals unused in grammar
-        STR
-
-     Rules useless in grammar
-         6 useless: STR
-
-The next section lists states that still have conflicts.
-
-     State 8 conflicts: 1 shift/reduce
-     State 9 conflicts: 1 shift/reduce
-     State 10 conflicts: 1 shift/reduce
-     State 11 conflicts: 4 shift/reduce
-
-Then Bison reproduces the exact grammar it used:
-
-     Grammar
-
-         0 $accept: exp $end
-
-         1 exp: exp '+' exp
-         2    | exp '-' exp
-         3    | exp '*' exp
-         4    | exp '/' exp
-         5    | NUM
-
-and reports the uses of the symbols:
-
-     Terminals, with rules where they appear
-
-     $end (0) 0
-     '*' (42) 3
-     '+' (43) 1
-     '-' (45) 2
-     '/' (47) 4
-     error (256)
-     NUM (258) 5
-     STR (259)
-
-     Nonterminals, with rules where they appear
-
-     $accept (9)
-         on left: 0
-     exp (10)
-         on left: 1 2 3 4 5, on right: 0 1 2 3 4
-
-Bison then proceeds onto the automaton itself, describing each state
-with its set of "items", also known as "pointed rules".  Each item is a
-production rule together with a point (`.') marking the location of the
-input cursor.
-
-     state 0
-
-         0 $accept: . exp $end
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 2
-
-   This reads as follows: "state 0 corresponds to being at the very
-beginning of the parsing, in the initial rule, right before the start
-symbol (here, `exp').  When the parser returns to this state right
-after having reduced a rule that produced an `exp', the control flow
-jumps to state 2.  If there is no such transition on a nonterminal
-symbol, and the lookahead is a `NUM', then this token is shifted onto
-the parse stack, and the control flow jumps to state 1.  Any other
-lookahead triggers a syntax error."
-
-   Even though the only active rule in state 0 seems to be rule 0, the
-report lists `NUM' as a lookahead token because `NUM' can be at the
-beginning of any rule deriving an `exp'.  By default Bison reports the
-so-called "core" or "kernel" of the item set, but if you want to see
-more detail you can invoke `bison' with `--report=itemset' to list the
-derived items as well:
-
-     state 0
-
-         0 $accept: . exp $end
-         1 exp: . exp '+' exp
-         2    | . exp '-' exp
-         3    | . exp '*' exp
-         4    | . exp '/' exp
-         5    | . NUM
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 2
-
-In the state 1...
-
-     state 1
-
-         5 exp: NUM .
-
-         $default  reduce using rule 5 (exp)
-
-the rule 5, `exp: NUM;', is completed.  Whatever the lookahead token
-(`$default'), the parser will reduce it.  If it was coming from state
-0, then, after this reduction it will return to state 0, and will jump
-to state 2 (`exp: go to state 2').
-
-     state 2
-
-         0 $accept: exp . $end
-         1 exp: exp . '+' exp
-         2    | exp . '-' exp
-         3    | exp . '*' exp
-         4    | exp . '/' exp
-
-         $end  shift, and go to state 3
-         '+'   shift, and go to state 4
-         '-'   shift, and go to state 5
-         '*'   shift, and go to state 6
-         '/'   shift, and go to state 7
-
-In state 2, the automaton can only shift a symbol.  For instance,
-because of the item `exp: exp . '+' exp', if the lookahead is `+' it is
-shifted onto the parse stack, and the automaton jumps to state 4,
-corresponding to the item `exp: exp '+' . exp'.  Since there is no
-default action, any lookahead not listed triggers a syntax error.
-
-   The state 3 is named the "final state", or the "accepting state":
-
-     state 3
-
-         0 $accept: exp $end .
-
-         $default  accept
-
-the initial rule is completed (the start symbol and the end-of-input
-were read), the parsing exits successfully.
-
-   The interpretation of states 4 to 7 is straightforward, and is left
-to the reader.
-
-     state 4
-
-         1 exp: exp '+' . exp
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 8
-
-
-     state 5
-
-         2 exp: exp '-' . exp
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 9
-
-
-     state 6
-
-         3 exp: exp '*' . exp
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 10
-
-
-     state 7
-
-         4 exp: exp '/' . exp
-
-         NUM  shift, and go to state 1
-
-         exp  go to state 11
-
-   As was announced in beginning of the report, `State 8 conflicts: 1
-shift/reduce':
-
-     state 8
-
-         1 exp: exp . '+' exp
-         1    | exp '+' exp .
-         2    | exp . '-' exp
-         3    | exp . '*' exp
-         4    | exp . '/' exp
-
-         '*'  shift, and go to state 6
-         '/'  shift, and go to state 7
-
-         '/'       [reduce using rule 1 (exp)]
-         $default  reduce using rule 1 (exp)
-
-   Indeed, there are two actions associated to the lookahead `/':
-either shifting (and going to state 7), or reducing rule 1.  The
-conflict means that either the grammar is ambiguous, or the parser lacks
-information to make the right decision.  Indeed the grammar is
-ambiguous, as, since we did not specify the precedence of `/', the
-sentence `NUM + NUM / NUM' can be parsed as `NUM + (NUM / NUM)', which
-corresponds to shifting `/', or as `(NUM + NUM) / NUM', which
-corresponds to reducing rule 1.
-
-   Because in deterministic parsing a single decision can be made, Bison
-arbitrarily chose to disable the reduction, see *note Shift/Reduce
-Conflicts: Shift/Reduce.  Discarded actions are reported between square
-brackets.
-
-   Note that all the previous states had a single possible action:
-either shifting the next token and going to the corresponding state, or
-reducing a single rule.  In the other cases, i.e., when shifting _and_
-reducing is possible or when _several_ reductions are possible, the
-lookahead is required to select the action.  State 8 is one such state:
-if the lookahead is `*' or `/' then the action is shifting, otherwise
-the action is reducing rule 1.  In other words, the first two items,
-corresponding to rule 1, are not eligible when the lookahead token is
-`*', since we specified that `*' has higher precedence than `+'.  More
-generally, some items are eligible only with some set of possible
-lookahead tokens.  When run with `--report=lookahead', Bison specifies
-these lookahead tokens:
-
-     state 8
-
-         1 exp: exp . '+' exp
-         1    | exp '+' exp .  [$end, '+', '-', '/']
-         2    | exp . '-' exp
-         3    | exp . '*' exp
-         4    | exp . '/' exp
-
-         '*'  shift, and go to state 6
-         '/'  shift, and go to state 7
-
-         '/'       [reduce using rule 1 (exp)]
-         $default  reduce using rule 1 (exp)
-
-   Note however that while `NUM + NUM / NUM' is ambiguous (which
-results in the conflicts on `/'), `NUM + NUM * NUM' is not: the
-conflict was solved thanks to associativity and precedence directives.
-If invoked with `--report=solved', Bison includes information about the
-solved conflicts in the report:
-
-     Conflict between rule 1 and token '+' resolved as reduce (%left '+').
-     Conflict between rule 1 and token '-' resolved as reduce (%left '-').
-     Conflict between rule 1 and token '*' resolved as shift ('+' < '*').
-
-   The remaining states are similar:
-
-     state 9
-
-         1 exp: exp . '+' exp
-         2    | exp . '-' exp
-         2    | exp '-' exp .
-         3    | exp . '*' exp
-         4    | exp . '/' exp
-
-         '*'  shift, and go to state 6
-         '/'  shift, and go to state 7
-
-         '/'       [reduce using rule 2 (exp)]
-         $default  reduce using rule 2 (exp)
-
-     state 10
-
-         1 exp: exp . '+' exp
-         2    | exp . '-' exp
-         3    | exp . '*' exp
-         3    | exp '*' exp .
-         4    | exp . '/' exp
-
-         '/'  shift, and go to state 7
-
-         '/'       [reduce using rule 3 (exp)]
-         $default  reduce using rule 3 (exp)
-
-     state 11
-
-         1 exp: exp . '+' exp
-         2    | exp . '-' exp
-         3    | exp . '*' exp
-         4    | exp . '/' exp
-         4    | exp '/' exp .
-
-         '+'  shift, and go to state 4
-         '-'  shift, and go to state 5
-         '*'  shift, and go to state 6
-         '/'  shift, and go to state 7
-
-         '+'       [reduce using rule 4 (exp)]
-         '-'       [reduce using rule 4 (exp)]
-         '*'       [reduce using rule 4 (exp)]
-         '/'       [reduce using rule 4 (exp)]
-         $default  reduce using rule 4 (exp)
-
-Observe that state 11 contains conflicts not only due to the lack of
-precedence of `/' with respect to `+', `-', and `*', but also because
-the associativity of `/' is not specified.
-
-\1f
-File: bison.info,  Node: Tracing,  Prev: Understanding,  Up: Debugging
-
-8.2 Tracing Your Parser
-=======================
-
-When a Bison grammar compiles properly but parses "incorrectly", the
-`yydebug' parser-trace feature helps figuring out why.
-
-* Menu:
-
-* Enabling Traces::    Activating run-time trace support
-* Mfcalc Traces::      Extending `mfcalc' to support traces
-* The YYPRINT Macro::  Obsolete interface for semantic value reports
-
-\1f
-File: bison.info,  Node: Enabling Traces,  Next: Mfcalc Traces,  Up: Tracing
-
-8.2.1 Enabling Traces
----------------------
-
-There are several means to enable compilation of trace facilities:
-
-the macro `YYDEBUG'
-     Define the macro `YYDEBUG' to a nonzero value when you compile the
-     parser.  This is compliant with POSIX Yacc.  You could use
-     `-DYYDEBUG=1' as a compiler option or you could put `#define
-     YYDEBUG 1' in the prologue of the grammar file (*note The
-     Prologue: Prologue.).
-
-     If the `%define' variable `api.prefix' is used (*note Multiple
-     Parsers in the Same Program: Multiple Parsers.), for instance
-     `%define api.prefix x', then if `CDEBUG' is defined, its value
-     controls the tracing feature (enabled iff nonzero); otherwise
-     tracing is enabled iff `YYDEBUG' is nonzero.
-
-the option `-t' (POSIX Yacc compliant)
-the option `--debug' (Bison extension)
-     Use the `-t' option when you run Bison (*note Invoking Bison:
-     Invocation.).  With `%define api.prefix c', it defines `CDEBUG' to
-     1, otherwise it defines `YYDEBUG' to 1.
-
-the directive `%debug'
-     Add the `%debug' directive (*note Bison Declaration Summary: Decl
-     Summary.).  This is a Bison extension, especially useful for
-     languages that don't use a preprocessor.  Unless POSIX and Yacc
-     portability matter to you, this is the preferred solution.
-
-   We suggest that you always enable the debug option so that debugging
-is always possible.
-
-   The trace facility outputs messages with macro calls of the form
-`YYFPRINTF (stderr, FORMAT, ARGS)' where FORMAT and ARGS are the usual
-`printf' format and variadic arguments.  If you define `YYDEBUG' to a
-nonzero value but do not define `YYFPRINTF', `<stdio.h>' is
-automatically included and `YYFPRINTF' is defined to `fprintf'.
-
-   Once you have compiled the program with trace facilities, the way to
-request a trace is to store a nonzero value in the variable `yydebug'.
-You can do this by making the C code do it (in `main', perhaps), or you
-can alter the value with a C debugger.
-
-   Each step taken by the parser when `yydebug' is nonzero produces a
-line or two of trace information, written on `stderr'.  The trace
-messages tell you these things:
-
-   * Each time the parser calls `yylex', what kind of token was read.
-
-   * Each time a token is shifted, the depth and complete contents of
-     the state stack (*note Parser States::).
-
-   * Each time a rule is reduced, which rule it is, and the complete
-     contents of the state stack afterward.
-
-   To make sense of this information, it helps to refer to the automaton
-description file (*note Understanding Your Parser: Understanding.).
-This file shows the meaning of each state in terms of positions in
-various rules, and also what each state will do with each possible
-input token.  As you read the successive trace messages, you can see
-that the parser is functioning according to its specification in the
-listing file.  Eventually you will arrive at the place where something
-undesirable happens, and you will see which parts of the grammar are to
-blame.
-
-   The parser implementation file is a C/C++/Java program and you can
-use debuggers on it, but it's not easy to interpret what it is doing.
-The parser function is a finite-state machine interpreter, and aside
-from the actions it executes the same code over and over.  Only the
-values of variables show where in the grammar it is working.
-
-\1f
-File: bison.info,  Node: Mfcalc Traces,  Next: The YYPRINT Macro,  Prev: Enabling Traces,  Up: Tracing
-
-8.2.2 Enabling Debug Traces for `mfcalc'
-----------------------------------------
-
-The debugging information normally gives the token type of each token
-read, but not its semantic value.  The `%printer' directive allows
-specify how semantic values are reported, see *note Printing Semantic
-Values: Printer Decl.  For backward compatibility, Yacc like C parsers
-may also use the `YYPRINT' (*note The `YYPRINT' Macro: The YYPRINT
-Macro.), but its use is discouraged.
-
-   As a demonstration of `%printer', consider the multi-function
-calculator, `mfcalc' (*note Multi-function Calc::).  To enable run-time
-traces, and semantic value reports, insert the following directives in
-its prologue:
-
-     /* Generate the parser description file.  */
-     %verbose
-     /* Enable run-time traces (yydebug).  */
-     %define parse.trace
-
-     /* Formatting semantic values.  */
-     %printer { fprintf (yyoutput, "%s", $$->name); } VAR;
-     %printer { fprintf (yyoutput, "%s()", $$->name); } FNCT;
-     %printer { fprintf (yyoutput, "%g", $$); } <val>;
-
-   The `%define' directive instructs Bison to generate run-time trace
-support.  Then, activation of these traces is controlled at run-time by
-the `yydebug' variable, which is disabled by default.  Because these
-traces will refer to the "states" of the parser, it is helpful to ask
-for the creation of a description of that parser; this is the purpose
-of (admittedly ill-named) `%verbose' directive.
-
-   The set of `%printer' directives demonstrates how to format the
-semantic value in the traces.  Note that the specification can be done
-either on the symbol type (e.g., `VAR' or `FNCT'), or on the type tag:
-since `<val>' is the type for both `NUM' and `exp', this printer will
-be used for them.
-
-   Here is a sample of the information provided by run-time traces.
-The traces are sent onto standard error.
-
-     $ echo 'sin(1-1)' | ./mfcalc -p
-     Starting parse
-     Entering state 0
-     Reducing stack by rule 1 (line 34):
-     -> $$ = nterm input ()
-     Stack now 0
-     Entering state 1
-
-This first batch shows a specific feature of this grammar: the first
-rule (which is in line 34 of `mfcalc.y' can be reduced without even
-having to look for the first token.  The resulting left-hand symbol
-(`$$') is a valueless (`()') `input' non terminal (`nterm').
-
-   Then the parser calls the scanner.
-     Reading a token: Next token is token FNCT (sin())
-     Shifting token FNCT (sin())
-     Entering state 6
-
-That token (`token') is a function (`FNCT') whose value is `sin' as
-formatted per our `%printer' specification: `sin()'.  The parser stores
-(`Shifting') that token, and others, until it can do something about it.
-
-     Reading a token: Next token is token '(' ()
-     Shifting token '(' ()
-     Entering state 14
-     Reading a token: Next token is token NUM (1.000000)
-     Shifting token NUM (1.000000)
-     Entering state 4
-     Reducing stack by rule 6 (line 44):
-        $1 = token NUM (1.000000)
-     -> $$ = nterm exp (1.000000)
-     Stack now 0 1 6 14
-     Entering state 24
-
-The previous reduction demonstrates the `%printer' directive for
-`<val>': both the token `NUM' and the resulting non-terminal `exp' have
-`1' as value.
-
-     Reading a token: Next token is token '-' ()
-     Shifting token '-' ()
-     Entering state 17
-     Reading a token: Next token is token NUM (1.000000)
-     Shifting token NUM (1.000000)
-     Entering state 4
-     Reducing stack by rule 6 (line 44):
-        $1 = token NUM (1.000000)
-     -> $$ = nterm exp (1.000000)
-     Stack now 0 1 6 14 24 17
-     Entering state 26
-     Reading a token: Next token is token ')' ()
-     Reducing stack by rule 11 (line 49):
-        $1 = nterm exp (1.000000)
-        $2 = token '-' ()
-        $3 = nterm exp (1.000000)
-     -> $$ = nterm exp (0.000000)
-     Stack now 0 1 6 14
-     Entering state 24
-
-The rule for the subtraction was just reduced.  The parser is about to
-discover the end of the call to `sin'.
-
-     Next token is token ')' ()
-     Shifting token ')' ()
-     Entering state 31
-     Reducing stack by rule 9 (line 47):
-        $1 = token FNCT (sin())
-        $2 = token '(' ()
-        $3 = nterm exp (0.000000)
-        $4 = token ')' ()
-     -> $$ = nterm exp (0.000000)
-     Stack now 0 1
-     Entering state 11
-
-Finally, the end-of-line allow the parser to complete the computation,
-and display its result.
-
-     Reading a token: Next token is token '\n' ()
-     Shifting token '\n' ()
-     Entering state 22
-     Reducing stack by rule 4 (line 40):
-        $1 = nterm exp (0.000000)
-        $2 = token '\n' ()
-     => 0
-     -> $$ = nterm line ()
-     Stack now 0 1
-     Entering state 10
-     Reducing stack by rule 2 (line 35):
-        $1 = nterm input ()
-        $2 = nterm line ()
-     -> $$ = nterm input ()
-     Stack now 0
-     Entering state 1
-
-   The parser has returned into state 1, in which it is waiting for the
-next expression to evaluate, or for the end-of-file token, which causes
-the completion of the parsing.
-
-     Reading a token: Now at end of input.
-     Shifting token $end ()
-     Entering state 2
-     Stack now 0 1 2
-     Cleanup: popping token $end ()
-     Cleanup: popping nterm input ()
-
-\1f
-File: bison.info,  Node: The YYPRINT Macro,  Prev: Mfcalc Traces,  Up: Tracing
-
-8.2.3 The `YYPRINT' Macro
--------------------------
-
-Before `%printer' support, semantic values could be displayed using the
-`YYPRINT' macro, which works only for terminal symbols and only with
-the `yacc.c' skeleton.
-
- -- Macro: YYPRINT (STREAM, TOKEN, VALUE);
-     If you define `YYPRINT', it should take three arguments.  The
-     parser will pass a standard I/O stream, the numeric code for the
-     token type, and the token value (from `yylval').
-
-     For `yacc.c' only.  Obsoleted by `%printer'.
-
-   Here is an example of `YYPRINT' suitable for the multi-function
-calculator (*note Declarations for `mfcalc': Mfcalc Declarations.):
-
-     %{
-       static void print_token_value (FILE *, int, YYSTYPE);
-       #define YYPRINT(File, Type, Value)            \
-         print_token_value (File, Type, Value)
-     %}
-
-     ... %% ... %% ...
-
-     static void
-     print_token_value (FILE *file, int type, YYSTYPE value)
-     {
-       if (type == VAR)
-         fprintf (file, "%s", value.tptr->name);
-       else if (type == NUM)
-         fprintf (file, "%d", value.val);
-     }
-
-\1f
-File: bison.info,  Node: Invocation,  Next: Other Languages,  Prev: Debugging,  Up: Top
-
-9 Invoking Bison
-****************
-
-The usual way to invoke Bison is as follows:
-
-     bison INFILE
-
-   Here INFILE is the grammar file name, which usually ends in `.y'.
-The parser implementation file's name is made by replacing the `.y'
-with `.tab.c' and removing any leading directory.  Thus, the `bison
-foo.y' file name yields `foo.tab.c', and the `bison hack/foo.y' file
-name yields `foo.tab.c'.  It's also possible, in case you are writing
-C++ code instead of C in your grammar file, to name it `foo.ypp' or
-`foo.y++'.  Then, the output files will take an extension like the
-given one as input (respectively `foo.tab.cpp' and `foo.tab.c++').  This
-feature takes effect with all options that manipulate file names like
-`-o' or `-d'.
-
-   For example :
-
-     bison -d INFILE.YXX
-   will produce `infile.tab.cxx' and `infile.tab.hxx', and
-
-     bison -d -o OUTPUT.C++ INFILE.Y
-   will produce `output.c++' and `outfile.h++'.
-
-   For compatibility with POSIX, the standard Bison distribution also
-contains a shell script called `yacc' that invokes Bison with the `-y'
-option.
-
-* Menu:
-
-* Bison Options::     All the options described in detail,
-                        in alphabetical order by short options.
-* Option Cross Key::  Alphabetical list of long options.
-* Yacc Library::      Yacc-compatible `yylex' and `main'.
-
-\1f
-File: bison.info,  Node: Bison Options,  Next: Option Cross Key,  Up: Invocation
-
-9.1 Bison Options
-=================
-
-Bison supports both traditional single-letter options and mnemonic long
-option names.  Long option names are indicated with `--' instead of
-`-'.  Abbreviations for option names are allowed as long as they are
-unique.  When a long option takes an argument, like `--file-prefix',
-connect the option name and the argument with `='.
-
-   Here is a list of options that can be used with Bison, alphabetized
-by short option.  It is followed by a cross key alphabetized by long
-option.
-
-Operations modes:
-`-h'
-`--help'
-     Print a summary of the command-line options to Bison and exit.
-
-`-V'
-`--version'
-     Print the version number of Bison and exit.
-
-`--print-localedir'
-     Print the name of the directory containing locale-dependent data.
-
-`--print-datadir'
-     Print the name of the directory containing skeletons and XSLT.
-
-`-y'
-`--yacc'
-     Act more like the traditional Yacc command.  This can cause
-     different diagnostics to be generated, and may change behavior in
-     other minor ways.  Most importantly, imitate Yacc's output file
-     name conventions, so that the parser implementation file is called
-     `y.tab.c', and the other outputs are called `y.output' and
-     `y.tab.h'.  Also, if generating a deterministic parser in C,
-     generate `#define' statements in addition to an `enum' to associate
-     token numbers with token names.  Thus, the following shell script
-     can substitute for Yacc, and the Bison distribution contains such
-     a script for compatibility with POSIX:
-
-          #! /bin/sh
-          bison -y "$@"
-
-     The `-y'/`--yacc' option is intended for use with traditional Yacc
-     grammars.  If your grammar uses a Bison extension like
-     `%glr-parser', Bison might not be Yacc-compatible even if this
-     option is specified.
-
-`-W [CATEGORY]'
-`--warnings[=CATEGORY]'
-     Output warnings falling in CATEGORY.  CATEGORY can be one of:
-    `midrule-values'
-          Warn about mid-rule values that are set but not used within
-          any of the actions of the parent rule.  For example, warn
-          about unused `$2' in:
-
-               exp: '1' { $$ = 1; } '+' exp { $$ = $1 + $4; };
-
-          Also warn about mid-rule values that are used but not set.
-          For example, warn about unset `$$' in the mid-rule action in:
-
-               exp: '1' { $1 = 1; } '+' exp { $$ = $2 + $4; };
-
-          These warnings are not enabled by default since they
-          sometimes prove to be false alarms in existing grammars
-          employing the Yacc constructs `$0' or `$-N' (where N is some
-          positive integer).
-
-    `yacc'
-          Incompatibilities with POSIX Yacc.
-
-    `conflicts-sr'
-    `conflicts-rr'
-          S/R and R/R conflicts.  These warnings are enabled by
-          default.  However, if the `%expect' or `%expect-rr' directive
-          is specified, an unexpected number of conflicts is an error,
-          and an expected number of conflicts is not reported, so `-W'
-          and `--warning' then have no effect on the conflict report.
-
-    `other'
-          All warnings not categorized above.  These warnings are
-          enabled by default.
-
-          This category is provided merely for the sake of
-          completeness.  Future releases of Bison may move warnings
-          from this category to new, more specific categories.
-
-    `all'
-          All the warnings.
-
-    `none'
-          Turn off all the warnings.
-
-    `error'
-          Treat warnings as errors.
-
-     A category can be turned off by prefixing its name with `no-'.  For
-     instance, `-Wno-yacc' will hide the warnings about POSIX Yacc
-     incompatibilities.
-
-Tuning the parser:
-
-`-t'
-`--debug'
-     In the parser implementation file, define the macro `YYDEBUG' to 1
-     if it is not already defined, so that the debugging facilities are
-     compiled.  *Note Tracing Your Parser: Tracing.
-
-`-D NAME[=VALUE]'
-`--define=NAME[=VALUE]'
-`-F NAME[=VALUE]'
-`--force-define=NAME[=VALUE]'
-     Each of these is equivalent to `%define NAME "VALUE"' (*note
-     %define Summary::) except that Bison processes multiple
-     definitions for the same NAME as follows:
-
-        * Bison quietly ignores all command-line definitions for NAME
-          except the last.
-
-        * If that command-line definition is specified by a `-D' or
-          `--define', Bison reports an error for any `%define'
-          definition for NAME.
-
-        * If that command-line definition is specified by a `-F' or
-          `--force-define' instead, Bison quietly ignores all `%define'
-          definitions for NAME.
-
-        * Otherwise, Bison reports an error if there are multiple
-          `%define' definitions for NAME.
-
-     You should avoid using `-F' and `--force-define' in your make
-     files unless you are confident that it is safe to quietly ignore
-     any conflicting `%define' that may be added to the grammar file.
-
-`-L LANGUAGE'
-`--language=LANGUAGE'
-     Specify the programming language for the generated parser, as if
-     `%language' was specified (*note Bison Declaration Summary: Decl
-     Summary.).  Currently supported languages include C, C++, and Java.
-     LANGUAGE is case-insensitive.
-
-     This option is experimental and its effect may be modified in
-     future releases.
-
-`--locations'
-     Pretend that `%locations' was specified.  *Note Decl Summary::.
-
-`-p PREFIX'
-`--name-prefix=PREFIX'
-     Pretend that `%name-prefix "PREFIX"' was specified (*note Decl
-     Summary::).  Obsoleted by `-Dapi.prefix=PREFIX'.  *Note Multiple
-     Parsers in the Same Program: Multiple Parsers.
-
-`-l'
-`--no-lines'
-     Don't put any `#line' preprocessor commands in the parser
-     implementation file.  Ordinarily Bison puts them in the parser
-     implementation file so that the C compiler and debuggers will
-     associate errors with your source file, the grammar file.  This
-     option causes them to associate errors with the parser
-     implementation file, treating it as an independent source file in
-     its own right.
-
-`-S FILE'
-`--skeleton=FILE'
-     Specify the skeleton to use, similar to `%skeleton' (*note Bison
-     Declaration Summary: Decl Summary.).
-
-     If FILE does not contain a `/', FILE is the name of a skeleton
-     file in the Bison installation directory.  If it does, FILE is an
-     absolute file name or a file name relative to the current working
-     directory.  This is similar to how most shells resolve commands.
-
-`-k'
-`--token-table'
-     Pretend that `%token-table' was specified.  *Note Decl Summary::.
-
-Adjust the output:
-
-`--defines[=FILE]'
-     Pretend that `%defines' was specified, i.e., write an extra output
-     file containing macro definitions for the token type names defined
-     in the grammar, as well as a few other declarations.  *Note Decl
-     Summary::.
-
-`-d'
-     This is the same as `--defines' except `-d' does not accept a FILE
-     argument since POSIX Yacc requires that `-d' can be bundled with
-     other short options.
-
-`-b FILE-PREFIX'
-`--file-prefix=PREFIX'
-     Pretend that `%file-prefix' was specified, i.e., specify prefix to
-     use for all Bison output file names.  *Note Decl Summary::.
-
-`-r THINGS'
-`--report=THINGS'
-     Write an extra output file containing verbose description of the
-     comma separated list of THINGS among:
-
-    `state'
-          Description of the grammar, conflicts (resolved and
-          unresolved), and parser's automaton.
-
-    `lookahead'
-          Implies `state' and augments the description of the automaton
-          with each rule's lookahead set.
-
-    `itemset'
-          Implies `state' and augments the description of the automaton
-          with the full set of items for each state, instead of its
-          core only.
-
-`--report-file=FILE'
-     Specify the FILE for the verbose description.
-
-`-v'
-`--verbose'
-     Pretend that `%verbose' was specified, i.e., write an extra output
-     file containing verbose descriptions of the grammar and parser.
-     *Note Decl Summary::.
-
-`-o FILE'
-`--output=FILE'
-     Specify the FILE for the parser implementation file.
-
-     The other output files' names are constructed from FILE as
-     described under the `-v' and `-d' options.
-
-`-g [FILE]'
-`--graph[=FILE]'
-     Output a graphical representation of the parser's automaton
-     computed by Bison, in Graphviz (http://www.graphviz.org/) DOT
-     (http://www.graphviz.org/doc/info/lang.html) format.  `FILE' is
-     optional.  If omitted and the grammar file is `foo.y', the output
-     file will be `foo.dot'.
-
-`-x [FILE]'
-`--xml[=FILE]'
-     Output an XML report of the parser's automaton computed by Bison.
-     `FILE' is optional.  If omitted and the grammar file is `foo.y',
-     the output file will be `foo.xml'.  (The current XML schema is
-     experimental and may evolve.  More user feedback will help to
-     stabilize it.)
-
-\1f
-File: bison.info,  Node: Option Cross Key,  Next: Yacc Library,  Prev: Bison Options,  Up: Invocation
-
-9.2 Option Cross Key
-====================
-
-Here is a list of options, alphabetized by long option, to help you find
-the corresponding short option and directive.
-
-Long Option                     Short Option        Bison Directive
---------------------------------------------------------------------------------- 
-`--debug'                       `-t'                `%debug'
-`--define=NAME[=VALUE]'         `-D NAME[=VALUE]'   `%define NAME ["VALUE"]'
-`--defines[=FILE]'              `-d'                `%defines ["FILE"]'
-`--file-prefix=PREFIX'          `-b PREFIX'         `%file-prefix "PREFIX"'
-`--force-define=NAME[=VALUE]'   `-F NAME[=VALUE]'   `%define NAME ["VALUE"]'
-`--graph[=FILE]'                `-g [FILE]'         
-`--help'                        `-h'                
-`--language=LANGUAGE'           `-L LANGUAGE'       `%language "LANGUAGE"'
-`--locations'                                       `%locations'
-`--name-prefix=PREFIX'          `-p PREFIX'         `%name-prefix "PREFIX"'
-`--no-lines'                    `-l'                `%no-lines'
-`--output=FILE'                 `-o FILE'           `%output "FILE"'
-`--print-datadir'                                   
-`--print-localedir'                                 
-`--report-file=FILE'                                
-`--report=THINGS'               `-r THINGS'         
-`--skeleton=FILE'               `-S FILE'           `%skeleton "FILE"'
-`--token-table'                 `-k'                `%token-table'
-`--verbose'                     `-v'                `%verbose'
-`--version'                     `-V'                
-`--warnings[=CATEGORY]'         `-W [CATEGORY]'     
-`--xml[=FILE]'                  `-x [FILE]'         
-`--yacc'                        `-y'                `%yacc'
-
-\1f
-File: bison.info,  Node: Yacc Library,  Prev: Option Cross Key,  Up: Invocation
-
-9.3 Yacc Library
-================
-
-The Yacc library contains default implementations of the `yyerror' and
-`main' functions.  These default implementations are normally not
-useful, but POSIX requires them.  To use the Yacc library, link your
-program with the `-ly' option.  Note that Bison's implementation of the
-Yacc library is distributed under the terms of the GNU General Public
-License (*note Copying::).
-
-   If you use the Yacc library's `yyerror' function, you should declare
-`yyerror' as follows:
-
-     int yyerror (char const *);
-
-   Bison ignores the `int' value returned by this `yyerror'.  If you
-use the Yacc library's `main' function, your `yyparse' function should
-have the following type signature:
-
-     int yyparse (void);
-
-\1f
-File: bison.info,  Node: Other Languages,  Next: FAQ,  Prev: Invocation,  Up: Top
-
-10 Parsers Written In Other Languages
-*************************************
-
-* Menu:
-
-* C++ Parsers::                 The interface to generate C++ parser classes
-* Java Parsers::                The interface to generate Java parser classes
-
-\1f
-File: bison.info,  Node: C++ Parsers,  Next: Java Parsers,  Up: Other Languages
-
-10.1 C++ Parsers
-================
-
-* Menu:
-
-* C++ Bison Interface::         Asking for C++ parser generation
-* C++ Semantic Values::         %union vs. C++
-* C++ Location Values::         The position and location classes
-* C++ Parser Interface::        Instantiating and running the parser
-* C++ Scanner Interface::       Exchanges between yylex and parse
-* A Complete C++ Example::      Demonstrating their use
-
-\1f
-File: bison.info,  Node: C++ Bison Interface,  Next: C++ Semantic Values,  Up: C++ Parsers
-
-10.1.1 C++ Bison Interface
---------------------------
-
-The C++ deterministic parser is selected using the skeleton directive,
-`%skeleton "lalr1.cc"', or the synonymous command-line option
-`--skeleton=lalr1.cc'.  *Note Decl Summary::.
-
-   When run, `bison' will create several entities in the `yy' namespace.  Use
-the `%define namespace' directive to change the namespace name, see
-*note namespace: %define Summary.  The various classes are generated in
-the following files:
-
-`position.hh'
-`location.hh'
-     The definition of the classes `position' and `location', used for
-     location tracking.  *Note C++ Location Values::.
-
-`stack.hh'
-     An auxiliary class `stack' used by the parser.
-
-`FILE.hh'
-`FILE.cc'
-     (Assuming the extension of the grammar file was `.yy'.)  The
-     declaration and implementation of the C++ parser class.  The
-     basename and extension of these two files follow the same rules as
-     with regular C parsers (*note Invocation::).
-
-     The header is _mandatory_; you must either pass `-d'/`--defines'
-     to `bison', or use the `%defines' directive.
-
-   All these files are documented using Doxygen; run `doxygen' for a
-complete and accurate documentation.
-
-\1f
-File: bison.info,  Node: C++ Semantic Values,  Next: C++ Location Values,  Prev: C++ Bison Interface,  Up: C++ Parsers
-
-10.1.2 C++ Semantic Values
---------------------------
-
-The `%union' directive works as for C, see *note The Collection of
-Value Types: Union Decl.  In particular it produces a genuine
-`union'(1), which have a few specific features in C++.
-   - The type `YYSTYPE' is defined but its use is discouraged: rather
-     you should refer to the parser's encapsulated type
-     `yy::parser::semantic_type'.
-
-   - Non POD (Plain Old Data) types cannot be used.  C++ forbids any
-     instance of classes with constructors in unions: only _pointers_
-     to such objects are allowed.
-
-   Because objects have to be stored via pointers, memory is not
-reclaimed automatically: using the `%destructor' directive is the only
-means to avoid leaks.  *Note Freeing Discarded Symbols: Destructor Decl.
-
-   ---------- Footnotes ----------
-
-   (1) In the future techniques to allow complex types within
-pseudo-unions (similar to Boost variants) might be implemented to
-alleviate these issues.
-
-\1f
-File: bison.info,  Node: C++ Location Values,  Next: C++ Parser Interface,  Prev: C++ Semantic Values,  Up: C++ Parsers
-
-10.1.3 C++ Location Values
---------------------------
-
-When the directive `%locations' is used, the C++ parser supports
-location tracking, see *note Tracking Locations::.  Two auxiliary
-classes define a `position', a single point in a file, and a
-`location', a range composed of a pair of `position's (possibly
-spanning several files).
-
-   In this section `uint' is an abbreviation for `unsigned int': in
-genuine code only the latter is used.
-
-* Menu:
-
-* C++ position::         One point in the source file
-* C++ location::         Two points in the source file
-
-\1f
-File: bison.info,  Node: C++ position,  Next: C++ location,  Up: C++ Location Values
-
-10.1.3.1 C++ `position'
-.......................
-
- -- Constructor on position:  position (std::string* FILE = 0, uint
-          LINE = 1, uint COL = 1)
-     Create a `position' denoting a given point.  Note that `file' is
-     not reclaimed when the `position' is destroyed: memory managed
-     must be handled elsewhere.
-
- -- Method on position: void initialize (std::string* FILE = 0, uint
-          LINE = 1, uint COL = 1)
-     Reset the position to the given values.
-
- -- Instance Variable of position: std::string* file
-     The name of the file.  It will always be handled as a pointer, the
-     parser will never duplicate nor deallocate it.  As an experimental
-     feature you may change it to `TYPE*' using `%define filename_type
-     "TYPE"'.
-
- -- Instance Variable of position: uint line
-     The line, starting at 1.
-
- -- Method on position: uint lines (int HEIGHT = 1)
-     Advance by HEIGHT lines, resetting the column number.
-
- -- Instance Variable of position: uint column
-     The column, starting at 1.
-
- -- Method on position: uint columns (int WIDTH = 1)
-     Advance by WIDTH columns, without changing the line number.
-
- -- Method on position: position& operator+= (int WIDTH)
- -- Method on position: position operator+ (int WIDTH)
- -- Method on position: position& operator-= (int WIDTH)
- -- Method on position: position operator- (int WIDTH)
-     Various forms of syntactic sugar for `columns'.
-
- -- Method on position: bool operator== (const position& THAT)
- -- Method on position: bool operator!= (const position& THAT)
-     Whether `*this' and `that' denote equal/different positions.
-
- -- Function: std::ostream& operator<< (std::ostream& O, const
-          position& P)
-     Report P on O like this: `FILE:LINE.COLUMN', or `LINE.COLUMN' if
-     FILE is null.
-
-\1f
-File: bison.info,  Node: C++ location,  Prev: C++ position,  Up: C++ Location Values
-
-10.1.3.2 C++ `location'
-.......................
-
- -- Constructor on location:  location (const position& BEGIN, const
-          position& END)
-     Create a `Location' from the endpoints of the range.
-
- -- Constructor on location:  location (const position& POS =
-          position())
- -- Constructor on location:  location (std::string* FILE, uint LINE,
-          uint COL)
-     Create a `Location' denoting an empty range located at a given
-     point.
-
- -- Method on location: void initialize (std::string* FILE = 0, uint
-          LINE = 1, uint COL = 1)
-     Reset the location to an empty range at the given values.
-
- -- Instance Variable of location: position begin
- -- Instance Variable of location: position end
-     The first, inclusive, position of the range, and the first beyond.
-
- -- Method on location: uint columns (int WIDTH = 1)
- -- Method on location: uint lines (int HEIGHT = 1)
-     Advance the `end' position.
-
- -- Method on location: location operator+ (const location& END)
- -- Method on location: location operator+ (int WIDTH)
- -- Method on location: location operator+= (int WIDTH)
-     Various forms of syntactic sugar.
-
- -- Method on location: void step ()
-     Move `begin' onto `end'.
-
- -- Method on location: bool operator== (const location& THAT)
- -- Method on location: bool operator!= (const location& THAT)
-     Whether `*this' and `that' denote equal/different ranges of
-     positions.
-
- -- Function: std::ostream& operator<< (std::ostream& O, const
-          location& P)
-     Report P on O, taking care of special cases such as: no `filename'
-     defined, or equal filename/line or column.
-
-\1f
-File: bison.info,  Node: C++ Parser Interface,  Next: C++ Scanner Interface,  Prev: C++ Location Values,  Up: C++ Parsers
-
-10.1.4 C++ Parser Interface
----------------------------
-
-The output files `OUTPUT.hh' and `OUTPUT.cc' declare and define the
-parser class in the namespace `yy'.  The class name defaults to
-`parser', but may be changed using `%define parser_class_name "NAME"'.
-The interface of this class is detailed below.  It can be extended
-using the `%parse-param' feature: its semantics is slightly changed
-since it describes an additional member of the parser class, and an
-additional argument for its constructor.
-
- -- Type of parser: semantic_type
- -- Type of parser: location_type
-     The types for semantics value and locations.
-
- -- Type of parser: token
-     A structure that contains (only) the `yytokentype' enumeration,
-     which defines the tokens.  To refer to the token `FOO', use
-     `yy::parser::token::FOO'.  The scanner can use `typedef
-     yy::parser::token token;' to "import" the token enumeration (*note
-     Calc++ Scanner::).
-
- -- Method on parser:  parser (TYPE1 ARG1, ...)
-     Build a new parser object.  There are no arguments by default,
-     unless `%parse-param {TYPE1 ARG1}' was used.
-
- -- Method on parser: int parse ()
-     Run the syntactic analysis, and return 0 on success, 1 otherwise.
-
- -- Method on parser: std::ostream& debug_stream ()
- -- Method on parser: void set_debug_stream (std::ostream& O)
-     Get or set the stream used for tracing the parsing.  It defaults to
-     `std::cerr'.
-
- -- Method on parser: debug_level_type debug_level ()
- -- Method on parser: void set_debug_level (debug_level L)
-     Get or set the tracing level.  Currently its value is either 0, no
-     trace, or nonzero, full tracing.
-
- -- Method on parser: void error (const location_type& L, const
-          std::string& M)
-     The definition for this member function must be supplied by the
-     user: the parser uses it to report a parser error occurring at L,
-     described by M.
-
-\1f
-File: bison.info,  Node: C++ Scanner Interface,  Next: A Complete C++ Example,  Prev: C++ Parser Interface,  Up: C++ Parsers
-
-10.1.5 C++ Scanner Interface
-----------------------------
-
-The parser invokes the scanner by calling `yylex'.  Contrary to C
-parsers, C++ parsers are always pure: there is no point in using the
-`%define api.pure' directive.  Therefore the interface is as follows.
-
- -- Method on parser: int yylex (semantic_type* YYLVAL, location_type*
-          YYLLOC, TYPE1 ARG1, ...)
-     Return the next token.  Its type is the return value, its semantic
-     value and location being YYLVAL and YYLLOC.  Invocations of
-     `%lex-param {TYPE1 ARG1}' yield additional arguments.
-
-\1f
-File: bison.info,  Node: A Complete C++ Example,  Prev: C++ Scanner Interface,  Up: C++ Parsers
-
-10.1.6 A Complete C++ Example
------------------------------
-
-This section demonstrates the use of a C++ parser with a simple but
-complete example.  This example should be available on your system,
-ready to compile, in the directory "../bison/examples/calc++".  It
-focuses on the use of Bison, therefore the design of the various C++
-classes is very naive: no accessors, no encapsulation of members etc.
-We will use a Lex scanner, and more precisely, a Flex scanner, to
-demonstrate the various interaction.  A hand written scanner is
-actually easier to interface with.
-
-* Menu:
-
-* Calc++ --- C++ Calculator::   The specifications
-* Calc++ Parsing Driver::       An active parsing context
-* Calc++ Parser::               A parser class
-* Calc++ Scanner::              A pure C++ Flex scanner
-* Calc++ Top Level::            Conducting the band
-
-\1f
-File: bison.info,  Node: Calc++ --- C++ Calculator,  Next: Calc++ Parsing Driver,  Up: A Complete C++ Example
-
-10.1.6.1 Calc++ -- C++ Calculator
-.................................
-
-Of course the grammar is dedicated to arithmetics, a single expression,
-possibly preceded by variable assignments.  An environment containing
-possibly predefined variables such as `one' and `two', is exchanged
-with the parser.  An example of valid input follows.
-
-     three := 3
-     seven := one + two * three
-     seven * seven
-
-\1f
-File: bison.info,  Node: Calc++ Parsing Driver,  Next: Calc++ Parser,  Prev: Calc++ --- C++ Calculator,  Up: A Complete C++ Example
-
-10.1.6.2 Calc++ Parsing Driver
-..............................
-
-To support a pure interface with the parser (and the scanner) the
-technique of the "parsing context" is convenient: a structure
-containing all the data to exchange.  Since, in addition to simply
-launch the parsing, there are several auxiliary tasks to execute (open
-the file for parsing, instantiate the parser etc.), we recommend
-transforming the simple parsing context structure into a fully blown
-"parsing driver" class.
-
-   The declaration of this driver class, `calc++-driver.hh', is as
-follows.  The first part includes the CPP guard and imports the
-required standard library components, and the declaration of the parser
-class.
-
-     #ifndef CALCXX_DRIVER_HH
-     # define CALCXX_DRIVER_HH
-     # include <string>
-     # include <map>
-     # include "calc++-parser.hh"
-
-Then comes the declaration of the scanning function.  Flex expects the
-signature of `yylex' to be defined in the macro `YY_DECL', and the C++
-parser expects it to be declared.  We can factor both as follows.
-
-     // Tell Flex the lexer's prototype ...
-     # define YY_DECL                                        \
-       yy::calcxx_parser::token_type                         \
-       yylex (yy::calcxx_parser::semantic_type* yylval,      \
-              yy::calcxx_parser::location_type* yylloc,      \
-              calcxx_driver& driver)
-     // ... and declare it for the parser's sake.
-     YY_DECL;
-
-The `calcxx_driver' class is then declared with its most obvious
-members.
-
-     // Conducting the whole scanning and parsing of Calc++.
-     class calcxx_driver
-     {
-     public:
-       calcxx_driver ();
-       virtual ~calcxx_driver ();
-
-       std::map<std::string, int> variables;
-
-       int result;
-
-To encapsulate the coordination with the Flex scanner, it is useful to
-have two members function to open and close the scanning phase.
-
-       // Handling the scanner.
-       void scan_begin ();
-       void scan_end ();
-       bool trace_scanning;
-
-Similarly for the parser itself.
-
-       // Run the parser.  Return 0 on success.
-       int parse (const std::string& f);
-       std::string file;
-       bool trace_parsing;
-
-To demonstrate pure handling of parse errors, instead of simply dumping
-them on the standard error output, we will pass them to the compiler
-driver using the following two member functions.  Finally, we close the
-class declaration and CPP guard.
-
-       // Error handling.
-       void error (const yy::location& l, const std::string& m);
-       void error (const std::string& m);
-     };
-     #endif // ! CALCXX_DRIVER_HH
-
-   The implementation of the driver is straightforward.  The `parse'
-member function deserves some attention.  The `error' functions are
-simple stubs, they should actually register the located error messages
-and set error state.
-
-     #include "calc++-driver.hh"
-     #include "calc++-parser.hh"
-
-     calcxx_driver::calcxx_driver ()
-       : trace_scanning (false), trace_parsing (false)
-     {
-       variables["one"] = 1;
-       variables["two"] = 2;
-     }
-
-     calcxx_driver::~calcxx_driver ()
-     {
-     }
-
-     int
-     calcxx_driver::parse (const std::string &f)
-     {
-       file = f;
-       scan_begin ();
-       yy::calcxx_parser parser (*this);
-       parser.set_debug_level (trace_parsing);
-       int res = parser.parse ();
-       scan_end ();
-       return res;
-     }
-
-     void
-     calcxx_driver::error (const yy::location& l, const std::string& m)
-     {
-       std::cerr << l << ": " << m << std::endl;
-     }
-
-     void
-     calcxx_driver::error (const std::string& m)
-     {
-       std::cerr << m << std::endl;
-     }
-
-\1f
-File: bison.info,  Node: Calc++ Parser,  Next: Calc++ Scanner,  Prev: Calc++ Parsing Driver,  Up: A Complete C++ Example
-
-10.1.6.3 Calc++ Parser
-......................
-
-The grammar file `calc++-parser.yy' starts by asking for the C++
-deterministic parser skeleton, the creation of the parser header file,
-and specifies the name of the parser class.  Because the C++ skeleton
-changed several times, it is safer to require the version you designed
-the grammar for.
-
-     %skeleton "lalr1.cc" /* -*- C++ -*- */
-     %require "2.6.1-dirty"
-     %defines
-     %define parser_class_name "calcxx_parser"
-
-Then come the declarations/inclusions needed to define the `%union'.
-Because the parser uses the parsing driver and reciprocally, both
-cannot include the header of the other.  Because the driver's header
-needs detailed knowledge about the parser class (in particular its
-inner types), it is the parser's header which will simply use a forward
-declaration of the driver.  *Note %code Summary::.
-
-     %code requires {
-     # include <string>
-     class calcxx_driver;
-     }
-
-The driver is passed by reference to the parser and to the scanner.
-This provides a simple but effective pure interface, not relying on
-global variables.
-
-     // The parsing context.
-     %parse-param { calcxx_driver& driver }
-     %lex-param   { calcxx_driver& driver }
-
-Then we request the location tracking feature, and initialize the first
-location's file name.  Afterward new locations are computed relatively
-to the previous locations: the file name will be automatically
-propagated.
-
-     %locations
-     %initial-action
-     {
-       // Initialize the initial location.
-       @$.begin.filename = @$.end.filename = &driver.file;
-     };
-
-Use the two following directives to enable parser tracing and verbose
-error messages.  However, verbose error messages can contain incorrect
-information (*note LAC::).
-
-     %debug
-     %error-verbose
-
-Semantic values cannot use "real" objects, but only pointers to them.
-
-     // Symbols.
-     %union
-     {
-       int          ival;
-       std::string *sval;
-     };
-
-The code between `%code {' and `}' is output in the `*.cc' file; it
-needs detailed knowledge about the driver.
-
-     %code {
-     # include "calc++-driver.hh"
-     }
-
-The token numbered as 0 corresponds to end of file; the following line
-allows for nicer error messages referring to "end of file" instead of
-"$end".  Similarly user friendly named are provided for each symbol.
-Note that the tokens names are prefixed by `TOKEN_' to avoid name
-clashes.
-
-     %token        END      0 "end of file"
-     %token        ASSIGN     ":="
-     %token <sval> IDENTIFIER "identifier"
-     %token <ival> NUMBER     "number"
-     %type  <ival> exp
-
-To enable memory deallocation during error recovery, use `%destructor'.
-
-     %printer    { yyoutput << *$$; } "identifier"
-     %destructor { delete $$; } "identifier"
-
-     %printer    { yyoutput << $$; } <ival>
-
-The grammar itself is straightforward.
-
-     %%
-     %start unit;
-     unit: assignments exp  { driver.result = $2; };
-
-     assignments:
-       /* Nothing.  */        {}
-     | assignments assignment {};
-
-     assignment:
-          "identifier" ":=" exp
-            { driver.variables[*$1] = $3; delete $1; };
-
-     %left '+' '-';
-     %left '*' '/';
-     exp: exp '+' exp   { $$ = $1 + $3; }
-        | exp '-' exp   { $$ = $1 - $3; }
-        | exp '*' exp   { $$ = $1 * $3; }
-        | exp '/' exp   { $$ = $1 / $3; }
-        | "identifier"  { $$ = driver.variables[*$1]; delete $1; }
-        | "number"      { $$ = $1; };
-     %%
-
-Finally the `error' member function registers the errors to the driver.
-
-     void
-     yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
-                               const std::string& m)
-     {
-       driver.error (l, m);
-     }
-
-\1f
-File: bison.info,  Node: Calc++ Scanner,  Next: Calc++ Top Level,  Prev: Calc++ Parser,  Up: A Complete C++ Example
-
-10.1.6.4 Calc++ Scanner
-.......................
-
-The Flex scanner first includes the driver declaration, then the
-parser's to get the set of defined tokens.
-
-     %{ /* -*- C++ -*- */
-     # include <cstdlib>
-     # include <cerrno>
-     # include <climits>
-     # include <string>
-     # include "calc++-driver.hh"
-     # include "calc++-parser.hh"
-
-     /* Work around an incompatibility in flex (at least versions
-        2.5.31 through 2.5.33): it generates code that does
-        not conform to C89.  See Debian bug 333231
-        <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
-     # undef yywrap
-     # define yywrap() 1
-
-     /* By default yylex returns int, we use token_type.
-        Unfortunately yyterminate by default returns 0, which is
-        not of token_type.  */
-     #define yyterminate() return token::END
-     %}
-
-Because there is no `#include'-like feature we don't need `yywrap', we
-don't need `unput' either, and we parse an actual file, this is not an
-interactive session with the user.  Finally we enable the scanner
-tracing features.
-
-     %option noyywrap nounput batch debug
-
-Abbreviations allow for more readable rules.
-
-     id    [a-zA-Z][a-zA-Z_0-9]*
-     int   [0-9]+
-     blank [ \t]
-
-The following paragraph suffices to track locations accurately.  Each
-time `yylex' is invoked, the begin position is moved onto the end
-position.  Then when a pattern is matched, the end position is advanced
-of its width.  In case it matched ends of lines, the end cursor is
-adjusted, and each time blanks are matched, the begin cursor is moved
-onto the end cursor to effectively ignore the blanks preceding tokens.
-Comments would be treated equally.
-
-     %{
-     # define YY_USER_ACTION  yylloc->columns (yyleng);
-     %}
-     %%
-     %{
-       yylloc->step ();
-     %}
-     {blank}+   yylloc->step ();
-     [\n]+      yylloc->lines (yyleng); yylloc->step ();
-
-The rules are simple, just note the use of the driver to report errors.
-It is convenient to use a typedef to shorten
-`yy::calcxx_parser::token::identifier' into `token::identifier' for
-instance.
-
-     %{
-       typedef yy::calcxx_parser::token token;
-     %}
-                /* Convert ints to the actual type of tokens.  */
-     [-+*/]     return yy::calcxx_parser::token_type (yytext[0]);
-     ":="       return token::ASSIGN;
-     {int}      {
-       errno = 0;
-       long n = strtol (yytext, NULL, 10);
-       if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
-         driver.error (*yylloc, "integer is out of range");
-       yylval->ival = n;
-       return token::NUMBER;
-     }
-     {id}       yylval->sval = new std::string (yytext); return token::IDENTIFIER;
-     .          driver.error (*yylloc, "invalid character");
-     %%
-
-Finally, because the scanner related driver's member function depend on
-the scanner's data, it is simpler to implement them in this file.
-
-     void
-     calcxx_driver::scan_begin ()
-     {
-       yy_flex_debug = trace_scanning;
-       if (file.empty () || file == "-")
-         yyin = stdin;
-       else if (!(yyin = fopen (file.c_str (), "r")))
-         {
-           error ("cannot open " + file + ": " + strerror(errno));
-           exit (EXIT_FAILURE);
-         }
-     }
-
-     void
-     calcxx_driver::scan_end ()
-     {
-       fclose (yyin);
-     }
-
-\1f
-File: bison.info,  Node: Calc++ Top Level,  Prev: Calc++ Scanner,  Up: A Complete C++ Example
-
-10.1.6.5 Calc++ Top Level
-.........................
-
-The top level file, `calc++.cc', poses no problem.
-
-     #include <iostream>
-     #include "calc++-driver.hh"
-
-     int
-     main (int argc, char *argv[])
-     {
-       calcxx_driver driver;
-       for (int i = 1; i < argc; ++i)
-         if (argv[i] == std::string ("-p"))
-           driver.trace_parsing = true;
-         else if (argv[i] == std::string ("-s"))
-           driver.trace_scanning = true;
-         else if (!driver.parse (argv[i]))
-           std::cout << driver.result << std::endl;
-     }
-
-\1f
-File: bison.info,  Node: Java Parsers,  Prev: C++ Parsers,  Up: Other Languages
-
-10.2 Java Parsers
-=================
-
-* Menu:
-
-* Java Bison Interface::        Asking for Java parser generation
-* Java Semantic Values::        %type and %token vs. Java
-* Java Location Values::        The position and location classes
-* Java Parser Interface::       Instantiating and running the parser
-* Java Scanner Interface::      Specifying the scanner for the parser
-* Java Action Features::        Special features for use in actions
-* Java Differences::            Differences between C/C++ and Java Grammars
-* Java Declarations Summary::   List of Bison declarations used with Java
-
-\1f
-File: bison.info,  Node: Java Bison Interface,  Next: Java Semantic Values,  Up: Java Parsers
-
-10.2.1 Java Bison Interface
----------------------------
-
-(The current Java interface is experimental and may evolve.  More user
-feedback will help to stabilize it.)
-
-   The Java parser skeletons are selected using the `%language "Java"'
-directive or the `-L java'/`--language=java' option.
-
-   When generating a Java parser, `bison BASENAME.y' will create a
-single Java source file named `BASENAME.java' containing the parser
-implementation.  Using a grammar file without a `.y' suffix is
-currently broken.  The basename of the parser implementation file can
-be changed by the `%file-prefix' directive or the `-p'/`--name-prefix'
-option.  The entire parser implementation file name can be changed by
-the `%output' directive or the `-o'/`--output' option.  The parser
-implementation file contains a single class for the parser.
-
-   You can create documentation for generated parsers using Javadoc.
-
-   Contrary to C parsers, Java parsers do not use global variables; the
-state of the parser is always local to an instance of the parser class.
-Therefore, all Java parsers are "pure", and the `%pure-parser' and
-`%define api.pure' directives does not do anything when used in Java.
-
-   Push parsers are currently unsupported in Java and `%define
-api.push-pull' have no effect.
-
-   GLR parsers are currently unsupported in Java.  Do not use the
-`glr-parser' directive.
-
-   No header file can be generated for Java parsers.  Do not use the
-`%defines' directive or the `-d'/`--defines' options.
-
-   Currently, support for debugging and verbose errors are always
-compiled in.  Thus the `%debug' and `%token-table' directives and the
-`-t'/`--debug' and `-k'/`--token-table' options have no effect.  This
-may change in the future to eliminate unused code in the generated
-parser, so use `%debug' and `%verbose-error' explicitly if needed.
-Also, in the future the `%token-table' directive might enable a public
-interface to access the token names and codes.
-
-\1f
-File: bison.info,  Node: Java Semantic Values,  Next: Java Location Values,  Prev: Java Bison Interface,  Up: Java Parsers
-
-10.2.2 Java Semantic Values
----------------------------
-
-There is no `%union' directive in Java parsers.  Instead, the semantic
-values' types (class names) should be specified in the `%type' or
-`%token' directive:
-
-     %type <Expression> expr assignment_expr term factor
-     %type <Integer> number
-
-   By default, the semantic stack is declared to have `Object' members,
-which means that the class types you specify can be of any class.  To
-improve the type safety of the parser, you can declare the common
-superclass of all the semantic values using the `%define stype'
-directive.  For example, after the following declaration:
-
-     %define stype "ASTNode"
-
-any `%type' or `%token' specifying a semantic type which is not a
-subclass of ASTNode, will cause a compile-time error.
-
-   Types used in the directives may be qualified with a package name.
-Primitive data types are accepted for Java version 1.5 or later.  Note
-that in this case the autoboxing feature of Java 1.5 will be used.
-Generic types may not be used; this is due to a limitation in the
-implementation of Bison, and may change in future releases.
-
-   Java parsers do not support `%destructor', since the language adopts
-garbage collection.  The parser will try to hold references to semantic
-values for as little time as needed.
-
-   Java parsers do not support `%printer', as `toString()' can be used
-to print the semantic values.  This however may change (in a
-backwards-compatible way) in future versions of Bison.
-
-\1f
-File: bison.info,  Node: Java Location Values,  Next: Java Parser Interface,  Prev: Java Semantic Values,  Up: Java Parsers
-
-10.2.3 Java Location Values
----------------------------
-
-When the directive `%locations' is used, the Java parser supports
-location tracking, see *note Tracking Locations::.  An auxiliary
-user-defined class defines a "position", a single point in a file;
-Bison itself defines a class representing a "location", a range
-composed of a pair of positions (possibly spanning several files).  The
-location class is an inner class of the parser; the name is `Location'
-by default, and may also be renamed using `%define location_type
-"CLASS-NAME"'.
-
-   The location class treats the position as a completely opaque value.
-By default, the class name is `Position', but this can be changed with
-`%define position_type "CLASS-NAME"'.  This class must be supplied by
-the user.
-
- -- Instance Variable of Location: Position begin
- -- Instance Variable of Location: Position end
-     The first, inclusive, position of the range, and the first beyond.
-
- -- Constructor on Location:  Location (Position LOC)
-     Create a `Location' denoting an empty range located at a given
-     point.
-
- -- Constructor on Location:  Location (Position BEGIN, Position END)
-     Create a `Location' from the endpoints of the range.
-
- -- Method on Location: String toString ()
-     Prints the range represented by the location.  For this to work
-     properly, the position class should override the `equals' and
-     `toString' methods appropriately.
-
-\1f
-File: bison.info,  Node: Java Parser Interface,  Next: Java Scanner Interface,  Prev: Java Location Values,  Up: Java Parsers
-
-10.2.4 Java Parser Interface
-----------------------------
-
-The name of the generated parser class defaults to `YYParser'.  The
-`YY' prefix may be changed using the `%name-prefix' directive or the
-`-p'/`--name-prefix' option.  Alternatively, use `%define
-parser_class_name "NAME"' to give a custom name to the class.  The
-interface of this class is detailed below.
-
-   By default, the parser class has package visibility.  A declaration
-`%define public' will change to public visibility.  Remember that,
-according to the Java language specification, the name of the `.java'
-file should match the name of the class in this case.  Similarly, you
-can use `abstract', `final' and `strictfp' with the `%define'
-declaration to add other modifiers to the parser class.
-
-   The Java package name of the parser class can be specified using the
-`%define package' directive.  The superclass and the implemented
-interfaces of the parser class can be specified with the `%define
-extends' and `%define implements' directives.
-
-   The parser class defines an inner class, `Location', that is used
-for location tracking (see *note Java Location Values::), and a inner
-interface, `Lexer' (see *note Java Scanner Interface::).  Other than
-these inner class/interface, and the members described in the interface
-below, all the other members and fields are preceded with a `yy' or
-`YY' prefix to avoid clashes with user code.
-
-   The parser class can be extended using the `%parse-param' directive.
-Each occurrence of the directive will add a `protected final' field to
-the parser class, and an argument to its constructor, which initialize
-them automatically.
-
-   Token names defined by `%token' and the predefined `EOF' token name
-are added as constant fields to the parser class.
-
- -- Constructor on YYParser:  YYParser (LEX_PARAM, ..., PARSE_PARAM,
-          ...)
-     Build a new parser object with embedded `%code lexer'.  There are
-     no parameters, unless `%parse-param's and/or `%lex-param's are
-     used.
-
- -- Constructor on YYParser:  YYParser (Lexer LEXER, PARSE_PARAM, ...)
-     Build a new parser object using the specified scanner.  There are
-     no additional parameters unless `%parse-param's are used.
-
-     If the scanner is defined by `%code lexer', this constructor is
-     declared `protected' and is called automatically with a scanner
-     created with the correct `%lex-param's.
-
- -- Method on YYParser: boolean parse ()
-     Run the syntactic analysis, and return `true' on success, `false'
-     otherwise.
-
- -- Method on YYParser: boolean recovering ()
-     During the syntactic analysis, return `true' if recovering from a
-     syntax error.  *Note Error Recovery::.
-
- -- Method on YYParser: java.io.PrintStream getDebugStream ()
- -- Method on YYParser: void setDebugStream (java.io.printStream O)
-     Get or set the stream used for tracing the parsing.  It defaults to
-     `System.err'.
-
- -- Method on YYParser: int getDebugLevel ()
- -- Method on YYParser: void setDebugLevel (int L)
-     Get or set the tracing level.  Currently its value is either 0, no
-     trace, or nonzero, full tracing.
-
-\1f
-File: bison.info,  Node: Java Scanner Interface,  Next: Java Action Features,  Prev: Java Parser Interface,  Up: Java Parsers
-
-10.2.5 Java Scanner Interface
------------------------------
-
-There are two possible ways to interface a Bison-generated Java parser
-with a scanner: the scanner may be defined by `%code lexer', or defined
-elsewhere.  In either case, the scanner has to implement the `Lexer'
-inner interface of the parser class.
-
-   In the first case, the body of the scanner class is placed in `%code
-lexer' blocks.  If you want to pass parameters from the parser
-constructor to the scanner constructor, specify them with `%lex-param';
-they are passed before `%parse-param's to the constructor.
-
-   In the second case, the scanner has to implement the `Lexer'
-interface, which is defined within the parser class (e.g.,
-`YYParser.Lexer').  The constructor of the parser object will then
-accept an object implementing the interface; `%lex-param' is not used
-in this case.
-
-   In both cases, the scanner has to implement the following methods.
-
- -- Method on Lexer: void yyerror (Location LOC, String MSG)
-     This method is defined by the user to emit an error message.  The
-     first parameter is omitted if location tracking is not active.
-     Its type can be changed using `%define location_type "CLASS-NAME".'
-
- -- Method on Lexer: int yylex ()
-     Return the next token.  Its type is the return value, its semantic
-     value and location are saved and returned by the their methods in
-     the interface.
-
-     Use `%define lex_throws' to specify any uncaught exceptions.
-     Default is `java.io.IOException'.
-
- -- Method on Lexer: Position getStartPos ()
- -- Method on Lexer: Position getEndPos ()
-     Return respectively the first position of the last token that
-     `yylex' returned, and the first position beyond it.  These methods
-     are not needed unless location tracking is active.
-
-     The return type can be changed using `%define position_type
-     "CLASS-NAME".'
-
- -- Method on Lexer: Object getLVal ()
-     Return the semantic value of the last token that yylex returned.
-
-     The return type can be changed using `%define stype "CLASS-NAME".'
-
-\1f
-File: bison.info,  Node: Java Action Features,  Next: Java Differences,  Prev: Java Scanner Interface,  Up: Java Parsers
-
-10.2.6 Special Features for Use in Java Actions
------------------------------------------------
-
-The following special constructs can be uses in Java actions.  Other
-analogous C action features are currently unavailable for Java.
-
-   Use `%define throws' to specify any uncaught exceptions from parser
-actions, and initial actions specified by `%initial-action'.
-
- -- Variable: $N
-     The semantic value for the Nth component of the current rule.
-     This may not be assigned to.  *Note Java Semantic Values::.
-
- -- Variable: $<TYPEALT>N
-     Like `$N' but specifies a alternative type TYPEALT.  *Note Java
-     Semantic Values::.
-
- -- Variable: $$
-     The semantic value for the grouping made by the current rule.  As a
-     value, this is in the base type (`Object' or as specified by
-     `%define stype') as in not cast to the declared subtype because
-     casts are not allowed on the left-hand side of Java assignments.
-     Use an explicit Java cast if the correct subtype is needed.  *Note
-     Java Semantic Values::.
-
- -- Variable: $<TYPEALT>$
-     Same as `$$' since Java always allow assigning to the base type.
-     Perhaps we should use this and `$<>$' for the value and `$$' for
-     setting the value but there is currently no easy way to distinguish
-     these constructs.  *Note Java Semantic Values::.
-
- -- Variable: @N
-     The location information of the Nth component of the current rule.
-     This may not be assigned to.  *Note Java Location Values::.
-
- -- Variable: @$
-     The location information of the grouping made by the current rule.
-     *Note Java Location Values::.
-
- -- Statement: return YYABORT `;'
-     Return immediately from the parser, indicating failure.  *Note
-     Java Parser Interface::.
-
- -- Statement: return YYACCEPT `;'
-     Return immediately from the parser, indicating success.  *Note
-     Java Parser Interface::.
-
- -- Statement: return YYERROR `;'
-     Start error recovery (without printing an error message).  *Note
-     Error Recovery::.
-
- -- Function: boolean recovering ()
-     Return whether error recovery is being done. In this state, the
-     parser reads token until it reaches a known state, and then
-     restarts normal operation.  *Note Error Recovery::.
-
- -- Function: protected void yyerror (String msg)
- -- Function: protected void yyerror (Position pos, String msg)
- -- Function: protected void yyerror (Location loc, String msg)
-     Print an error message using the `yyerror' method of the scanner
-     instance in use.
-
-\1f
-File: bison.info,  Node: Java Differences,  Next: Java Declarations Summary,  Prev: Java Action Features,  Up: Java Parsers
-
-10.2.7 Differences between C/C++ and Java Grammars
---------------------------------------------------
-
-The different structure of the Java language forces several differences
-between C/C++ grammars, and grammars designed for Java parsers.  This
-section summarizes these differences.
-
-   * Java lacks a preprocessor, so the `YYERROR', `YYACCEPT', `YYABORT'
-     symbols (*note Table of Symbols::) cannot obviously be macros.
-     Instead, they should be preceded by `return' when they appear in
-     an action.  The actual definition of these symbols is opaque to
-     the Bison grammar, and it might change in the future.  The only
-     meaningful operation that you can do, is to return them.  *Note
-     Java Action Features::.
-
-     Note that of these three symbols, only `YYACCEPT' and `YYABORT'
-     will cause a return from the `yyparse' method(1).
-
-   * Java lacks unions, so `%union' has no effect.  Instead, semantic
-     values have a common base type: `Object' or as specified by
-     `%define stype'.  Angle brackets on `%token', `type', `$N' and
-     `$$' specify subtypes rather than fields of an union.  The type of
-     `$$', even with angle brackets, is the base type since Java casts
-     are not allow on the left-hand side of assignments.  Also, `$N'
-     and `@N' are not allowed on the left-hand side of assignments.
-     *Note Java Semantic Values::, and *note Java Action Features::.
-
-   * The prologue declarations have a different meaning than in C/C++
-     code.
-    `%code imports'
-          blocks are placed at the beginning of the Java source code.
-          They may include copyright notices.  For a `package'
-          declarations, it is suggested to use `%define package'
-          instead.
-
-    unqualified `%code'
-          blocks are placed inside the parser class.
-
-    `%code lexer'
-          blocks, if specified, should include the implementation of the
-          scanner.  If there is no such block, the scanner can be any
-          class that implements the appropriate interface (*note Java
-          Scanner Interface::).
-
-     Other `%code' blocks are not supported in Java parsers.  In
-     particular, `%{ ... %}' blocks should not be used and may give an
-     error in future versions of Bison.
-
-     The epilogue has the same meaning as in C/C++ code and it can be
-     used to define other classes used by the parser _outside_ the
-     parser class.
-
-   ---------- Footnotes ----------
-
-   (1) Java parsers include the actions in a separate method than
-`yyparse' in order to have an intuitive syntax that corresponds to
-these C macros.
-
-\1f
-File: bison.info,  Node: Java Declarations Summary,  Prev: Java Differences,  Up: Java Parsers
-
-10.2.8 Java Declarations Summary
---------------------------------
-
-This summary only include declarations specific to Java or have special
-meaning when used in a Java parser.
-
- -- Directive: %language "Java"
-     Generate a Java class for the parser.
-
- -- Directive: %lex-param {TYPE NAME}
-     A parameter for the lexer class defined by `%code lexer' _only_,
-     added as parameters to the lexer constructor and the parser
-     constructor that _creates_ a lexer.  Default is none.  *Note Java
-     Scanner Interface::.
-
- -- Directive: %name-prefix "PREFIX"
-     The prefix of the parser class name `PREFIXParser' if `%define
-     parser_class_name' is not used.  Default is `YY'.  *Note Java
-     Bison Interface::.
-
- -- Directive: %parse-param {TYPE NAME}
-     A parameter for the parser class added as parameters to
-     constructor(s) and as fields initialized by the constructor(s).
-     Default is none.  *Note Java Parser Interface::.
-
- -- Directive: %token <TYPE> TOKEN ...
-     Declare tokens.  Note that the angle brackets enclose a Java
-     _type_.  *Note Java Semantic Values::.
-
- -- Directive: %type <TYPE> NONTERMINAL ...
-     Declare the type of nonterminals.  Note that the angle brackets
-     enclose a Java _type_.  *Note Java Semantic Values::.
-
- -- Directive: %code { CODE ... }
-     Code appended to the inside of the parser class.  *Note Java
-     Differences::.
-
- -- Directive: %code imports { CODE ... }
-     Code inserted just after the `package' declaration.  *Note Java
-     Differences::.
-
- -- Directive: %code lexer { CODE ... }
-     Code added to the body of a inner lexer class within the parser
-     class.  *Note Java Scanner Interface::.
-
- -- Directive: %% CODE ...
-     Code (after the second `%%') appended to the end of the file,
-     _outside_ the parser class.  *Note Java Differences::.
-
- -- Directive: %{ CODE ... %}
-     Not supported.  Use `%code import' instead.  *Note Java
-     Differences::.
-
- -- Directive: %define abstract
-     Whether the parser class is declared `abstract'.  Default is false.
-     *Note Java Bison Interface::.
-
- -- Directive: %define extends "SUPERCLASS"
-     The superclass of the parser class.  Default is none.  *Note Java
-     Bison Interface::.
-
- -- Directive: %define final
-     Whether the parser class is declared `final'.  Default is false.
-     *Note Java Bison Interface::.
-
- -- Directive: %define implements "INTERFACES"
-     The implemented interfaces of the parser class, a comma-separated
-     list.  Default is none.  *Note Java Bison Interface::.
-
- -- Directive: %define lex_throws "EXCEPTIONS"
-     The exceptions thrown by the `yylex' method of the lexer, a
-     comma-separated list.  Default is `java.io.IOException'.  *Note
-     Java Scanner Interface::.
-
- -- Directive: %define location_type "CLASS"
-     The name of the class used for locations (a range between two
-     positions).  This class is generated as an inner class of the
-     parser class by `bison'.  Default is `Location'.  *Note Java
-     Location Values::.
-
- -- Directive: %define package "PACKAGE"
-     The package to put the parser class in.  Default is none.  *Note
-     Java Bison Interface::.
-
- -- Directive: %define parser_class_name "NAME"
-     The name of the parser class.  Default is `YYParser' or
-     `NAME-PREFIXParser'.  *Note Java Bison Interface::.
-
- -- Directive: %define position_type "CLASS"
-     The name of the class used for positions. This class must be
-     supplied by the user.  Default is `Position'.  *Note Java Location
-     Values::.
-
- -- Directive: %define public
-     Whether the parser class is declared `public'.  Default is false.
-     *Note Java Bison Interface::.
-
- -- Directive: %define stype "CLASS"
-     The base type of semantic values.  Default is `Object'.  *Note
-     Java Semantic Values::.
-
- -- Directive: %define strictfp
-     Whether the parser class is declared `strictfp'.  Default is false.
-     *Note Java Bison Interface::.
-
- -- Directive: %define throws "EXCEPTIONS"
-     The exceptions thrown by user-supplied parser actions and
-     `%initial-action', a comma-separated list.  Default is none.
-     *Note Java Parser Interface::.
-
-\1f
-File: bison.info,  Node: FAQ,  Next: Table of Symbols,  Prev: Other Languages,  Up: Top
-
-11 Frequently Asked Questions
-*****************************
-
-Several questions about Bison come up occasionally.  Here some of them
-are addressed.
-
-* Menu:
-
-* Memory Exhausted::            Breaking the Stack Limits
-* How Can I Reset the Parser::  `yyparse' Keeps some State
-* Strings are Destroyed::       `yylval' Loses Track of Strings
-* Implementing Gotos/Loops::    Control Flow in the Calculator
-* Multiple start-symbols::      Factoring closely related grammars
-* Secure?  Conform?::           Is Bison POSIX safe?
-* I can't build Bison::         Troubleshooting
-* Where can I find help?::      Troubleshouting
-* Bug Reports::                 Troublereporting
-* More Languages::              Parsers in C++, Java, and so on
-* Beta Testing::                Experimenting development versions
-* Mailing Lists::               Meeting other Bison users
-
-\1f
-File: bison.info,  Node: Memory Exhausted,  Next: How Can I Reset the Parser,  Up: FAQ
-
-11.1 Memory Exhausted
-=====================
-
-     My parser returns with error with a `memory exhausted' message.
-     What can I do?
-
-   This question is already addressed elsewhere, see *note Recursive
-Rules: Recursion.
-
-\1f
-File: bison.info,  Node: How Can I Reset the Parser,  Next: Strings are Destroyed,  Prev: Memory Exhausted,  Up: FAQ
-
-11.2 How Can I Reset the Parser
-===============================
-
-The following phenomenon has several symptoms, resulting in the
-following typical questions:
-
-     I invoke `yyparse' several times, and on correct input it works
-     properly; but when a parse error is found, all the other calls fail
-     too.  How can I reset the error flag of `yyparse'?
-
-or
-
-     My parser includes support for an `#include'-like feature, in
-     which case I run `yyparse' from `yyparse'.  This fails although I
-     did specify `%define api.pure'.
-
-   These problems typically come not from Bison itself, but from
-Lex-generated scanners.  Because these scanners use large buffers for
-speed, they might not notice a change of input file.  As a
-demonstration, consider the following source file, `first-line.l':
-
-     %{
-     #include <stdio.h>
-     #include <stdlib.h>
-     %}
-     %%
-     .*\n    ECHO; return 1;
-     %%
-     int
-     yyparse (char const *file)
-     {
-       yyin = fopen (file, "r");
-       if (!yyin)
-         {
-           perror ("fopen");
-           exit (EXIT_FAILURE);
-         }
-       /* One token only.  */
-       yylex ();
-       if (fclose (yyin) != 0)
-         {
-           perror ("fclose");
-           exit (EXIT_FAILURE);
-         }
-       return 0;
-     }
-
-     int
-     main (void)
-     {
-       yyparse ("input");
-       yyparse ("input");
-       return 0;
-     }
-
-If the file `input' contains
-
-     input:1: Hello,
-     input:2: World!
-
-then instead of getting the first line twice, you get:
-
-     $ flex -ofirst-line.c first-line.l
-     $ gcc  -ofirst-line   first-line.c -ll
-     $ ./first-line
-     input:1: Hello,
-     input:2: World!
-
-   Therefore, whenever you change `yyin', you must tell the
-Lex-generated scanner to discard its current buffer and switch to the
-new one.  This depends upon your implementation of Lex; see its
-documentation for more.  For Flex, it suffices to call
-`YY_FLUSH_BUFFER' after each change to `yyin'.  If your Flex-generated
-scanner needs to read from several input streams to handle features
-like include files, you might consider using Flex functions like
-`yy_switch_to_buffer' that manipulate multiple input buffers.
-
-   If your Flex-generated scanner uses start conditions (*note Start
-conditions: (flex)Start conditions.), you might also want to reset the
-scanner's state, i.e., go back to the initial start condition, through
-a call to `BEGIN (0)'.
-
-\1f
-File: bison.info,  Node: Strings are Destroyed,  Next: Implementing Gotos/Loops,  Prev: How Can I Reset the Parser,  Up: FAQ
-
-11.3 Strings are Destroyed
-==========================
-
-     My parser seems to destroy old strings, or maybe it loses track of
-     them.  Instead of reporting `"foo", "bar"', it reports `"bar",
-     "bar"', or even `"foo\nbar", "bar"'.
-
-   This error is probably the single most frequent "bug report" sent to
-Bison lists, but is only concerned with a misunderstanding of the role
-of the scanner.  Consider the following Lex code:
-
-     %{
-     #include <stdio.h>
-     char *yylval = NULL;
-     %}
-     %%
-     .*    yylval = yytext; return 1;
-     \n    /* IGNORE */
-     %%
-     int
-     main ()
-     {
-       /* Similar to using $1, $2 in a Bison action.  */
-       char *fst = (yylex (), yylval);
-       char *snd = (yylex (), yylval);
-       printf ("\"%s\", \"%s\"\n", fst, snd);
-       return 0;
-     }
-
-   If you compile and run this code, you get:
-
-     $ flex -osplit-lines.c split-lines.l
-     $ gcc  -osplit-lines   split-lines.c -ll
-     $ printf 'one\ntwo\n' | ./split-lines
-     "one
-     two", "two"
-
-this is because `yytext' is a buffer provided for _reading_ in the
-action, but if you want to keep it, you have to duplicate it (e.g.,
-using `strdup').  Note that the output may depend on how your
-implementation of Lex handles `yytext'.  For instance, when given the
-Lex compatibility option `-l' (which triggers the option `%array') Flex
-generates a different behavior:
-
-     $ flex -l -osplit-lines.c split-lines.l
-     $ gcc     -osplit-lines   split-lines.c -ll
-     $ printf 'one\ntwo\n' | ./split-lines
-     "two", "two"
-
-\1f
-File: bison.info,  Node: Implementing Gotos/Loops,  Next: Multiple start-symbols,  Prev: Strings are Destroyed,  Up: FAQ
-
-11.4 Implementing Gotos/Loops
-=============================
-
-     My simple calculator supports variables, assignments, and
-     functions, but how can I implement gotos, or loops?
-
-   Although very pedagogical, the examples included in the document blur
-the distinction to make between the parser--whose job is to recover the
-structure of a text and to transmit it to subsequent modules of the
-program--and the processing (such as the execution) of this structure.
-This works well with so called straight line programs, i.e., precisely
-those that have a straightforward execution model: execute simple
-instructions one after the others.
-
-   If you want a richer model, you will probably need to use the parser
-to construct a tree that does represent the structure it has recovered;
-this tree is usually called the "abstract syntax tree", or "AST" for
-short.  Then, walking through this tree, traversing it in various ways,
-will enable treatments such as its execution or its translation, which
-will result in an interpreter or a compiler.
-
-   This topic is way beyond the scope of this manual, and the reader is
-invited to consult the dedicated literature.
-
-\1f
-File: bison.info,  Node: Multiple start-symbols,  Next: Secure? Conform?,  Prev: Implementing Gotos/Loops,  Up: FAQ
-
-11.5 Multiple start-symbols
-===========================
-
-     I have several closely related grammars, and I would like to share
-     their implementations.  In fact, I could use a single grammar but
-     with multiple entry points.
-
-   Bison does not support multiple start-symbols, but there is a very
-simple means to simulate them.  If `foo' and `bar' are the two pseudo
-start-symbols, then introduce two new tokens, say `START_FOO' and
-`START_BAR', and use them as switches from the real start-symbol:
-
-     %token START_FOO START_BAR;
-     %start start;
-     start:
-       START_FOO foo
-     | START_BAR bar;
-
-   These tokens prevents the introduction of new conflicts.  As far as
-the parser goes, that is all that is needed.
-
-   Now the difficult part is ensuring that the scanner will send these
-tokens first.  If your scanner is hand-written, that should be
-straightforward.  If your scanner is generated by Lex, them there is
-simple means to do it: recall that anything between `%{ ... %}' after
-the first `%%' is copied verbatim in the top of the generated `yylex'
-function.  Make sure a variable `start_token' is available in the
-scanner (e.g., a global variable or using `%lex-param' etc.), and use
-the following:
-
-       /* Prologue.  */
-     %%
-     %{
-       if (start_token)
-         {
-           int t = start_token;
-           start_token = 0;
-           return t;
-         }
-     %}
-       /* The rules.  */
-
-\1f
-File: bison.info,  Node: Secure? Conform?,  Next: I can't build Bison,  Prev: Multiple start-symbols,  Up: FAQ
-
-11.6 Secure?  Conform?
-======================
-
-     Is Bison secure?  Does it conform to POSIX?
-
-   If you're looking for a guarantee or certification, we don't provide
-it.  However, Bison is intended to be a reliable program that conforms
-to the POSIX specification for Yacc.  If you run into problems, please
-send us a bug report.
-
-\1f
-File: bison.info,  Node: I can't build Bison,  Next: Where can I find help?,  Prev: Secure? Conform?,  Up: FAQ
-
-11.7 I can't build Bison
-========================
-
-     I can't build Bison because `make' complains that `msgfmt' is not
-     found.  What should I do?
-
-   Like most GNU packages with internationalization support, that
-feature is turned on by default.  If you have problems building in the
-`po' subdirectory, it indicates that your system's internationalization
-support is lacking.  You can re-configure Bison with `--disable-nls' to
-turn off this support, or you can install GNU gettext from
-`ftp://ftp.gnu.org/gnu/gettext/' and re-configure Bison.  See the file
-`ABOUT-NLS' for more information.
-
-\1f
-File: bison.info,  Node: Where can I find help?,  Next: Bug Reports,  Prev: I can't build Bison,  Up: FAQ
-
-11.8 Where can I find help?
-===========================
-
-     I'm having trouble using Bison.  Where can I find help?
-
-   First, read this fine manual.  Beyond that, you can send mail to
-<help-bison@gnu.org>.  This mailing list is intended to be populated
-with people who are willing to answer questions about using and
-installing Bison.  Please keep in mind that (most of) the people on the
-list have aspects of their lives which are not related to Bison (!), so
-you may not receive an answer to your question right away.  This can be
-frustrating, but please try not to honk them off; remember that any
-help they provide is purely voluntary and out of the kindness of their
-hearts.
-
-\1f
-File: bison.info,  Node: Bug Reports,  Next: More Languages,  Prev: Where can I find help?,  Up: FAQ
-
-11.9 Bug Reports
-================
-
-     I found a bug.  What should I include in the bug report?
-
-   Before you send a bug report, make sure you are using the latest
-version.  Check `ftp://ftp.gnu.org/pub/gnu/bison/' or one of its
-mirrors.  Be sure to include the version number in your bug report.  If
-the bug is present in the latest version but not in a previous version,
-try to determine the most recent version which did not contain the bug.
-
-   If the bug is parser-related, you should include the smallest grammar
-you can which demonstrates the bug.  The grammar file should also be
-complete (i.e., I should be able to run it through Bison without having
-to edit or add anything).  The smaller and simpler the grammar, the
-easier it will be to fix the bug.
-
-   Include information about your compilation environment, including
-your operating system's name and version and your compiler's name and
-version.  If you have trouble compiling, you should also include a
-transcript of the build session, starting with the invocation of
-`configure'.  Depending on the nature of the bug, you may be asked to
-send additional files as well (such as `config.h' or `config.cache').
-
-   Patches are most welcome, but not required.  That is, do not
-hesitate to send a bug report just because you cannot provide a fix.
-
-   Send bug reports to <bug-bison@gnu.org>.
-
-\1f
-File: bison.info,  Node: More Languages,  Next: Beta Testing,  Prev: Bug Reports,  Up: FAQ
-
-11.10 More Languages
-====================
-
-     Will Bison ever have C++ and Java support?  How about INSERT YOUR
-     FAVORITE LANGUAGE HERE?
-
-   C++ and Java support is there now, and is documented.  We'd love to
-add other languages; contributions are welcome.
-
-\1f
-File: bison.info,  Node: Beta Testing,  Next: Mailing Lists,  Prev: More Languages,  Up: FAQ
-
-11.11 Beta Testing
-==================
-
-     What is involved in being a beta tester?
-
-   It's not terribly involved.  Basically, you would download a test
-release, compile it, and use it to build and run a parser or two.  After
-that, you would submit either a bug report or a message saying that
-everything is okay.  It is important to report successes as well as
-failures because test releases eventually become mainstream releases,
-but only if they are adequately tested.  If no one tests, development is
-essentially halted.
-
-   Beta testers are particularly needed for operating systems to which
-the developers do not have easy access.  They currently have easy
-access to recent GNU/Linux and Solaris versions.  Reports about other
-operating systems are especially welcome.
-
-\1f
-File: bison.info,  Node: Mailing Lists,  Prev: Beta Testing,  Up: FAQ
-
-11.12 Mailing Lists
-===================
-
-     How do I join the help-bison and bug-bison mailing lists?
-
-   See `http://lists.gnu.org/'.
-
-\1f
-File: bison.info,  Node: Table of Symbols,  Next: Glossary,  Prev: FAQ,  Up: Top
-
-Annexe A Bison Symbols
-**********************
-
- -- Variable: @$
-     In an action, the location of the left-hand side of the rule.
-     *Note Tracking Locations::.
-
- -- Variable: @N
-     In an action, the location of the N-th symbol of the right-hand
-     side of the rule.  *Note Tracking Locations::.
-
- -- Variable: @NAME
-     In an action, the location of a symbol addressed by name.  *Note
-     Tracking Locations::.
-
- -- Variable: @[NAME]
-     In an action, the location of a symbol addressed by name.  *Note
-     Tracking Locations::.
-
- -- Variable: $$
-     In an action, the semantic value of the left-hand side of the rule.
-     *Note Actions::.
-
- -- Variable: $N
-     In an action, the semantic value of the N-th symbol of the
-     right-hand side of the rule.  *Note Actions::.
-
- -- Variable: $NAME
-     In an action, the semantic value of a symbol addressed by name.
-     *Note Actions::.
-
- -- Variable: $[NAME]
-     In an action, the semantic value of a symbol addressed by name.
-     *Note Actions::.
-
- -- Delimiter: %%
-     Delimiter used to separate the grammar rule section from the Bison
-     declarations section or the epilogue.  *Note The Overall Layout of
-     a Bison Grammar: Grammar Layout.
-
- -- Delimiter: %{CODE%}
-     All code listed between `%{' and `%}' is copied verbatim to the
-     parser implementation file.  Such code forms the prologue of the
-     grammar file.  *Note Outline of a Bison Grammar: Grammar Outline.
-
- -- Construct: /*...*/
-     Comment delimiters, as in C.
-
- -- Delimiter: :
-     Separates a rule's result from its components.  *Note Syntax of
-     Grammar Rules: Rules.
-
- -- Delimiter: ;
-     Terminates a rule.  *Note Syntax of Grammar Rules: Rules.
-
- -- Delimiter: |
-     Separates alternate rules for the same result nonterminal.  *Note
-     Syntax of Grammar Rules: Rules.
-
- -- Directive: <*>
-     Used to define a default tagged `%destructor' or default tagged
-     `%printer'.
-
-     This feature is experimental.  More user feedback will help to
-     determine whether it should become a permanent feature.
-
-     *Note Freeing Discarded Symbols: Destructor Decl.
-
- -- Directive: <>
-     Used to define a default tagless `%destructor' or default tagless
-     `%printer'.
-
-     This feature is experimental.  More user feedback will help to
-     determine whether it should become a permanent feature.
-
-     *Note Freeing Discarded Symbols: Destructor Decl.
-
- -- Symbol: $accept
-     The predefined nonterminal whose only rule is `$accept: START
-     $end', where START is the start symbol.  *Note The Start-Symbol:
-     Start Decl.  It cannot be used in the grammar.
-
- -- Directive: %code {CODE}
- -- Directive: %code QUALIFIER {CODE}
-     Insert CODE verbatim into the output parser source at the default
-     location or at the location specified by QUALIFIER.  *Note %code
-     Summary::.
-
- -- Directive: %debug
-     Equip the parser for debugging.  *Note Decl Summary::.
-
- -- Directive: %define VARIABLE
- -- Directive: %define VARIABLE VALUE
- -- Directive: %define VARIABLE "VALUE"
-     Define a variable to adjust Bison's behavior.  *Note %define
-     Summary::.
-
- -- Directive: %defines
-     Bison declaration to create a parser header file, which is usually
-     meant for the scanner.  *Note Decl Summary::.
-
- -- Directive: %defines DEFINES-FILE
-     Same as above, but save in the file DEFINES-FILE.  *Note Decl
-     Summary::.
-
- -- Directive: %destructor
-     Specify how the parser should reclaim the memory associated to
-     discarded symbols.  *Note Freeing Discarded Symbols: Destructor
-     Decl.
-
- -- Directive: %dprec
-     Bison declaration to assign a precedence to a rule that is used at
-     parse time to resolve reduce/reduce conflicts.  *Note Writing GLR
-     Parsers: GLR Parsers.
-
- -- Symbol: $end
-     The predefined token marking the end of the token stream.  It
-     cannot be used in the grammar.
-
- -- Symbol: error
-     A token name reserved for error recovery.  This token may be used
-     in grammar rules so as to allow the Bison parser to recognize an
-     error in the grammar without halting the process.  In effect, a
-     sentence containing an error may be recognized as valid.  On a
-     syntax error, the token `error' becomes the current lookahead
-     token.  Actions corresponding to `error' are then executed, and
-     the lookahead token is reset to the token that originally caused
-     the violation.  *Note Error Recovery::.
-
- -- Directive: %error-verbose
-     Bison declaration to request verbose, specific error message
-     strings when `yyerror' is called.  *Note Error Reporting::.
-
- -- Directive: %file-prefix "PREFIX"
-     Bison declaration to set the prefix of the output files.  *Note
-     Decl Summary::.
-
- -- Directive: %glr-parser
-     Bison declaration to produce a GLR parser.  *Note Writing GLR
-     Parsers: GLR Parsers.
-
- -- Directive: %initial-action
-     Run user code before parsing.  *Note Performing Actions before
-     Parsing: Initial Action Decl.
-
- -- Directive: %language
-     Specify the programming language for the generated parser.  *Note
-     Decl Summary::.
-
- -- Directive: %left
-     Bison declaration to assign left associativity to token(s).  *Note
-     Operator Precedence: Precedence Decl.
-
- -- Directive: %lex-param {ARGUMENT-DECLARATION}
-     Bison declaration to specifying an additional parameter that
-     `yylex' should accept.  *Note Calling Conventions for Pure
-     Parsers: Pure Calling.
-
- -- Directive: %merge
-     Bison declaration to assign a merging function to a rule.  If
-     there is a reduce/reduce conflict with a rule having the same
-     merging function, the function is applied to the two semantic
-     values to get a single result.  *Note Writing GLR Parsers: GLR
-     Parsers.
-
- -- Directive: %name-prefix "PREFIX"
-     Obsoleted by the `%define' variable `api.prefix' (*note Multiple
-     Parsers in the Same Program: Multiple Parsers.).
-
-     Rename the external symbols (variables and functions) used in the
-     parser so that they start with PREFIX instead of `yy'.  Contrary to
-     `api.prefix', do no rename types and macros.
-
-     The precise list of symbols renamed in C parsers is `yyparse',
-     `yylex', `yyerror', `yynerrs', `yylval', `yychar', `yydebug', and
-     (if locations are used) `yylloc'.  If you use a push parser,
-     `yypush_parse', `yypull_parse', `yypstate', `yypstate_new' and
-     `yypstate_delete' will also be renamed.  For example, if you use
-     `%name-prefix "c_"', the names become `c_parse', `c_lex', and so
-     on.  For C++ parsers, see the `%define namespace' documentation in
-     this section.
-
- -- Directive: %no-lines
-     Bison declaration to avoid generating `#line' directives in the
-     parser implementation file.  *Note Decl Summary::.
-
- -- Directive: %nonassoc
-     Bison declaration to assign nonassociativity to token(s).  *Note
-     Operator Precedence: Precedence Decl.
-
- -- Directive: %output "FILE"
-     Bison declaration to set the name of the parser implementation
-     file.  *Note Decl Summary::.
-
- -- Directive: %parse-param {ARGUMENT-DECLARATION}
-     Bison declaration to specifying an additional parameter that
-     `yyparse' should accept.  *Note The Parser Function `yyparse':
-     Parser Function.
-
- -- Directive: %prec
-     Bison declaration to assign a precedence to a specific rule.
-     *Note Context-Dependent Precedence: Contextual Precedence.
-
- -- Directive: %pure-parser
-     Deprecated version of `%define api.pure' (*note api.pure: %define
-     Summary.), for which Bison is more careful to warn about
-     unreasonable usage.
-
- -- Directive: %require "VERSION"
-     Require version VERSION or higher of Bison.  *Note Require a
-     Version of Bison: Require Decl.
-
- -- Directive: %right
-     Bison declaration to assign right associativity to token(s).
-     *Note Operator Precedence: Precedence Decl.
-
- -- Directive: %skeleton
-     Specify the skeleton to use; usually for development.  *Note Decl
-     Summary::.
-
- -- Directive: %start
-     Bison declaration to specify the start symbol.  *Note The
-     Start-Symbol: Start Decl.
-
- -- Directive: %token
-     Bison declaration to declare token(s) without specifying
-     precedence.  *Note Token Type Names: Token Decl.
-
- -- Directive: %token-table
-     Bison declaration to include a token name table in the parser
-     implementation file.  *Note Decl Summary::.
-
- -- Directive: %type
-     Bison declaration to declare nonterminals.  *Note Nonterminal
-     Symbols: Type Decl.
-
- -- Symbol: $undefined
-     The predefined token onto which all undefined values returned by
-     `yylex' are mapped.  It cannot be used in the grammar, rather, use
-     `error'.
-
- -- Directive: %union
-     Bison declaration to specify several possible data types for
-     semantic values.  *Note The Collection of Value Types: Union Decl.
-
- -- Macro: YYABORT
-     Macro to pretend that an unrecoverable syntax error has occurred,
-     by making `yyparse' return 1 immediately.  The error reporting
-     function `yyerror' is not called.  *Note The Parser Function
-     `yyparse': Parser Function.
-
-     For Java parsers, this functionality is invoked using `return
-     YYABORT;' instead.
-
- -- Macro: YYACCEPT
-     Macro to pretend that a complete utterance of the language has been
-     read, by making `yyparse' return 0 immediately.  *Note The Parser
-     Function `yyparse': Parser Function.
-
-     For Java parsers, this functionality is invoked using `return
-     YYACCEPT;' instead.
-
- -- Macro: YYBACKUP
-     Macro to discard a value from the parser stack and fake a lookahead
-     token.  *Note Special Features for Use in Actions: Action Features.
-
- -- Variable: yychar
-     External integer variable that contains the integer value of the
-     lookahead token.  (In a pure parser, it is a local variable within
-     `yyparse'.)  Error-recovery rule actions may examine this variable.
-     *Note Special Features for Use in Actions: Action Features.
-
- -- Variable: yyclearin
-     Macro used in error-recovery rule actions.  It clears the previous
-     lookahead token.  *Note Error Recovery::.
-
- -- Macro: YYDEBUG
-     Macro to define to equip the parser with tracing code.  *Note
-     Tracing Your Parser: Tracing.
-
- -- Variable: yydebug
-     External integer variable set to zero by default.  If `yydebug' is
-     given a nonzero value, the parser will output information on input
-     symbols and parser action.  *Note Tracing Your Parser: Tracing.
-
- -- Macro: yyerrok
-     Macro to cause parser to recover immediately to its normal mode
-     after a syntax error.  *Note Error Recovery::.
-
- -- Macro: YYERROR
-     Cause an immediate syntax error.  This statement initiates error
-     recovery just as if the parser itself had detected an error;
-     however, it does not call `yyerror', and does not print any
-     message.  If you want to print an error message, call `yyerror'
-     explicitly before the `YYERROR;' statement.  *Note Error
-     Recovery::.
-
-     For Java parsers, this functionality is invoked using `return
-     YYERROR;' instead.
-
- -- Function: yyerror
-     User-supplied function to be called by `yyparse' on error.  *Note
-     The Error Reporting Function `yyerror': Error Reporting.
-
- -- Macro: YYERROR_VERBOSE
-     An obsolete macro that you define with `#define' in the prologue
-     to request verbose, specific error message strings when `yyerror'
-     is called.  It doesn't matter what definition you use for
-     `YYERROR_VERBOSE', just whether you define it.  Supported by the C
-     skeletons only; using `%error-verbose' is preferred.  *Note Error
-     Reporting::.
-
- -- Macro: YYFPRINTF
-     Macro used to output run-time traces.  *Note Enabling Traces::.
-
- -- Macro: YYINITDEPTH
-     Macro for specifying the initial size of the parser stack.  *Note
-     Memory Management::.
-
- -- Function: yylex
-     User-supplied lexical analyzer function, called with no arguments
-     to get the next token.  *Note The Lexical Analyzer Function
-     `yylex': Lexical.
-
- -- Macro: YYLEX_PARAM
-     An obsolete macro for specifying an extra argument (or list of
-     extra arguments) for `yyparse' to pass to `yylex'.  The use of this
-     macro is deprecated, and is supported only for Yacc like parsers.
-     *Note Calling Conventions for Pure Parsers: Pure Calling.
-
- -- Variable: yylloc
-     External variable in which `yylex' should place the line and column
-     numbers associated with a token.  (In a pure parser, it is a local
-     variable within `yyparse', and its address is passed to `yylex'.)
-     You can ignore this variable if you don't use the `@' feature in
-     the grammar actions.  *Note Textual Locations of Tokens: Token
-     Locations.  In semantic actions, it stores the location of the
-     lookahead token.  *Note Actions and Locations: Actions and
-     Locations.
-
- -- Type: YYLTYPE
-     Data type of `yylloc'; by default, a structure with four members.
-     *Note Data Types of Locations: Location Type.
-
- -- Variable: yylval
-     External variable in which `yylex' should place the semantic value
-     associated with a token.  (In a pure parser, it is a local
-     variable within `yyparse', and its address is passed to `yylex'.)
-     *Note Semantic Values of Tokens: Token Values.  In semantic
-     actions, it stores the semantic value of the lookahead token.
-     *Note Actions: Actions.
-
- -- Macro: YYMAXDEPTH
-     Macro for specifying the maximum size of the parser stack.  *Note
-     Memory Management::.
-
- -- Variable: yynerrs
-     Global variable which Bison increments each time it reports a
-     syntax error.  (In a pure parser, it is a local variable within
-     `yyparse'. In a pure push parser, it is a member of yypstate.)
-     *Note The Error Reporting Function `yyerror': Error Reporting.
-
- -- Function: yyparse
-     The parser function produced by Bison; call this function to start
-     parsing.  *Note The Parser Function `yyparse': Parser Function.
-
- -- Macro: YYPRINT
-     Macro used to output token semantic values.  For `yacc.c' only.
-     Obsoleted by `%printer'.  *Note The `YYPRINT' Macro: The YYPRINT
-     Macro.
-
- -- Function: yypstate_delete
-     The function to delete a parser instance, produced by Bison in
-     push mode; call this function to delete the memory associated with
-     a parser.  *Note The Parser Delete Function `yypstate_delete':
-     Parser Delete Function.  (The current push parsing interface is
-     experimental and may evolve.  More user feedback will help to
-     stabilize it.)
-
- -- Function: yypstate_new
-     The function to create a parser instance, produced by Bison in
-     push mode; call this function to create a new parser.  *Note The
-     Parser Create Function `yypstate_new': Parser Create Function.
-     (The current push parsing interface is experimental and may evolve.
-     More user feedback will help to stabilize it.)
-
- -- Function: yypull_parse
-     The parser function produced by Bison in push mode; call this
-     function to parse the rest of the input stream.  *Note The Pull
-     Parser Function `yypull_parse': Pull Parser Function.  (The
-     current push parsing interface is experimental and may evolve.
-     More user feedback will help to stabilize it.)
-
- -- Function: yypush_parse
-     The parser function produced by Bison in push mode; call this
-     function to parse a single token.  *Note The Push Parser Function
-     `yypush_parse': Push Parser Function.  (The current push parsing
-     interface is experimental and may evolve.  More user feedback will
-     help to stabilize it.)
-
- -- Macro: YYPARSE_PARAM
-     An obsolete macro for specifying the name of a parameter that
-     `yyparse' should accept.  The use of this macro is deprecated, and
-     is supported only for Yacc like parsers.  *Note Calling
-     Conventions for Pure Parsers: Pure Calling.
-
- -- Macro: YYRECOVERING
-     The expression `YYRECOVERING ()' yields 1 when the parser is
-     recovering from a syntax error, and 0 otherwise.  *Note Special
-     Features for Use in Actions: Action Features.
-
- -- Macro: YYSTACK_USE_ALLOCA
-     Macro used to control the use of `alloca' when the deterministic
-     parser in C needs to extend its stacks.  If defined to 0, the
-     parser will use `malloc' to extend its stacks.  If defined to 1,
-     the parser will use `alloca'.  Values other than 0 and 1 are
-     reserved for future Bison extensions.  If not defined,
-     `YYSTACK_USE_ALLOCA' defaults to 0.
-
-     In the all-too-common case where your code may run on a host with a
-     limited stack and with unreliable stack-overflow checking, you
-     should set `YYMAXDEPTH' to a value that cannot possibly result in
-     unchecked stack overflow on any of your target hosts when `alloca'
-     is called.  You can inspect the code that Bison generates in order
-     to determine the proper numeric values.  This will require some
-     expertise in low-level implementation details.
-
- -- Type: YYSTYPE
-     Data type of semantic values; `int' by default.  *Note Data Types
-     of Semantic Values: Value Type.
-
-\1f
-File: bison.info,  Node: Glossary,  Next: Copying This Manual,  Prev: Table of Symbols,  Up: Top
-
-Annexe B Glossary
-*****************
-
-Accepting state
-     A state whose only action is the accept action.  The accepting
-     state is thus a consistent state.  *Note Understanding::.
-
-Backus-Naur Form (BNF; also called "Backus Normal Form")
-     Formal method of specifying context-free grammars originally
-     proposed by John Backus, and slightly improved by Peter Naur in
-     his 1960-01-02 committee document contributing to what became the
-     Algol 60 report.  *Note Languages and Context-Free Grammars:
-     Language and Grammar.
-
-Consistent state
-     A state containing only one possible action.  *Note Default
-     Reductions::.
-
-Context-free grammars
-     Grammars specified as rules that can be applied regardless of
-     context.  Thus, if there is a rule which says that an integer can
-     be used as an expression, integers are allowed _anywhere_ an
-     expression is permitted.  *Note Languages and Context-Free
-     Grammars: Language and Grammar.
-
-Default reduction
-     The reduction that a parser should perform if the current parser
-     state contains no other action for the lookahead token.  In
-     permitted parser states, Bison declares the reduction with the
-     largest lookahead set to be the default reduction and removes that
-     lookahead set.  *Note Default Reductions::.
-
-Defaulted state
-     A consistent state with a default reduction.  *Note Default
-     Reductions::.
-
-Dynamic allocation
-     Allocation of memory that occurs during execution, rather than at
-     compile time or on entry to a function.
-
-Empty string
-     Analogous to the empty set in set theory, the empty string is a
-     character string of length zero.
-
-Finite-state stack machine
-     A "machine" that has discrete states in which it is said to exist
-     at each instant in time.  As input to the machine is processed, the
-     machine moves from state to state as specified by the logic of the
-     machine.  In the case of the parser, the input is the language
-     being parsed, and the states correspond to various stages in the
-     grammar rules.  *Note The Bison Parser Algorithm: Algorithm.
-
-Generalized LR (GLR)
-     A parsing algorithm that can handle all context-free grammars,
-     including those that are not LR(1).  It resolves situations that
-     Bison's deterministic parsing algorithm cannot by effectively
-     splitting off multiple parsers, trying all possible parsers, and
-     discarding those that fail in the light of additional right
-     context.  *Note Generalized LR Parsing: Generalized LR Parsing.
-
-Grouping
-     A language construct that is (in general) grammatically divisible;
-     for example, `expression' or `declaration' in C.  *Note Languages
-     and Context-Free Grammars: Language and Grammar.
-
-IELR(1) (Inadequacy Elimination LR(1))
-     A minimal LR(1) parser table construction algorithm.  That is,
-     given any context-free grammar, IELR(1) generates parser tables
-     with the full language-recognition power of canonical LR(1) but
-     with nearly the same number of parser states as LALR(1).  This
-     reduction in parser states is often an order of magnitude.  More
-     importantly, because canonical LR(1)'s extra parser states may
-     contain duplicate conflicts in the case of non-LR(1) grammars, the
-     number of conflicts for IELR(1) is often an order of magnitude
-     less as well.  This can significantly reduce the complexity of
-     developing a grammar.  *Note LR Table Construction::.
-
-Infix operator
-     An arithmetic operator that is placed between the operands on
-     which it performs some operation.
-
-Input stream
-     A continuous flow of data between devices or programs.
-
-LAC (Lookahead Correction)
-     A parsing mechanism that fixes the problem of delayed syntax error
-     detection, which is caused by LR state merging, default
-     reductions, and the use of `%nonassoc'.  Delayed syntax error
-     detection results in unexpected semantic actions, initiation of
-     error recovery in the wrong syntactic context, and an incorrect
-     list of expected tokens in a verbose syntax error message.  *Note
-     LAC::.
-
-Language construct
-     One of the typical usage schemas of the language.  For example,
-     one of the constructs of the C language is the `if' statement.
-     *Note Languages and Context-Free Grammars: Language and Grammar.
-
-Left associativity
-     Operators having left associativity are analyzed from left to
-     right: `a+b+c' first computes `a+b' and then combines with `c'.
-     *Note Operator Precedence: Precedence.
-
-Left recursion
-     A rule whose result symbol is also its first component symbol; for
-     example, `expseq1 : expseq1 ',' exp;'.  *Note Recursive Rules:
-     Recursion.
-
-Left-to-right parsing
-     Parsing a sentence of a language by analyzing it token by token
-     from left to right.  *Note The Bison Parser Algorithm: Algorithm.
-
-Lexical analyzer (scanner)
-     A function that reads an input stream and returns tokens one by
-     one.  *Note The Lexical Analyzer Function `yylex': Lexical.
-
-Lexical tie-in
-     A flag, set by actions in the grammar rules, which alters the way
-     tokens are parsed.  *Note Lexical Tie-ins::.
-
-Literal string token
-     A token which consists of two or more fixed characters.  *Note
-     Symbols::.
-
-Lookahead token
-     A token already read but not yet shifted.  *Note Lookahead Tokens:
-     Lookahead.
-
-LALR(1)
-     The class of context-free grammars that Bison (like most other
-     parser generators) can handle by default; a subset of LR(1).
-     *Note Mysterious Conflicts::.
-
-LR(1)
-     The class of context-free grammars in which at most one token of
-     lookahead is needed to disambiguate the parsing of any piece of
-     input.
-
-Nonterminal symbol
-     A grammar symbol standing for a grammatical construct that can be
-     expressed through rules in terms of smaller constructs; in other
-     words, a construct that is not a token.  *Note Symbols::.
-
-Parser
-     A function that recognizes valid sentences of a language by
-     analyzing the syntax structure of a set of tokens passed to it
-     from a lexical analyzer.
-
-Postfix operator
-     An arithmetic operator that is placed after the operands upon
-     which it performs some operation.
-
-Reduction
-     Replacing a string of nonterminals and/or terminals with a single
-     nonterminal, according to a grammar rule.  *Note The Bison Parser
-     Algorithm: Algorithm.
-
-Reentrant
-     A reentrant subprogram is a subprogram which can be in invoked any
-     number of times in parallel, without interference between the
-     various invocations.  *Note A Pure (Reentrant) Parser: Pure Decl.
-
-Reverse polish notation
-     A language in which all operators are postfix operators.
-
-Right recursion
-     A rule whose result symbol is also its last component symbol; for
-     example, `expseq1: exp ',' expseq1;'.  *Note Recursive Rules:
-     Recursion.
-
-Semantics
-     In computer languages, the semantics are specified by the actions
-     taken for each instance of the language, i.e., the meaning of each
-     statement.  *Note Defining Language Semantics: Semantics.
-
-Shift
-     A parser is said to shift when it makes the choice of analyzing
-     further input from the stream rather than reducing immediately some
-     already-recognized rule.  *Note The Bison Parser Algorithm:
-     Algorithm.
-
-Single-character literal
-     A single character that is recognized and interpreted as is.
-     *Note From Formal Rules to Bison Input: Grammar in Bison.
-
-Start symbol
-     The nonterminal symbol that stands for a complete valid utterance
-     in the language being parsed.  The start symbol is usually listed
-     as the first nonterminal symbol in a language specification.
-     *Note The Start-Symbol: Start Decl.
-
-Symbol table
-     A data structure where symbol names and associated data are stored
-     during parsing to allow for recognition and use of existing
-     information in repeated uses of a symbol.  *Note Multi-function
-     Calc::.
-
-Syntax error
-     An error encountered during parsing of an input stream due to
-     invalid syntax.  *Note Error Recovery::.
-
-Token
-     A basic, grammatically indivisible unit of a language.  The symbol
-     that describes a token in the grammar is a terminal symbol.  The
-     input of the Bison parser is a stream of tokens which comes from
-     the lexical analyzer.  *Note Symbols::.
-
-Terminal symbol
-     A grammar symbol that has no rules in the grammar and therefore is
-     grammatically indivisible.  The piece of text it represents is a
-     token.  *Note Languages and Context-Free Grammars: Language and
-     Grammar.
-
-Unreachable state
-     A parser state to which there does not exist a sequence of
-     transitions from the parser's start state.  A state can become
-     unreachable during conflict resolution.  *Note Unreachable
-     States::.
-
-\1f
-File: bison.info,  Node: Copying This Manual,  Next: Bibliography,  Prev: Glossary,  Up: Top
-
-Annexe C Copying This Manual
-****************************
-
-                     Version 1.3, 3 November 2008
-
-     Copyright (C) 2000, 2001, 2002, 2007, 2008 Free Software Foundation, Inc.
-     `http://fsf.org/'
-
-     Everyone is permitted to copy and distribute verbatim copies
-     of this license document, but changing it is not allowed.
-
-  0. PREAMBLE
-
-     The purpose of this License is to make a manual, textbook, or other
-     functional and useful document "free" in the sense of freedom: to
-     assure everyone the effective freedom to copy and redistribute it,
-     with or without modifying it, either commercially or
-     noncommercially.  Secondarily, this License preserves for the
-     author and publisher a way to get credit for their work, while not
-     being considered responsible for modifications made by others.
-
-     This License is a kind of "copyleft", which means that derivative
-     works of the document must themselves be free in the same sense.
-     It complements the GNU General Public License, which is a copyleft
-     license designed for free software.
-
-     We have designed this License in order to use it for manuals for
-     free software, because free software needs free documentation: a
-     free program should come with manuals providing the same freedoms
-     that the software does.  But this License is not limited to
-     software manuals; it can be used for any textual work, regardless
-     of subject matter or whether it is published as a printed book.
-     We recommend this License principally for works whose purpose is
-     instruction or reference.
-
-  1. APPLICABILITY AND DEFINITIONS
-
-     This License applies to any manual or other work, in any medium,
-     that contains a notice placed by the copyright holder saying it
-     can be distributed under the terms of this License.  Such a notice
-     grants a world-wide, royalty-free license, unlimited in duration,
-     to use that work under the conditions stated herein.  The
-     "Document", below, refers to any such manual or work.  Any member
-     of the public is a licensee, and is addressed as "you".  You
-     accept the license if you copy, modify or distribute the work in a
-     way requiring permission under copyright law.
-
-     A "Modified Version" of the Document means any work containing the
-     Document or a portion of it, either copied verbatim, or with
-     modifications and/or translated into another language.
-
-     A "Secondary Section" is a named appendix or a front-matter section
-     of the Document that deals exclusively with the relationship of the
-     publishers or authors of the Document to the Document's overall
-     subject (or to related matters) and contains nothing that could
-     fall directly within that overall subject.  (Thus, if the Document
-     is in part a textbook of mathematics, a Secondary Section may not
-     explain any mathematics.)  The relationship could be a matter of
-     historical connection with the subject or with related matters, or
-     of legal, commercial, philosophical, ethical or political position
-     regarding them.
-
-     The "Invariant Sections" are certain Secondary Sections whose
-     titles are designated, as being those of Invariant Sections, in
-     the notice that says that the Document is released under this
-     License.  If a section does not fit the above definition of
-     Secondary then it is not allowed to be designated as Invariant.
-     The Document may contain zero Invariant Sections.  If the Document
-     does not identify any Invariant Sections then there are none.
-
-     The "Cover Texts" are certain short passages of text that are
-     listed, as Front-Cover Texts or Back-Cover Texts, in the notice
-     that says that the Document is released under this License.  A
-     Front-Cover Text may be at most 5 words, and a Back-Cover Text may
-     be at most 25 words.
-
-     A "Transparent" copy of the Document means a machine-readable copy,
-     represented in a format whose specification is available to the
-     general public, that is suitable for revising the document
-     straightforwardly with generic text editors or (for images
-     composed of pixels) generic paint programs or (for drawings) some
-     widely available drawing editor, and that is suitable for input to
-     text formatters or for automatic translation to a variety of
-     formats suitable for input to text formatters.  A copy made in an
-     otherwise Transparent file format whose markup, or absence of
-     markup, has been arranged to thwart or discourage subsequent
-     modification by readers is not Transparent.  An image format is
-     not Transparent if used for any substantial amount of text.  A
-     copy that is not "Transparent" is called "Opaque".
-
-     Examples of suitable formats for Transparent copies include plain
-     ASCII without markup, Texinfo input format, LaTeX input format,
-     SGML or XML using a publicly available DTD, and
-     standard-conforming simple HTML, PostScript or PDF designed for
-     human modification.  Examples of transparent image formats include
-     PNG, XCF and JPG.  Opaque formats include proprietary formats that
-     can be read and edited only by proprietary word processors, SGML or
-     XML for which the DTD and/or processing tools are not generally
-     available, and the machine-generated HTML, PostScript or PDF
-     produced by some word processors for output purposes only.
-
-     The "Title Page" means, for a printed book, the title page itself,
-     plus such following pages as are needed to hold, legibly, the
-     material this License requires to appear in the title page.  For
-     works in formats which do not have any title page as such, "Title
-     Page" means the text near the most prominent appearance of the
-     work's title, preceding the beginning of the body of the text.
-
-     The "publisher" means any person or entity that distributes copies
-     of the Document to the public.
-
-     A section "Entitled XYZ" means a named subunit of the Document
-     whose title either is precisely XYZ or contains XYZ in parentheses
-     following text that translates XYZ in another language.  (Here XYZ
-     stands for a specific section name mentioned below, such as
-     "Acknowledgements", "Dedications", "Endorsements", or "History".)
-     To "Preserve the Title" of such a section when you modify the
-     Document means that it remains a section "Entitled XYZ" according
-     to this definition.
-
-     The Document may include Warranty Disclaimers next to the notice
-     which states that this License applies to the Document.  These
-     Warranty Disclaimers are considered to be included by reference in
-     this License, but only as regards disclaiming warranties: any other
-     implication that these Warranty Disclaimers may have is void and
-     has no effect on the meaning of this License.
-
-  2. VERBATIM COPYING
-
-     You may copy and distribute the Document in any medium, either
-     commercially or noncommercially, provided that this License, the
-     copyright notices, and the license notice saying this License
-     applies to the Document are reproduced in all copies, and that you
-     add no other conditions whatsoever to those of this License.  You
-     may not use technical measures to obstruct or control the reading
-     or further copying of the copies you make or distribute.  However,
-     you may accept compensation in exchange for copies.  If you
-     distribute a large enough number of copies you must also follow
-     the conditions in section 3.
-
-     You may also lend copies, under the same conditions stated above,
-     and you may publicly display copies.
-
-  3. COPYING IN QUANTITY
-
-     If you publish printed copies (or copies in media that commonly
-     have printed covers) of the Document, numbering more than 100, and
-     the Document's license notice requires Cover Texts, you must
-     enclose the copies in covers that carry, clearly and legibly, all
-     these Cover Texts: Front-Cover Texts on the front cover, and
-     Back-Cover Texts on the back cover.  Both covers must also clearly
-     and legibly identify you as the publisher of these copies.  The
-     front cover must present the full title with all words of the
-     title equally prominent and visible.  You may add other material
-     on the covers in addition.  Copying with changes limited to the
-     covers, as long as they preserve the title of the Document and
-     satisfy these conditions, can be treated as verbatim copying in
-     other respects.
-
-     If the required texts for either cover are too voluminous to fit
-     legibly, you should put the first ones listed (as many as fit
-     reasonably) on the actual cover, and continue the rest onto
-     adjacent pages.
-
-     If you publish or distribute Opaque copies of the Document
-     numbering more than 100, you must either include a
-     machine-readable Transparent copy along with each Opaque copy, or
-     state in or with each Opaque copy a computer-network location from
-     which the general network-using public has access to download
-     using public-standard network protocols a complete Transparent
-     copy of the Document, free of added material.  If you use the
-     latter option, you must take reasonably prudent steps, when you
-     begin distribution of Opaque copies in quantity, to ensure that
-     this Transparent copy will remain thus accessible at the stated
-     location until at least one year after the last time you
-     distribute an Opaque copy (directly or through your agents or
-     retailers) of that edition to the public.
-
-     It is requested, but not required, that you contact the authors of
-     the Document well before redistributing any large number of
-     copies, to give them a chance to provide you with an updated
-     version of the Document.
-
-  4. MODIFICATIONS
-
-     You may copy and distribute a Modified Version of the Document
-     under the conditions of sections 2 and 3 above, provided that you
-     release the Modified Version under precisely this License, with
-     the Modified Version filling the role of the Document, thus
-     licensing distribution and modification of the Modified Version to
-     whoever possesses a copy of it.  In addition, you must do these
-     things in the Modified Version:
-
-       A. Use in the Title Page (and on the covers, if any) a title
-          distinct from that of the Document, and from those of
-          previous versions (which should, if there were any, be listed
-          in the History section of the Document).  You may use the
-          same title as a previous version if the original publisher of
-          that version gives permission.
-
-       B. List on the Title Page, as authors, one or more persons or
-          entities responsible for authorship of the modifications in
-          the Modified Version, together with at least five of the
-          principal authors of the Document (all of its principal
-          authors, if it has fewer than five), unless they release you
-          from this requirement.
-
-       C. State on the Title page the name of the publisher of the
-          Modified Version, as the publisher.
-
-       D. Preserve all the copyright notices of the Document.
-
-       E. Add an appropriate copyright notice for your modifications
-          adjacent to the other copyright notices.
-
-       F. Include, immediately after the copyright notices, a license
-          notice giving the public permission to use the Modified
-          Version under the terms of this License, in the form shown in
-          the Addendum below.
-
-       G. Preserve in that license notice the full lists of Invariant
-          Sections and required Cover Texts given in the Document's
-          license notice.
-
-       H. Include an unaltered copy of this License.
-
-       I. Preserve the section Entitled "History", Preserve its Title,
-          and add to it an item stating at least the title, year, new
-          authors, and publisher of the Modified Version as given on
-          the Title Page.  If there is no section Entitled "History" in
-          the Document, create one stating the title, year, authors,
-          and publisher of the Document as given on its Title Page,
-          then add an item describing the Modified Version as stated in
-          the previous sentence.
-
-       J. Preserve the network location, if any, given in the Document
-          for public access to a Transparent copy of the Document, and
-          likewise the network locations given in the Document for
-          previous versions it was based on.  These may be placed in
-          the "History" section.  You may omit a network location for a
-          work that was published at least four years before the
-          Document itself, or if the original publisher of the version
-          it refers to gives permission.
-
-       K. For any section Entitled "Acknowledgements" or "Dedications",
-          Preserve the Title of the section, and preserve in the
-          section all the substance and tone of each of the contributor
-          acknowledgements and/or dedications given therein.
-
-       L. Preserve all the Invariant Sections of the Document,
-          unaltered in their text and in their titles.  Section numbers
-          or the equivalent are not considered part of the section
-          titles.
-
-       M. Delete any section Entitled "Endorsements".  Such a section
-          may not be included in the Modified Version.
-
-       N. Do not retitle any existing section to be Entitled
-          "Endorsements" or to conflict in title with any Invariant
-          Section.
-
-       O. Preserve any Warranty Disclaimers.
-
-     If the Modified Version includes new front-matter sections or
-     appendices that qualify as Secondary Sections and contain no
-     material copied from the Document, you may at your option
-     designate some or all of these sections as invariant.  To do this,
-     add their titles to the list of Invariant Sections in the Modified
-     Version's license notice.  These titles must be distinct from any
-     other section titles.
-
-     You may add a section Entitled "Endorsements", provided it contains
-     nothing but endorsements of your Modified Version by various
-     parties--for example, statements of peer review or that the text
-     has been approved by an organization as the authoritative
-     definition of a standard.
-
-     You may add a passage of up to five words as a Front-Cover Text,
-     and a passage of up to 25 words as a Back-Cover Text, to the end
-     of the list of Cover Texts in the Modified Version.  Only one
-     passage of Front-Cover Text and one of Back-Cover Text may be
-     added by (or through arrangements made by) any one entity.  If the
-     Document already includes a cover text for the same cover,
-     previously added by you or by arrangement made by the same entity
-     you are acting on behalf of, you may not add another; but you may
-     replace the old one, on explicit permission from the previous
-     publisher that added the old one.
-
-     The author(s) and publisher(s) of the Document do not by this
-     License give permission to use their names for publicity for or to
-     assert or imply endorsement of any Modified Version.
-
-  5. COMBINING DOCUMENTS
-
-     You may combine the Document with other documents released under
-     this License, under the terms defined in section 4 above for
-     modified versions, provided that you include in the combination
-     all of the Invariant Sections of all of the original documents,
-     unmodified, and list them all as Invariant Sections of your
-     combined work in its license notice, and that you preserve all
-     their Warranty Disclaimers.
-
-     The combined work need only contain one copy of this License, and
-     multiple identical Invariant Sections may be replaced with a single
-     copy.  If there are multiple Invariant Sections with the same name
-     but different contents, make the title of each such section unique
-     by adding at the end of it, in parentheses, the name of the
-     original author or publisher of that section if known, or else a
-     unique number.  Make the same adjustment to the section titles in
-     the list of Invariant Sections in the license notice of the
-     combined work.
-
-     In the combination, you must combine any sections Entitled
-     "History" in the various original documents, forming one section
-     Entitled "History"; likewise combine any sections Entitled
-     "Acknowledgements", and any sections Entitled "Dedications".  You
-     must delete all sections Entitled "Endorsements."
-
-  6. COLLECTIONS OF DOCUMENTS
-
-     You may make a collection consisting of the Document and other
-     documents released under this License, and replace the individual
-     copies of this License in the various documents with a single copy
-     that is included in the collection, provided that you follow the
-     rules of this License for verbatim copying of each of the
-     documents in all other respects.
-
-     You may extract a single document from such a collection, and
-     distribute it individually under this License, provided you insert
-     a copy of this License into the extracted document, and follow
-     this License in all other respects regarding verbatim copying of
-     that document.
-
-  7. AGGREGATION WITH INDEPENDENT WORKS
-
-     A compilation of the Document or its derivatives with other
-     separate and independent documents or works, in or on a volume of
-     a storage or distribution medium, is called an "aggregate" if the
-     copyright resulting from the compilation is not used to limit the
-     legal rights of the compilation's users beyond what the individual
-     works permit.  When the Document is included in an aggregate, this
-     License does not apply to the other works in the aggregate which
-     are not themselves derivative works of the Document.
-
-     If the Cover Text requirement of section 3 is applicable to these
-     copies of the Document, then if the Document is less than one half
-     of the entire aggregate, the Document's Cover Texts may be placed
-     on covers that bracket the Document within the aggregate, or the
-     electronic equivalent of covers if the Document is in electronic
-     form.  Otherwise they must appear on printed covers that bracket
-     the whole aggregate.
-
-  8. TRANSLATION
-
-     Translation is considered a kind of modification, so you may
-     distribute translations of the Document under the terms of section
-     4.  Replacing Invariant Sections with translations requires special
-     permission from their copyright holders, but you may include
-     translations of some or all Invariant Sections in addition to the
-     original versions of these Invariant Sections.  You may include a
-     translation of this License, and all the license notices in the
-     Document, and any Warranty Disclaimers, provided that you also
-     include the original English version of this License and the
-     original versions of those notices and disclaimers.  In case of a
-     disagreement between the translation and the original version of
-     this License or a notice or disclaimer, the original version will
-     prevail.
-
-     If a section in the Document is Entitled "Acknowledgements",
-     "Dedications", or "History", the requirement (section 4) to
-     Preserve its Title (section 1) will typically require changing the
-     actual title.
-
-  9. TERMINATION
-
-     You may not copy, modify, sublicense, or distribute the Document
-     except as expressly provided under this License.  Any attempt
-     otherwise to copy, modify, sublicense, or distribute it is void,
-     and will automatically terminate your rights under this License.
-
-     However, if you cease all violation of this License, then your
-     license from a particular copyright holder is reinstated (a)
-     provisionally, unless and until the copyright holder explicitly
-     and finally terminates your license, and (b) permanently, if the
-     copyright holder fails to notify you of the violation by some
-     reasonable means prior to 60 days after the cessation.
-
-     Moreover, your license from a particular copyright holder is
-     reinstated permanently if the copyright holder notifies you of the
-     violation by some reasonable means, this is the first time you have
-     received notice of violation of this License (for any work) from
-     that copyright holder, and you cure the violation prior to 30 days
-     after your receipt of the notice.
-
-     Termination of your rights under this section does not terminate
-     the licenses of parties who have received copies or rights from
-     you under this License.  If your rights have been terminated and
-     not permanently reinstated, receipt of a copy of some or all of
-     the same material does not give you any rights to use it.
-
- 10. FUTURE REVISIONS OF THIS LICENSE
-
-     The Free Software Foundation may publish new, revised versions of
-     the GNU Free Documentation License from time to time.  Such new
-     versions will be similar in spirit to the present version, but may
-     differ in detail to address new problems or concerns.  See
-     `http://www.gnu.org/copyleft/'.
-
-     Each version of the License is given a distinguishing version
-     number.  If the Document specifies that a particular numbered
-     version of this License "or any later version" applies to it, you
-     have the option of following the terms and conditions either of
-     that specified version or of any later version that has been
-     published (not as a draft) by the Free Software Foundation.  If
-     the Document does not specify a version number of this License,
-     you may choose any version ever published (not as a draft) by the
-     Free Software Foundation.  If the Document specifies that a proxy
-     can decide which future versions of this License can be used, that
-     proxy's public statement of acceptance of a version permanently
-     authorizes you to choose that version for the Document.
-
- 11. RELICENSING
-
-     "Massive Multiauthor Collaboration Site" (or "MMC Site") means any
-     World Wide Web server that publishes copyrightable works and also
-     provides prominent facilities for anybody to edit those works.  A
-     public wiki that anybody can edit is an example of such a server.
-     A "Massive Multiauthor Collaboration" (or "MMC") contained in the
-     site means any set of copyrightable works thus published on the MMC
-     site.
-
-     "CC-BY-SA" means the Creative Commons Attribution-Share Alike 3.0
-     license published by Creative Commons Corporation, a not-for-profit
-     corporation with a principal place of business in San Francisco,
-     California, as well as future copyleft versions of that license
-     published by that same organization.
-
-     "Incorporate" means to publish or republish a Document, in whole or
-     in part, as part of another Document.
-
-     An MMC is "eligible for relicensing" if it is licensed under this
-     License, and if all works that were first published under this
-     License somewhere other than this MMC, and subsequently
-     incorporated in whole or in part into the MMC, (1) had no cover
-     texts or invariant sections, and (2) were thus incorporated prior
-     to November 1, 2008.
-
-     The operator of an MMC Site may republish an MMC contained in the
-     site under CC-BY-SA on the same site at any time before August 1,
-     2009, provided the MMC is eligible for relicensing.
-
-
-ADDENDUM: How to use this License for your documents
-====================================================
-
-To use this License in a document you have written, include a copy of
-the License in the document and put the following copyright and license
-notices just after the title page:
-
-       Copyright (C)  YEAR  YOUR NAME.
-       Permission is granted to copy, distribute and/or modify this document
-       under the terms of the GNU Free Documentation License, Version 1.3
-       or any later version published by the Free Software Foundation;
-       with no Invariant Sections, no Front-Cover Texts, and no Back-Cover
-       Texts.  A copy of the license is included in the section entitled ``GNU
-       Free Documentation License''.
-
-   If you have Invariant Sections, Front-Cover Texts and Back-Cover
-Texts, replace the "with...Texts." line with this:
-
-         with the Invariant Sections being LIST THEIR TITLES, with
-         the Front-Cover Texts being LIST, and with the Back-Cover Texts
-         being LIST.
-
-   If you have Invariant Sections without Cover Texts, or some other
-combination of the three, merge those two alternatives to suit the
-situation.
-
-   If your document contains nontrivial examples of program code, we
-recommend releasing these examples in parallel under your choice of
-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 of Terms,  Prev: Copying This Manual,  Up: Top
-
-Bibliography
-************
-
-[Denny 2008]
-     Joel E. Denny and Brian A. Malloy, IELR(1): Practical LR(1) Parser
-     Tables for Non-LR(1) Grammars with Conflict Resolution, in
-     `Proceedings of the 2008 ACM Symposium on Applied Computing'
-     (SAC'08), ACM, New York, NY, USA, pp. 240-245.
-     `http://dx.doi.org/10.1145/1363686.1363747'
-
-[Denny 2010 May]
-     Joel E. Denny, PSLR(1): Pseudo-Scannerless Minimal LR(1) for the
-     Deterministic Parsing of Composite Languages, Ph.D. Dissertation,
-     Clemson University, Clemson, SC, USA (May 2010).
-     `http://proquest.umi.com/pqdlink?did=2041473591&Fmt=7&clientId=79356&RQT=309&VName=PQD'
-
-[Denny 2010 November]
-     Joel E. Denny and Brian A. Malloy, The IELR(1) Algorithm for
-     Generating Minimal LR(1) Parser Tables for Non-LR(1) Grammars with
-     Conflict Resolution, in `Science of Computer Programming', Vol.
-     75, Issue 11 (November 2010), pp. 943-979.
-     `http://dx.doi.org/10.1016/j.scico.2009.08.001'
-
-[DeRemer 1982]
-     Frank DeRemer and Thomas Pennello, Efficient Computation of LALR(1)
-     Look-Ahead Sets, in `ACM Transactions on Programming Languages and
-     Systems', Vol. 4, No. 4 (October 1982), pp.  615-649.
-     `http://dx.doi.org/10.1145/69622.357187'
-
-[Knuth 1965]
-     Donald E. Knuth, On the Translation of Languages from Left to
-     Right, in `Information and Control', Vol. 8, Issue 6 (December
-     1965), pp.  607-639.
-     `http://dx.doi.org/10.1016/S0019-9958(65)90426-2'
-
-[Scott 2000]
-     Elizabeth Scott, Adrian Johnstone, and Shamsa Sadaf Hussain,
-     `Tomita-Style Generalised LR Parsers', Royal Holloway, University
-     of London, Department of Computer Science, TR-00-12 (December
-     2000).
-     `http://www.cs.rhul.ac.uk/research/languages/publications/tomita_style_1.ps'
-
-\1f
-File: bison.info,  Node: Index of Terms,  Prev: Bibliography,  Up: Top
-
-Index of Terms
-**************
-
-\0\b[index\0\b]
-* Menu:
-
-* $ <1>:                                 Action Features.     (line  14)
-* $ <2>:                                 Table of Symbols.    (line  31)
-* $ <3>:                                 Java Action Features.
-                                                              (line  13)
-* $:                                     Table of Symbols.    (line  35)
-* $$ <1>:                                Java Action Features.
-                                                              (line  21)
-* $$ <2>:                                Actions.             (line   6)
-* $$ <3>:                                Action Features.     (line  10)
-* $$:                                    Table of Symbols.    (line  23)
-* $< <1>:                                Action Features.     (line  23)
-* $<:                                    Java Action Features.
-                                                              (line  17)
-* $[NAME]:                               Actions.             (line   6)
-* $accept:                               Table of Symbols.    (line  81)
-* $end:                                  Table of Symbols.    (line 119)
-* $N:                                    Actions.             (line   6)
-* $NAME:                                 Actions.             (line   6)
-* $undefined:                            Table of Symbols.    (line 240)
-* % <1>:                                 Table of Symbols.    (line  44)
-* %:                                     Java Declarations Summary.
-                                                              (line  53)
-* %% <1>:                                Table of Symbols.    (line  39)
-* %%:                                    Java Declarations Summary.
-                                                              (line  49)
-* %code <1>:                             Decl Summary.        (line  47)
-* %code <2>:                             Java Declarations Summary.
-                                                              (line  37)
-* %code <3>:                             %code Summary.       (line   6)
-* %code <4>:                             Prologue Alternatives.
-                                                              (line   6)
-* %code <5>:                             Table of Symbols.    (line  86)
-* %code <6>:                             %code Summary.       (line  27)
-* %code <7>:                             Table of Symbols.    (line  87)
-* %code:                                 Calc++ Parser.       (line  65)
-* %code imports <1>:                     Java Declarations Summary.
-                                                              (line  41)
-* %code imports:                         %code Summary.       (line  83)
-* %code lexer:                           Java Declarations Summary.
-                                                              (line  45)
-* %code provides <1>:                    Decl Summary.        (line  95)
-* %code provides <2>:                    %code Summary.       (line  55)
-* %code provides:                        Prologue Alternatives.
-                                                              (line   6)
-* %code requires <1>:                    Prologue Alternatives.
-                                                              (line   6)
-* %code requires <2>:                    Decl Summary.        (line  95)
-* %code requires <3>:                    %code Summary.       (line  41)
-* %code requires:                        Calc++ Parser.       (line  17)
-* %code top <1>:                         Prologue Alternatives.
-                                                              (line   6)
-* %code top:                             %code Summary.       (line  67)
-* %debug <1>:                            Table of Symbols.    (line  92)
-* %debug <2>:                            Enabling Traces.     (line  28)
-* %debug:                                Decl Summary.        (line  52)
-* %define <1>:                           Decl Summary.        (line  61)
-* %define <2>:                           %define Summary.     (line  15)
-* %define <3>:                           Decl Summary.        (line  59)
-* %define <4>:                           Table of Symbols.    (line  95)
-* %define:                               %define Summary.     (line  14)
-* %define abstract:                      Java Declarations Summary.
-                                                              (line  57)
-* %define api.prefix:                    %define Summary.     (line  49)
-* %define api.pure <1>:                  %define Summary.     (line  62)
-* %define api.pure:                      Pure Decl.           (line   6)
-* %define api.push-pull <1>:             Push Decl.           (line   6)
-* %define api.push-pull:                 %define Summary.     (line  73)
-* %define extends:                       Java Declarations Summary.
-                                                              (line  61)
-* %define final:                         Java Declarations Summary.
-                                                              (line  65)
-* %define implements:                    Java Declarations Summary.
-                                                              (line  69)
-* %define lex_throws:                    Java Declarations Summary.
-                                                              (line  73)
-* %define location_type:                 Java Declarations Summary.
-                                                              (line  78)
-* %define lr.default-reductions <1>:     Default Reductions.  (line   6)
-* %define lr.default-reductions:         %define Summary.     (line  86)
-* %define lr.default-reductions WHERE:   Default Reductions.  (line  84)
-* %define lr.keep-unreachable-states <1>: %define Summary.    (line 103)
-* %define lr.keep-unreachable-states:    Unreachable States.  (line   6)
-* %define lr.keep-unreachable-states VALUE: Unreachable States.
-                                                              (line  17)
-* %define lr.type <1>:                   %define Summary.     (line 114)
-* %define lr.type:                       LR Table Construction.
-                                                              (line   6)
-* %define lr.type TYPE:                  LR Table Construction.
-                                                              (line  24)
-* %define namespace <1>:                 %define Summary.     (line 126)
-* %define namespace:                     C++ Bison Interface. (line  10)
-* %define package:                       Java Declarations Summary.
-                                                              (line  84)
-* %define parse.lac <1>:                 LAC.                 (line   6)
-* %define parse.lac:                     %define Summary.     (line 166)
-* %define parse.lac VALUE:               LAC.                 (line  29)
-* %define parser_class_name:             Java Declarations Summary.
-                                                              (line  88)
-* %define position_type:                 Java Declarations Summary.
-                                                              (line  92)
-* %define public:                        Java Declarations Summary.
-                                                              (line  97)
-* %define strictfp:                      Java Declarations Summary.
-                                                              (line 105)
-* %define stype:                         Java Declarations Summary.
-                                                              (line 101)
-* %define throws:                        Java Declarations Summary.
-                                                              (line 109)
-* %defines <1>:                          Decl Summary.        (line  65)
-* %defines:                              Table of Symbols.    (line 101)
-* %destructor <1>:                       Table of Symbols.    (line 109)
-* %destructor <2>:                       Decl Summary.        (line 102)
-* %destructor <3>:                       Destructor Decl.     (line   6)
-* %destructor:                           Mid-Rule Actions.    (line  59)
-* %dprec <1>:                            Merging GLR Parses.  (line   6)
-* %dprec:                                Table of Symbols.    (line 114)
-* %error-verbose <1>:                    Error Reporting.     (line  17)
-* %error-verbose:                        Table of Symbols.    (line 133)
-* %expect <1>:                           Decl Summary.        (line  38)
-* %expect:                               Expect Decl.         (line   6)
-* %expect-rr <1>:                        Expect Decl.         (line   6)
-* %expect-rr:                            Simple GLR Parsers.  (line   6)
-* %file-prefix <1>:                      Table of Symbols.    (line 137)
-* %file-prefix:                          Decl Summary.        (line 107)
-* %glr-parser <1>:                       Simple GLR Parsers.  (line   6)
-* %glr-parser <2>:                       Table of Symbols.    (line 141)
-* %glr-parser:                           GLR Parsers.         (line   6)
-* %initial-action <1>:                   Table of Symbols.    (line 145)
-* %initial-action:                       Initial Action Decl. (line  11)
-* %language <1>:                         Table of Symbols.    (line 149)
-* %language:                             Decl Summary.        (line 111)
-* %language "Java":                      Java Declarations Summary.
-                                                              (line  10)
-* %left <1>:                             Table of Symbols.    (line 153)
-* %left <2>:                             Using Precedence.    (line   6)
-* %left:                                 Decl Summary.        (line  21)
-* %lex-param <1>:                        Table of Symbols.    (line 157)
-* %lex-param <2>:                        Java Declarations Summary.
-                                                              (line  13)
-* %lex-param:                            Pure Calling.        (line  31)
-* %locations:                            Decl Summary.        (line 119)
-* %merge <1>:                            Merging GLR Parses.  (line   6)
-* %merge:                                Table of Symbols.    (line 162)
-* %name-prefix <1>:                      Java Declarations Summary.
-                                                              (line  19)
-* %name-prefix:                          Table of Symbols.    (line 169)
-* %no-lines <1>:                         Table of Symbols.    (line 186)
-* %no-lines:                             Decl Summary.        (line 126)
-* %nonassoc <1>:                         Decl Summary.        (line  25)
-* %nonassoc <2>:                         Table of Symbols.    (line 190)
-* %nonassoc <3>:                         Default Reductions.  (line   6)
-* %nonassoc <4>:                         LR Table Construction.
-                                                              (line 103)
-* %nonassoc:                             Using Precedence.    (line   6)
-* %output <1>:                           Table of Symbols.    (line 194)
-* %output:                               Decl Summary.        (line 135)
-* %parse-param <1>:                      Parser Function.     (line  36)
-* %parse-param <2>:                      Java Declarations Summary.
-                                                              (line  24)
-* %parse-param <3>:                      Parser Function.     (line  36)
-* %parse-param:                          Table of Symbols.    (line 198)
-* %prec <1>:                             Contextual Precedence.
-                                                              (line   6)
-* %prec:                                 Table of Symbols.    (line 203)
-* %printer:                              Printer Decl.        (line   6)
-* %pure-parser <1>:                      Table of Symbols.    (line 207)
-* %pure-parser:                          Decl Summary.        (line 138)
-* %require <1>:                          Require Decl.        (line   6)
-* %require <2>:                          Decl Summary.        (line 143)
-* %require:                              Table of Symbols.    (line 212)
-* %right <1>:                            Using Precedence.    (line   6)
-* %right <2>:                            Table of Symbols.    (line 216)
-* %right:                                Decl Summary.        (line  17)
-* %skeleton <1>:                         Table of Symbols.    (line 220)
-* %skeleton:                             Decl Summary.        (line 147)
-* %start <1>:                            Start Decl.          (line   6)
-* %start <2>:                            Decl Summary.        (line  34)
-* %start:                                Table of Symbols.    (line 224)
-* %token <1>:                            Decl Summary.        (line  13)
-* %token <2>:                            Java Declarations Summary.
-                                                              (line  29)
-* %token <3>:                            Table of Symbols.    (line 228)
-* %token:                                Token Decl.          (line   6)
-* %token-table <1>:                      Decl Summary.        (line 155)
-* %token-table:                          Table of Symbols.    (line 232)
-* %type <1>:                             Type Decl.           (line   6)
-* %type <2>:                             Table of Symbols.    (line 236)
-* %type <3>:                             Decl Summary.        (line  30)
-* %type:                                 Java Declarations Summary.
-                                                              (line  33)
-* %union <1>:                            Decl Summary.        (line   9)
-* %union <2>:                            Union Decl.          (line   6)
-* %union:                                Table of Symbols.    (line 245)
-* %verbose:                              Decl Summary.        (line 188)
-* %yacc:                                 Decl Summary.        (line 194)
-* /*:                                    Table of Symbols.    (line  49)
-* ::                                     Table of Symbols.    (line  52)
-* ;:                                     Table of Symbols.    (line  56)
-* <*> <1>:                               Printer Decl.        (line   6)
-* <*> <2>:                               Table of Symbols.    (line  63)
-* <*>:                                   Destructor Decl.     (line   6)
-* <> <1>:                                Printer Decl.        (line   6)
-* <> <2>:                                Table of Symbols.    (line  72)
-* <>:                                    Destructor Decl.     (line   6)
-* @$ <1>:                                Table of Symbols.    (line   7)
-* @$ <2>:                                Actions and Locations.
-                                                              (line   6)
-* @$ <3>:                                Action Features.     (line  98)
-* @$:                                    Java Action Features.
-                                                              (line  39)
-* @[:                                    Table of Symbols.    (line  19)
-* @[NAME]:                               Actions and Locations.
-                                                              (line   6)
-* @N <1>:                                Action Features.     (line 104)
-* @N <2>:                                Actions and Locations.
-                                                              (line   6)
-* @N <3>:                                Java Action Features.
-                                                              (line  35)
-* @N:                                    Table of Symbols.    (line  11)
-* @NAME <1>:                             Actions and Locations.
-                                                              (line   6)
-* @NAME:                                 Table of Symbols.    (line  15)
-* abstract syntax tree:                  Implementing Gotos/Loops.
-                                                              (line  17)
-* accepting state:                       Understanding.       (line 178)
-* action:                                Actions.             (line   6)
-* action data types:                     Action Types.        (line   6)
-* action features summary:               Action Features.     (line   6)
-* actions in mid-rule <1>:               Destructor Decl.     (line  88)
-* actions in mid-rule:                   Mid-Rule Actions.    (line   6)
-* actions, location:                     Actions and Locations.
-                                                              (line   6)
-* actions, semantic:                     Semantic Actions.    (line   6)
-* additional C code section:             Epilogue.            (line   6)
-* algorithm of parser:                   Algorithm.           (line   6)
-* ambiguous grammars <1>:                Generalized LR Parsing.
-                                                              (line   6)
-* ambiguous grammars:                    Language and Grammar.
-                                                              (line  34)
-* associativity:                         Why Precedence.      (line  34)
-* AST:                                   Implementing Gotos/Loops.
-                                                              (line  17)
-* Backus-Naur form:                      Language and Grammar.
-                                                              (line  16)
-* begin of Location:                     Java Location Values.
-                                                              (line  21)
-* begin of location:                     C++ location.        (line  22)
-* Bison declaration summary:             Decl Summary.        (line   6)
-* Bison declarations:                    Declarations.        (line   6)
-* Bison declarations (introduction):     Bison Declarations.  (line   6)
-* Bison grammar:                         Grammar in Bison.    (line   6)
-* Bison invocation:                      Invocation.          (line   6)
-* Bison parser:                          Bison Parser.        (line   6)
-* Bison parser algorithm:                Algorithm.           (line   6)
-* Bison symbols, table of:               Table of Symbols.    (line   6)
-* Bison utility:                         Bison Parser.        (line   6)
-* bison-i18n.m4:                         Internationalization.
-                                                              (line  20)
-* bison-po:                              Internationalization.
-                                                              (line   6)
-* BISON_I18N:                            Internationalization.
-                                                              (line  27)
-* BISON_LOCALEDIR:                       Internationalization.
-                                                              (line  27)
-* BNF:                                   Language and Grammar.
-                                                              (line  16)
-* braced code:                           Rules.               (line  29)
-* C code, section for additional:        Epilogue.            (line   6)
-* C-language interface:                  Interface.           (line   6)
-* calc:                                  Infix Calc.          (line   6)
-* calculator, infix notation:            Infix Calc.          (line   6)
-* calculator, location tracking:         Location Tracking Calc.
-                                                              (line   6)
-* calculator, multi-function:            Multi-function Calc. (line   6)
-* calculator, simple:                    RPN Calc.            (line   6)
-* canonical LR <1>:                      Mysterious Conflicts.
-                                                              (line  45)
-* canonical LR:                          LR Table Construction.
-                                                              (line   6)
-* character token:                       Symbols.             (line  37)
-* column of position:                    C++ position.        (line  29)
-* columns on location:                   C++ location.        (line  26)
-* columns on position:                   C++ position.        (line  32)
-* compiling the parser:                  Rpcalc Compile.      (line   6)
-* conflicts <1>:                         Shift/Reduce.        (line   6)
-* conflicts <2>:                         Merging GLR Parses.  (line   6)
-* conflicts <3>:                         Simple GLR Parsers.  (line   6)
-* conflicts:                             GLR Parsers.         (line   6)
-* conflicts, reduce/reduce:              Reduce/Reduce.       (line   6)
-* conflicts, suppressing warnings of:    Expect Decl.         (line   6)
-* consistent states:                     Default Reductions.  (line  17)
-* context-dependent precedence:          Contextual Precedence.
-                                                              (line   6)
-* context-free grammar:                  Language and Grammar.
-                                                              (line   6)
-* controlling function:                  Rpcalc Main.         (line   6)
-* core, item set:                        Understanding.       (line 125)
-* dangling else:                         Shift/Reduce.        (line   6)
-* data type of locations:                Location Type.       (line   6)
-* data types in actions:                 Action Types.        (line   6)
-* data types of semantic values:         Value Type.          (line   6)
-* debug_level on parser:                 C++ Parser Interface.
-                                                              (line  38)
-* debug_stream on parser:                C++ Parser Interface.
-                                                              (line  33)
-* debugging:                             Tracing.             (line   6)
-* declaration summary:                   Decl Summary.        (line   6)
-* declarations:                          Prologue.            (line   6)
-* declarations section:                  Prologue.            (line   6)
-* declarations, Bison:                   Declarations.        (line   6)
-* declarations, Bison (introduction):    Bison Declarations.  (line   6)
-* declaring literal string tokens:       Token Decl.          (line   6)
-* declaring operator precedence:         Precedence Decl.     (line   6)
-* declaring the start symbol:            Start Decl.          (line   6)
-* declaring token type names:            Token Decl.          (line   6)
-* declaring value types:                 Union Decl.          (line   6)
-* declaring value types, nonterminals:   Type Decl.           (line   6)
-* default action:                        Actions.             (line  62)
-* default data type:                     Value Type.          (line   6)
-* default location type:                 Location Type.       (line   6)
-* default reductions:                    Default Reductions.  (line   6)
-* default stack limit:                   Memory Management.   (line  30)
-* default start symbol:                  Start Decl.          (line   6)
-* defaulted states:                      Default Reductions.  (line  17)
-* deferred semantic actions:             GLR Semantic Actions.
-                                                              (line   6)
-* defining language semantics:           Semantics.           (line   6)
-* delayed syntax error detection <1>:    LR Table Construction.
-                                                              (line 103)
-* delayed syntax error detection:        Default Reductions.  (line  43)
-* delayed yylex invocations:             Default Reductions.  (line  17)
-* discarded symbols:                     Destructor Decl.     (line  98)
-* discarded symbols, mid-rule actions:   Mid-Rule Actions.    (line  59)
-* else, dangling:                        Shift/Reduce.        (line   6)
-* end of location:                       C++ location.        (line  23)
-* end of Location:                       Java Location Values.
-                                                              (line  22)
-* epilogue:                              Epilogue.            (line   6)
-* error <1>:                             Error Recovery.      (line  20)
-* error:                                 Table of Symbols.    (line 123)
-* error on parser:                       C++ Parser Interface.
-                                                              (line  44)
-* error recovery:                        Error Recovery.      (line   6)
-* error recovery, mid-rule actions:      Mid-Rule Actions.    (line  59)
-* error recovery, simple:                Simple Error Recovery.
-                                                              (line   6)
-* error reporting function:              Error Reporting.     (line   6)
-* error reporting routine:               Rpcalc Error.        (line   6)
-* examples, simple:                      Examples.            (line   6)
-* exercises:                             Exercises.           (line   6)
-* file format:                           Grammar Layout.      (line   6)
-* file of position:                      C++ position.        (line  17)
-* finite-state machine:                  Parser States.       (line   6)
-* formal grammar:                        Grammar in Bison.    (line   6)
-* format of grammar file:                Grammar Layout.      (line   6)
-* freeing discarded symbols:             Destructor Decl.     (line   6)
-* frequently asked questions:            FAQ.                 (line   6)
-* generalized LR (GLR) parsing <1>:      Language and Grammar.
-                                                              (line  34)
-* generalized LR (GLR) parsing <2>:      GLR Parsers.         (line   6)
-* generalized LR (GLR) parsing:          Generalized LR Parsing.
-                                                              (line   6)
-* generalized LR (GLR) parsing, ambiguous grammars: Merging GLR Parses.
-                                                              (line   6)
-* generalized LR (GLR) parsing, unambiguous grammars: Simple GLR Parsers.
-                                                              (line   6)
-* getDebugLevel on YYParser:             Java Parser Interface.
-                                                              (line  67)
-* getDebugStream on YYParser:            Java Parser Interface.
-                                                              (line  62)
-* getEndPos on Lexer:                    Java Scanner Interface.
-                                                              (line  39)
-* getLVal on Lexer:                      Java Scanner Interface.
-                                                              (line  47)
-* getStartPos on Lexer:                  Java Scanner Interface.
-                                                              (line  38)
-* gettext:                               Internationalization.
-                                                              (line   6)
-* glossary:                              Glossary.            (line   6)
-* GLR parsers and inline:                Compiler Requirements.
-                                                              (line   6)
-* GLR parsers and yychar:                GLR Semantic Actions.
-                                                              (line  10)
-* GLR parsers and yyclearin:             GLR Semantic Actions.
-                                                              (line  18)
-* GLR parsers and YYERROR:               GLR Semantic Actions.
-                                                              (line  28)
-* GLR parsers and yylloc:                GLR Semantic Actions.
-                                                              (line  10)
-* GLR parsers and YYLLOC_DEFAULT:        Location Default Action.
-                                                              (line   6)
-* GLR parsers and yylval:                GLR Semantic Actions.
-                                                              (line  10)
-* GLR parsing <1>:                       Generalized LR Parsing.
-                                                              (line   6)
-* GLR parsing <2>:                       GLR Parsers.         (line   6)
-* GLR parsing:                           Language and Grammar.
-                                                              (line  34)
-* GLR parsing, ambiguous grammars:       Merging GLR Parses.  (line   6)
-* GLR parsing, unambiguous grammars:     Simple GLR Parsers.  (line   6)
-* GLR with LALR:                         LR Table Construction.
-                                                              (line  65)
-* grammar file:                          Grammar Layout.      (line   6)
-* grammar rule syntax:                   Rules.               (line   6)
-* grammar rules section:                 Grammar Rules.       (line   6)
-* grammar, Bison:                        Grammar in Bison.    (line   6)
-* grammar, context-free:                 Language and Grammar.
-                                                              (line   6)
-* grouping, syntactic:                   Language and Grammar.
-                                                              (line  48)
-* i18n:                                  Internationalization.
-                                                              (line   6)
-* IELR <1>:                              LR Table Construction.
-                                                              (line   6)
-* IELR:                                  Mysterious Conflicts.
-                                                              (line  45)
-* IELR grammars:                         Language and Grammar.
-                                                              (line  22)
-* infix notation calculator:             Infix Calc.          (line   6)
-* initialize on location:                C++ location.        (line  19)
-* initialize on position:                C++ position.        (line  14)
-* inline:                                Compiler Requirements.
-                                                              (line   6)
-* interface:                             Interface.           (line   6)
-* internationalization:                  Internationalization.
-                                                              (line   6)
-* introduction:                          Introduction.        (line   6)
-* invoking Bison:                        Invocation.          (line   6)
-* item:                                  Understanding.       (line 103)
-* item set core:                         Understanding.       (line 125)
-* kernel, item set:                      Understanding.       (line 125)
-* LAC <1>:                               LR Table Construction.
-                                                              (line 103)
-* LAC <2>:                               Default Reductions.  (line  54)
-* LAC:                                   LAC.                 (line   6)
-* LALR <1>:                              Mysterious Conflicts.
-                                                              (line  33)
-* LALR:                                  LR Table Construction.
-                                                              (line   6)
-* LALR grammars:                         Language and Grammar.
-                                                              (line  22)
-* language semantics, defining:          Semantics.           (line   6)
-* layout of Bison grammar:               Grammar Layout.      (line   6)
-* left recursion:                        Recursion.           (line  17)
-* lex-param:                             Pure Calling.        (line  31)
-* lexical analyzer:                      Lexical.             (line   6)
-* lexical analyzer, purpose:             Bison Parser.        (line   6)
-* lexical analyzer, writing:             Rpcalc Lexer.        (line   6)
-* lexical tie-in:                        Lexical Tie-ins.     (line   6)
-* line of position:                      C++ position.        (line  23)
-* lines on location:                     C++ location.        (line  27)
-* lines on position:                     C++ position.        (line  26)
-* literal string token:                  Symbols.             (line  59)
-* literal token:                         Symbols.             (line  37)
-* location <1>:                          Tracking Locations.  (line   6)
-* location:                              Locations.           (line   6)
-* location actions:                      Actions and Locations.
-                                                              (line   6)
-* Location on Location:                  Java Location Values.
-                                                              (line  29)
-* location on location:                  C++ location.        (line   8)
-* Location on Location:                  Java Location Values.
-                                                              (line  25)
-* location tracking calculator:          Location Tracking Calc.
-                                                              (line   6)
-* location, textual <1>:                 Locations.           (line   6)
-* location, textual:                     Tracking Locations.  (line   6)
-* location_type:                         C++ Parser Interface.
-                                                              (line  16)
-* lookahead correction:                  LAC.                 (line   6)
-* lookahead token:                       Lookahead.           (line   6)
-* LR:                                    Mysterious Conflicts.
-                                                              (line  33)
-* LR grammars:                           Language and Grammar.
-                                                              (line  22)
-* ltcalc:                                Location Tracking Calc.
-                                                              (line   6)
-* main function in simple example:       Rpcalc Main.         (line   6)
-* memory exhaustion:                     Memory Management.   (line   6)
-* memory management:                     Memory Management.   (line   6)
-* mfcalc:                                Multi-function Calc. (line   6)
-* mid-rule actions <1>:                  Mid-Rule Actions.    (line   6)
-* mid-rule actions:                      Destructor Decl.     (line  88)
-* multi-function calculator:             Multi-function Calc. (line   6)
-* multicharacter literal:                Symbols.             (line  59)
-* mutual recursion:                      Recursion.           (line  34)
-* Mysterious Conflict:                   LR Table Construction.
-                                                              (line   6)
-* Mysterious Conflicts:                  Mysterious Conflicts.
-                                                              (line   6)
-* named references:                      Named References.    (line   6)
-* NLS:                                   Internationalization.
-                                                              (line   6)
-* nondeterministic parsing <1>:          Generalized LR Parsing.
-                                                              (line   6)
-* nondeterministic parsing:              Language and Grammar.
-                                                              (line  34)
-* nonterminal symbol:                    Symbols.             (line   6)
-* nonterminal, useless:                  Understanding.       (line  49)
-* operator precedence:                   Precedence.          (line   6)
-* operator precedence, declaring:        Precedence Decl.     (line   6)
-* operator!= on location:                C++ location.        (line  39)
-* operator!= on position:                C++ position.        (line  42)
-* operator+ on location:                 C++ location.        (line  30)
-* operator+ on position:                 C++ position.        (line  36)
-* operator+= on location:                C++ location.        (line  32)
-* operator+= on position:                C++ position.        (line  35)
-* operator- on position:                 C++ position.        (line  38)
-* operator-= on position:                C++ position.        (line  37)
-* operator<< <1>:                        C++ position.        (line  46)
-* operator<<:                            C++ location.        (line  44)
-* operator== on location:                C++ location.        (line  38)
-* operator== on position:                C++ position.        (line  41)
-* options for invoking Bison:            Invocation.          (line   6)
-* overflow of parser stack:              Memory Management.   (line   6)
-* parse error:                           Error Reporting.     (line   6)
-* parse on parser:                       C++ Parser Interface.
-                                                              (line  30)
-* parse on YYParser:                     Java Parser Interface.
-                                                              (line  54)
-* parser:                                Bison Parser.        (line   6)
-* parser on parser:                      C++ Parser Interface.
-                                                              (line  26)
-* parser stack:                          Algorithm.           (line   6)
-* parser stack overflow:                 Memory Management.   (line   6)
-* parser state:                          Parser States.       (line   6)
-* pointed rule:                          Understanding.       (line 103)
-* polish notation calculator:            RPN Calc.            (line   6)
-* position on position:                  C++ position.        (line   8)
-* precedence declarations:               Precedence Decl.     (line   6)
-* precedence of operators:               Precedence.          (line   6)
-* precedence, context-dependent:         Contextual Precedence.
-                                                              (line   6)
-* precedence, unary operator:            Contextual Precedence.
-                                                              (line   6)
-* preventing warnings about conflicts:   Expect Decl.         (line   6)
-* printing semantic values:              Printer Decl.        (line   6)
-* Prologue <1>:                          Prologue.            (line   6)
-* Prologue:                              %code Summary.       (line   6)
-* Prologue Alternatives:                 Prologue Alternatives.
-                                                              (line   6)
-* pure parser:                           Pure Decl.           (line   6)
-* push parser:                           Push Decl.           (line   6)
-* questions:                             FAQ.                 (line   6)
-* recovering:                            Java Action Features.
-                                                              (line  55)
-* recovering on YYParser:                Java Parser Interface.
-                                                              (line  58)
-* recovery from errors:                  Error Recovery.      (line   6)
-* recursive rule:                        Recursion.           (line   6)
-* reduce/reduce conflict:                Reduce/Reduce.       (line   6)
-* reduce/reduce conflicts <1>:           Merging GLR Parses.  (line   6)
-* reduce/reduce conflicts <2>:           GLR Parsers.         (line   6)
-* reduce/reduce conflicts:               Simple GLR Parsers.  (line   6)
-* reduction:                             Algorithm.           (line   6)
-* reentrant parser:                      Pure Decl.           (line   6)
-* requiring a version of Bison:          Require Decl.        (line   6)
-* reverse polish notation:               RPN Calc.            (line   6)
-* right recursion:                       Recursion.           (line  17)
-* rpcalc:                                RPN Calc.            (line   6)
-* rule syntax:                           Rules.               (line   6)
-* rule, pointed:                         Understanding.       (line 103)
-* rule, useless:                         Understanding.       (line  49)
-* rules section for grammar:             Grammar Rules.       (line   6)
-* running Bison (introduction):          Rpcalc Generate.     (line   6)
-* semantic actions:                      Semantic Actions.    (line   6)
-* semantic value:                        Semantic Values.     (line   6)
-* semantic value type:                   Value Type.          (line   6)
-* semantic_type:                         C++ Parser Interface.
-                                                              (line  15)
-* set_debug_level on parser:             C++ Parser Interface.
-                                                              (line  39)
-* set_debug_stream on parser:            C++ Parser Interface.
-                                                              (line  34)
-* setDebugLevel on YYParser:             Java Parser Interface.
-                                                              (line  68)
-* setDebugStream on YYParser:            Java Parser Interface.
-                                                              (line  63)
-* shift/reduce conflicts <1>:            Shift/Reduce.        (line   6)
-* shift/reduce conflicts <2>:            Simple GLR Parsers.  (line   6)
-* shift/reduce conflicts:                GLR Parsers.         (line   6)
-* shifting:                              Algorithm.           (line   6)
-* simple examples:                       Examples.            (line   6)
-* single-character literal:              Symbols.             (line  37)
-* stack overflow:                        Memory Management.   (line   6)
-* stack, parser:                         Algorithm.           (line   6)
-* stages in using Bison:                 Stages.              (line   6)
-* start symbol:                          Language and Grammar.
-                                                              (line  97)
-* start symbol, declaring:               Start Decl.          (line   6)
-* state (of parser):                     Parser States.       (line   6)
-* step on location:                      C++ location.        (line  35)
-* string token:                          Symbols.             (line  59)
-* summary, action features:              Action Features.     (line   6)
-* summary, Bison declaration:            Decl Summary.        (line   6)
-* suppressing conflict warnings:         Expect Decl.         (line   6)
-* symbol:                                Symbols.             (line   6)
-* symbol table example:                  Mfcalc Symbol Table. (line   6)
-* symbols (abstract):                    Language and Grammar.
-                                                              (line  48)
-* symbols in Bison, table of:            Table of Symbols.    (line   6)
-* syntactic grouping:                    Language and Grammar.
-                                                              (line  48)
-* syntax error:                          Error Reporting.     (line   6)
-* syntax of grammar rules:               Rules.               (line   6)
-* terminal symbol:                       Symbols.             (line   6)
-* textual location <1>:                  Tracking Locations.  (line   6)
-* textual location:                      Locations.           (line   6)
-* token <1>:                             Language and Grammar.
-                                                              (line  48)
-* token:                                 C++ Parser Interface.
-                                                              (line  19)
-* token type:                            Symbols.             (line   6)
-* token type names, declaring:           Token Decl.          (line   6)
-* token, useless:                        Understanding.       (line  49)
-* toString on Location:                  Java Location Values.
-                                                              (line  32)
-* tracing the parser:                    Tracing.             (line   6)
-* uint:                                  C++ Location Values. (line  12)
-* unary operator precedence:             Contextual Precedence.
-                                                              (line   6)
-* unreachable states:                    Unreachable States.  (line   6)
-* useless nonterminal:                   Understanding.       (line  49)
-* useless rule:                          Understanding.       (line  49)
-* useless token:                         Understanding.       (line  49)
-* using Bison:                           Stages.              (line   6)
-* value type, semantic:                  Value Type.          (line   6)
-* value types, declaring:                Union Decl.          (line   6)
-* value types, nonterminals, declaring:  Type Decl.           (line   6)
-* value, semantic:                       Semantic Values.     (line   6)
-* version requirement:                   Require Decl.        (line   6)
-* warnings, preventing:                  Expect Decl.         (line   6)
-* writing a lexical analyzer:            Rpcalc Lexer.        (line   6)
-* YYABORT <1>:                           Java Action Features.
-                                                              (line  43)
-* YYABORT <2>:                           Parser Function.     (line  29)
-* YYABORT <3>:                           Table of Symbols.    (line 249)
-* YYABORT:                               Action Features.     (line  28)
-* YYACCEPT <1>:                          Action Features.     (line  32)
-* YYACCEPT <2>:                          Java Action Features.
-                                                              (line  47)
-* YYACCEPT <3>:                          Table of Symbols.    (line 258)
-* YYACCEPT:                              Parser Function.     (line  26)
-* YYBACKUP <1>:                          Table of Symbols.    (line 266)
-* YYBACKUP:                              Action Features.     (line  36)
-* yychar <1>:                            Table of Symbols.    (line 270)
-* yychar <2>:                            Lookahead.           (line  49)
-* yychar <3>:                            Action Features.     (line  69)
-* yychar:                                GLR Semantic Actions.
-                                                              (line  10)
-* yyclearin <1>:                         Table of Symbols.    (line 276)
-* yyclearin <2>:                         Error Recovery.      (line  99)
-* yyclearin <3>:                         GLR Semantic Actions.
-                                                              (line  18)
-* yyclearin:                             Action Features.     (line  76)
-* YYDEBUG:                               Table of Symbols.    (line 280)
-* yydebug <1>:                           Table of Symbols.    (line 284)
-* yydebug:                               Tracing.             (line   6)
-* YYDEBUG:                               Enabling Traces.     (line   9)
-* YYEMPTY:                               Action Features.     (line  49)
-* YYENABLE_NLS:                          Internationalization.
-                                                              (line  27)
-* YYEOF:                                 Action Features.     (line  52)
-* yyerrok <1>:                           Error Recovery.      (line  94)
-* yyerrok <2>:                           Action Features.     (line  81)
-* yyerrok:                               Table of Symbols.    (line 289)
-* yyerror:                               Java Action Features.
-                                                              (line  61)
-* YYERROR:                               Java Action Features.
-                                                              (line  51)
-* yyerror:                               Java Action Features.
-                                                              (line  62)
-* YYERROR:                               Table of Symbols.    (line 293)
-* yyerror:                               Table of Symbols.    (line 304)
-* YYERROR <1>:                           GLR Semantic Actions.
-                                                              (line  28)
-* YYERROR:                               Action Features.     (line  56)
-* yyerror:                               Error Reporting.     (line   6)
-* yyerror on Lexer:                      Java Scanner Interface.
-                                                              (line  25)
-* YYERROR_VERBOSE:                       Table of Symbols.    (line 308)
-* YYFPRINTF <1>:                         Table of Symbols.    (line 316)
-* YYFPRINTF:                             Enabling Traces.     (line  36)
-* YYINITDEPTH <1>:                       Memory Management.   (line  32)
-* YYINITDEPTH:                           Table of Symbols.    (line 319)
-* yylex <1>:                             Table of Symbols.    (line 323)
-* yylex:                                 Lexical.             (line   6)
-* yylex on Lexer:                        Java Scanner Interface.
-                                                              (line  30)
-* yylex on parser:                       C++ Scanner Interface.
-                                                              (line  12)
-* YYLEX_PARAM:                           Table of Symbols.    (line 328)
-* yylloc <1>:                            GLR Semantic Actions.
-                                                              (line  10)
-* yylloc <2>:                            Table of Symbols.    (line 334)
-* yylloc <3>:                            Action Features.     (line  86)
-* yylloc <4>:                            Actions and Locations.
-                                                              (line  67)
-* yylloc <5>:                            Token Locations.     (line   6)
-* yylloc:                                Lookahead.           (line  49)
-* YYLLOC_DEFAULT:                        Location Default Action.
-                                                              (line   6)
-* YYLTYPE <1>:                           Table of Symbols.    (line 344)
-* YYLTYPE:                               Token Locations.     (line  19)
-* yylval <1>:                            Lookahead.           (line  49)
-* yylval <2>:                            Token Values.        (line   6)
-* yylval <3>:                            GLR Semantic Actions.
-                                                              (line  10)
-* yylval <4>:                            Actions.             (line  87)
-* yylval <5>:                            Table of Symbols.    (line 348)
-* yylval:                                Action Features.     (line  92)
-* YYMAXDEPTH <1>:                        Table of Symbols.    (line 356)
-* YYMAXDEPTH:                            Memory Management.   (line  14)
-* yynerrs <1>:                           Error Reporting.     (line  94)
-* yynerrs:                               Table of Symbols.    (line 360)
-* yyoutput:                              Printer Decl.        (line  16)
-* yyparse <1>:                           Parser Function.     (line   6)
-* yyparse <2>:                           Table of Symbols.    (line 366)
-* yyparse:                               Parser Function.     (line  13)
-* YYPARSE_PARAM:                         Table of Symbols.    (line 404)
-* YYParser on YYParser:                  Java Parser Interface.
-                                                              (line  46)
-* YYPRINT <1>:                           Table of Symbols.    (line 370)
-* YYPRINT:                               The YYPRINT Macro.   (line  11)
-* yypstate_delete <1>:                   Parser Delete Function.
-                                                              (line  15)
-* yypstate_delete:                       Table of Symbols.    (line 375)
-* yypstate_new <1>:                      Table of Symbols.    (line 383)
-* yypstate_new:                          Parser Create Function.
-                                                              (line   6)
-* yypull_parse <1>:                      Table of Symbols.    (line 390)
-* yypull_parse:                          Pull Parser Function.
-                                                              (line  14)
-* yypush_parse <1>:                      Push Parser Function.
-                                                              (line  15)
-* yypush_parse <2>:                      Table of Symbols.    (line 397)
-* yypush_parse:                          Push Parser Function.
-                                                              (line   6)
-* YYRECOVERING <1>:                      Table of Symbols.    (line 410)
-* YYRECOVERING <2>:                      Error Recovery.      (line 111)
-* YYRECOVERING:                          Action Features.     (line  64)
-* YYSTACK_USE_ALLOCA:                    Table of Symbols.    (line 415)
-* YYSTYPE:                               Table of Symbols.    (line 431)
-* | <1>:                                 Table of Symbols.    (line  59)
-* |:                                     Rules.               (line  48)
-
-
index ad60505..f4f3b8a 100644 (file)
@@ -33,7 +33,7 @@
 This manual (@value{UPDATED}) is for GNU Bison (version
 @value{VERSION}), the GNU parser generator.
 
-Copyright @copyright{} 1988-1993, 1995, 1998-2012 Free Software
+Copyright @copyright{} 1988-1993, 1995, 1998-2013 Free Software
 Foundation, Inc.
 
 @quotation
@@ -208,6 +208,12 @@ Defining Language Semantics
                       This says when, why and how to use the exceptional
                         action in the middle of a rule.
 
+Actions in Mid-Rule
+
+* Using Mid-Rule Actions::       Putting an action in the middle of a rule.
+* Mid-Rule Action Translation::  How mid-rule actions are actually processed.
+* Mid-Rule Conflicts::           Mid-rule actions can cause conflicts.
+
 Tracking Locations
 
 * Location Type::               Specifying a data type for locations.
@@ -276,6 +282,7 @@ Operator Precedence
 * Using Precedence::  How to specify precedence in Bison grammars.
 * Precedence Examples::  How these features are used in the previous example.
 * How Precedence::    How they work.
+* Non Operators::     Using precedence for general conflicts.
 
 Tuning LR
 
@@ -294,6 +301,8 @@ Handling Context Dependencies
 Debugging Your Parser
 
 * Understanding::     Understanding the structure of your parser.
+* Graphviz::          Getting a visual representation of the parser.
+* Xml::               Getting a markup representation of the parser.
 * Tracing::           Tracing the execution of your parser.
 
 Tracing Your Parser
@@ -327,6 +336,7 @@ C++ Location Values
 
 * C++ position::                One point in the source file
 * C++ location::                Two points in the source file
+* User Defined Location Type::  Required interface for locations
 
 A Complete C++ Example
 
@@ -2448,7 +2458,7 @@ function that initializes the symbol table.  Here it is, and
 void
 yyerror (char const *s)
 @{
-  printf ("%s\n", s);
+  fprintf (stderr, "%s\n", s);
 @}
 @end group
 
@@ -2718,6 +2728,9 @@ The Bison grammar file conventionally has a name ending in @samp{.y}.
 
 @node Grammar Outline
 @section Outline of a Bison Grammar
+@cindex comment
+@findex // @dots{}
+@findex /* @dots{} */
 
 A Bison grammar file has four main sections, shown here with the
 appropriate delimiters:
@@ -2737,8 +2750,8 @@ appropriate delimiters:
 @end example
 
 Comments enclosed in @samp{/* @dots{} */} may appear in any of the sections.
-As a GNU extension, @samp{//} introduces a comment that
-continues until end of line.
+As a GNU extension, @samp{//} introduces a comment that continues until end
+of line.
 
 @menu
 * Prologue::              Syntax and usage of the prologue.
@@ -3732,6 +3745,15 @@ Occasionally it is useful to put an action in the middle of a rule.
 These actions are written just like usual end-of-rule actions, but they
 are executed before the parser even recognizes the following components.
 
+@menu
+* Using Mid-Rule Actions::       Putting an action in the middle of a rule.
+* Mid-Rule Action Translation::  How mid-rule actions are actually processed.
+* Mid-Rule Conflicts::           Mid-rule actions can cause conflicts.
+@end menu
+
+@node Using Mid-Rule Actions
+@subsubsection Using Mid-Rule Actions
+
 A mid-rule action may refer to the components preceding it using
 @code{$@var{n}}, but it may not refer to subsequent components because
 it is run before they are parsed.
@@ -3764,10 +3786,16 @@ remove it afterward.  Here is how it is done:
 @example
 @group
 stmt:
-  LET '(' var ')'
-    @{ $<context>$ = push_context (); declare_variable ($3); @}
+  "let" '(' var ')'
+    @{
+      $<context>$ = push_context ();
+      declare_variable ($3);
+    @}
   stmt
-    @{ $$ = $6; pop_context ($<context>5); @}
+    @{
+      $$ = $6;
+      pop_context ($<context>5);
+    @}
 @end group
 @end example
 
@@ -3778,8 +3806,27 @@ list of accessible variables) as its semantic value, using alternative
 @code{context} in the data-type union.  Then it calls
 @code{declare_variable} to add the new variable to that list.  Once the
 first action is finished, the embedded statement @code{stmt} can be
-parsed.  Note that the mid-rule action is component number 5, so the
-@samp{stmt} is component number 6.
+parsed.
+
+Note that the mid-rule action is component number 5, so the @samp{stmt} is
+component number 6.  Named references can be used to improve the readability
+and maintainability (@pxref{Named References}):
+
+@example
+@group
+stmt:
+  "let" '(' var ')'
+    @{
+      $<context>let = push_context ();
+      declare_variable ($3);
+    @}[let]
+  stmt
+    @{
+      $$ = $6;
+      pop_context ($<context>let);
+    @}
+@end group
+@end example
 
 After the embedded statement is parsed, its semantic value becomes the
 value of the entire @code{let}-statement.  Then the semantic value from the
@@ -3813,13 +3860,13 @@ stmt:
   let stmt
     @{
       $$ = $2;
-      pop_context ($1);
+      pop_context ($let);
     @};
 
 let:
-  LET '(' var ')'
+  "let" '(' var ')'
     @{
-      $$ = push_context ();
+      $let = push_context ();
       declare_variable ($3);
     @};
 
@@ -3831,6 +3878,76 @@ Note that the action is now at the end of its rule.
 Any mid-rule action can be converted to an end-of-rule action in this way, and
 this is what Bison actually does to implement mid-rule actions.
 
+@node Mid-Rule Action Translation
+@subsubsection Mid-Rule Action Translation
+@vindex $@@@var{n}
+@vindex @@@var{n}
+
+As hinted earlier, mid-rule actions are actually transformed into regular
+rules and actions.  The various reports generated by Bison (textual,
+graphical, etc., see @ref{Understanding, , Understanding Your Parser})
+reveal this translation, best explained by means of an example.  The
+following rule:
+
+@example
+exp: @{ a(); @} "b" @{ c(); @} @{ d(); @} "e" @{ f(); @};
+@end example
+
+@noindent
+is translated into:
+
+@example
+$@@1: /* empty */ @{ a(); @};
+$@@2: /* empty */ @{ c(); @};
+$@@3: /* empty */ @{ d(); @};
+exp: $@@1 "b" $@@2 $@@3 "e" @{ f(); @};
+@end example
+
+@noindent
+with new nonterminal symbols @code{$@@@var{n}}, where @var{n} is a number.
+
+A mid-rule action is expected to generate a value if it uses @code{$$}, or
+the (final) action uses @code{$@var{n}} where @var{n} denote the mid-rule
+action.  In that case its nonterminal is rather named @code{@@@var{n}}:
+
+@example
+exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @};
+@end example
+
+@noindent
+is translated into
+
+@example
+@@1: /* empty */ @{ a(); @};
+@@2: /* empty */ @{ $$ = c(); @};
+$@@3: /* empty */ @{ d(); @};
+exp: @@1 "b" @@2 $@@3 "e" @{ f = $1; @}
+@end example
+
+There are probably two errors in the above example: the first mid-rule
+action does not generate a value (it does not use @code{$$} although the
+final action uses it), and the value of the second one is not used (the
+final action does not use @code{$3}).  Bison reports these errors when the
+@code{midrule-value} warnings are enabled (@pxref{Invocation, ,Invoking
+Bison}):
+
+@example
+$ bison -fcaret -Wmidrule-value mid.y
+@group
+mid.y:2.6-13: warning: unset value: $$
+ exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @};
+      ^^^^^^^^
+@end group
+@group
+mid.y:2.19-31: warning: unused value: $3
+ exp: @{ a(); @} "b" @{ $$ = c(); @} @{ d(); @} "e" @{ f = $1; @};
+                   ^^^^^^^^^^^^^
+@end group
+@end example
+
+
+@node Mid-Rule Conflicts
+@subsubsection Conflicts due to Mid-Rule Actions
 Taking action before a rule is completely recognized often leads to
 conflicts since the parser must commit to a parse in order to execute the
 action.  For example, the following two rules, without mid-rule actions,
@@ -3928,6 +4045,7 @@ compound:
 Now Bison can execute the action in the rule for @code{subroutine} without
 deciding which rule for @code{compound} it will eventually use.
 
+
 @node Tracking Locations
 @section Tracking Locations
 @cindex location
@@ -4701,6 +4819,10 @@ incoming terminals during the second phase of error recovery,
 the current lookahead and the entire stack (except the current
 right-hand side symbols) when the parser returns immediately, and
 @item
+the current lookahead and the entire stack (including the current right-hand
+side symbols) when the C++ parser (@file{lalr1.cc}) catches an exception in
+@code{parse},
+@item
 the start symbol, when the parser succeeds.
 @end itemize
 
@@ -4877,7 +4999,7 @@ declaration @code{%define api.pure} says that you want the parser to be
 reentrant.  It looks like this:
 
 @example
-%define api.pure
+%define api.pure full
 @end example
 
 The result is that the communication variables @code{yylval} and
@@ -4927,7 +5049,7 @@ compatibility with the impure Yacc pull mode interface.  Unless you know
 what you are doing, your declarations should look like this:
 
 @example
-%define api.pure
+%define api.pure full
 %define api.push-pull push
 @end example
 
@@ -5000,8 +5122,8 @@ yypull_parse (ps); /* Will call the lexer */
 yypstate_delete (ps);
 @end example
 
-Adding the @code{%define api.pure} declaration does exactly the same thing to
-the generated parser with @code{%define api.push-pull both} as it did for
+Adding the @code{%define api.pure full} declaration does exactly the same thing
+to the generated parser with @code{%define api.push-pull both} as it did for
 @code{%define api.push-pull push}.
 
 @node Decl Summary
@@ -5076,7 +5198,7 @@ default location or at the location specified by @var{qualifier}.
 
 @deffn {Directive} %debug
 In the parser implementation file, define the macro @code{YYDEBUG} (or
-@code{@var{prefix}DEBUG} with @samp{%define api.prefix @var{prefix}}), see
+@code{@var{prefix}DEBUG} with @samp{%define api.prefix @var{prefix}}, see
 @ref{Multiple Parsers, ,Multiple Parsers in the Same Program}) to 1 if it is
 not already defined, so that the debugging facilities are compiled.
 @xref{Tracing, ,Tracing Your Parser}.
@@ -5124,6 +5246,23 @@ Values, ,Semantic Values of Tokens}.
 If you have declared @code{%code requires} or @code{%code provides}, the output
 header also contains their code.
 @xref{%code Summary}.
+
+@cindex Header guard
+The generated header is protected against multiple inclusions with a C
+preprocessor guard: @samp{YY_@var{PREFIX}_@var{FILE}_INCLUDED}, where
+@var{PREFIX} and @var{FILE} are the prefix (@pxref{Multiple Parsers,
+,Multiple Parsers in the Same Program}) and generated file name turned
+uppercase, with each series of non alphanumerical characters converted to a
+single underscore.
+
+For instance with @samp{%define api.prefix "calc"} and @samp{%defines
+"lib/parse.h"}, the header will be guarded as follows.
+@example
+#ifndef YY_CALC_LIB_PARSE_H_INCLUDED
+# define YY_CALC_LIB_PARSE_H_INCLUDED
+...
+#endif /* ! YY_CALC_LIB_PARSE_H_INCLUDED */
+@end example
 @end deffn
 
 @deffn {Directive} %defines @var{defines-file}
@@ -5145,8 +5284,6 @@ Specify the programming language for the generated parser.  Currently
 supported languages include C, C++, and Java.
 @var{language} is case-insensitive.
 
-This directive is experimental and its effect may be modified in future
-releases.
 @end deffn
 
 @deffn {Directive} %locations
@@ -5304,6 +5441,23 @@ Unaccepted @var{variable}s produce an error.
 Some of the accepted @var{variable}s are:
 
 @itemize @bullet
+@c ================================================== api.location.type
+@item @code{api.location.type}
+@findex %define api.location.type
+
+@itemize @bullet
+@item Language(s): C++, Java
+
+@item Purpose: Define the location type.
+@xref{User Defined Location Type}.
+
+@item Accepted Values: String
+
+@item Default Value: none
+
+@item History: introduced in Bison 2.7
+@end itemize
+
 @c ================================================== api.prefix
 @item @code{api.prefix}
 @findex %define api.prefix
@@ -5311,7 +5465,7 @@ Some of the accepted @var{variable}s are:
 @itemize @bullet
 @item Language(s): All
 
-@item Purpose: Rename exported symbols
+@item Purpose: Rename exported symbols.
 @xref{Multiple Parsers, ,Multiple Parsers in the Same Program}.
 
 @item Accepted Values: String
@@ -5331,9 +5485,41 @@ Some of the accepted @var{variable}s are:
 @item Purpose: Request a pure (reentrant) parser program.
 @xref{Pure Decl, ,A Pure (Reentrant) Parser}.
 
-@item Accepted Values: Boolean
+@item Accepted Values: @code{true}, @code{false}, @code{full}
+
+The value may be omitted: this is equivalent to specifying @code{true}, as is
+the case for Boolean values.
+
+When @code{%define api.pure full} is used, the parser is made reentrant. This
+changes the signature for @code{yylex} (@pxref{Pure Calling}), and also that of
+@code{yyerror} when the tracking of locations has been activated, as shown
+below.
+
+The @code{true} value is very similar to the @code{full} value, the only
+difference is in the signature of @code{yyerror} on Yacc parsers without
+@code{%parse-param}, for historical reasons.
+
+I.e., if @samp{%locations %define api.pure} is passed then the prototypes for
+@code{yyerror} are:
+
+@example
+void yyerror (char const *msg);                 // Yacc parsers.
+void yyerror (YYLTYPE *locp, char const *msg);  // GLR parsers.
+@end example
+
+But if @samp{%locations %define api.pure %parse-param @{int *nastiness@}} is
+used, then both parsers have the same signature:
+
+@example
+void yyerror (YYLTYPE *llocp, int *nastiness, char const *msg);
+@end example
+
+(@pxref{Error Reporting, ,The Error
+Reporting Function @code{yyerror}})
 
 @item Default Value: @code{false}
+
+@item History: the @code{full} value was introduced in Bison 2.7
 @end itemize
 
 @c ================================================== api.push-pull
@@ -5778,6 +5964,27 @@ In the grammar actions, use expressions like this to refer to the data:
 exp: @dots{}    @{ @dots{}; *randomness += 1; @dots{} @}
 @end example
 
+@noindent
+Using the following:
+@example
+%parse-param @{int *randomness@}
+@end example
+
+Results in these signatures:
+@example
+void yyerror (int *randomness, const char *msg);
+int  yyparse (int *randomness);
+@end example
+
+@noindent
+Or, if both @code{%define api.pure full} (or just @code{%define api.pure})
+and @code{%locations} are used:
+
+@example
+void yyerror (YYLTYPE *llocp, int *randomness, const char *msg);
+int  yyparse (int *randomness);
+@end example
+
 @node Push Parser Function
 @section The Push Parser Function @code{yypush_parse}
 @findex yypush_parse
@@ -6029,7 +6236,7 @@ The data type of @code{yylloc} has the name @code{YYLTYPE}.
 @node Pure Calling
 @subsection Calling Conventions for Pure Parsers
 
-When you use the Bison declaration @code{%define api.pure} to request a
+When you use the Bison declaration @code{%define api.pure full} to request a
 pure, reentrant parser, the global communication variables @code{yylval}
 and @code{yylloc} cannot be used.  (@xref{Pure Decl, ,A Pure (Reentrant)
 Parser}.)  In such parsers the two global variables are replaced by
@@ -6064,35 +6271,25 @@ Declare that the braced-code @var{argument-declaration} is an
 additional @code{yylex} argument declaration.
 @end deffn
 
+@noindent
 For instance:
 
 @example
-%parse-param @{int *nastiness@}
 %lex-param   @{int *nastiness@}
-%parse-param @{int *randomness@}
 @end example
 
 @noindent
-results in the following signatures:
-
-@example
-int yylex   (int *nastiness);
-int yyparse (int *nastiness, int *randomness);
-@end example
-
-If @code{%define api.pure} is added:
+results in the following signature:
 
 @example
-int yylex   (YYSTYPE *lvalp, int *nastiness);
-int yyparse (int *nastiness, int *randomness);
+int yylex (int *nastiness);
 @end example
 
 @noindent
-and finally, if both @code{%define api.pure} and @code{%locations} are used:
+If @code{%define api.pure full} (or just @code{%define api.pure}) is added:
 
 @example
-int yylex   (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-int yyparse (int *nastiness, int *randomness);
+int yylex (YYSTYPE *lvalp, int *nastiness);
 @end example
 
 @node Error Reporting
@@ -6152,50 +6349,16 @@ error recovery if you have written suitable error recovery grammar rules
 immediately return 1.
 
 Obviously, in location tracking pure parsers, @code{yyerror} should have
-an access to the current location.
-This is indeed the case for the GLR
-parsers, but not for the Yacc parser, for historical reasons.  I.e., if
-@samp{%locations %define api.pure} is passed then the prototypes for
-@code{yyerror} are:
-
-@example
-void yyerror (char const *msg);                 /* Yacc parsers.  */
-void yyerror (YYLTYPE *locp, char const *msg);  /* GLR parsers.   */
-@end example
+an access to the current location. With @code{%define api.pure}, this is
+indeed the case for the GLR parsers, but not for the Yacc parser, for
+historical reasons, and this is the why @code{%define api.pure full} should be
+prefered over @code{%define api.pure}.
 
-If @samp{%parse-param @{int *nastiness@}} is used, then:
+When @code{%locations %define api.pure full} is used, @code{yyerror} has the
+following signature:
 
 @example
-void yyerror (int *nastiness, char const *msg);  /* Yacc parsers.  */
-void yyerror (int *nastiness, char const *msg);  /* GLR parsers.   */
-@end example
-
-Finally, GLR and Yacc parsers share the same @code{yyerror} calling
-convention for absolutely pure parsers, i.e., when the calling
-convention of @code{yylex} @emph{and} the calling convention of
-@code{%define api.pure} are pure.
-I.e.:
-
-@example
-/* Location tracking.  */
-%locations
-/* Pure yylex.  */
-%define api.pure
-%lex-param   @{int *nastiness@}
-/* Pure yyparse.  */
-%parse-param @{int *nastiness@}
-%parse-param @{int *randomness@}
-@end example
-
-@noindent
-results in the following signatures for all the parser kinds:
-
-@example
-int yylex (YYSTYPE *lvalp, YYLTYPE *llocp, int *nastiness);
-int yyparse (int *nastiness, int *randomness);
-void yyerror (YYLTYPE *locp,
-              int *nastiness, int *randomness,
-              char const *msg);
+void yyerror (YYLTYPE *locp, char const *msg);
 @end example
 
 @noindent
@@ -6337,7 +6500,6 @@ Actions}).
 @end deffn
 
 @deffn {Value} @@$
-@findex @@$
 Acts like a structure variable containing information on the textual
 location of the grouping made by the current rule.  @xref{Tracking
 Locations}.
@@ -6396,7 +6558,7 @@ GNU Automake.
 @item
 @cindex bison-i18n.m4
 Into the directory containing the GNU Autoconf macros used
-by the package---often called @file{m4}---copy the
+by the package ---often called @file{m4}--- copy the
 @file{bison-i18n.m4} file installed by Bison under
 @samp{share/aclocal/bison-i18n.m4} in Bison's installation directory.
 For example:
@@ -6557,7 +6719,7 @@ expr:
 term:
   '(' expr ')'
 | term '!'
-| NUMBER
+| "number"
 ;
 @end group
 @end example
@@ -6596,20 +6758,20 @@ statements, with a pair of rules like this:
 @example
 @group
 if_stmt:
-  IF expr THEN stmt
-| IF expr THEN stmt ELSE stmt
+  "if" expr "then" stmt
+| "if" expr "then" stmt "else" stmt
 ;
 @end group
 @end example
 
 @noindent
-Here we assume that @code{IF}, @code{THEN} and @code{ELSE} are
-terminal symbols for specific keyword tokens.
+Here @code{"if"}, @code{"then"} and @code{"else"} are terminal symbols for
+specific keyword tokens.
 
-When the @code{ELSE} token is read and becomes the lookahead token, the
+When the @code{"else"} token is read and becomes the lookahead token, the
 contents of the stack (assuming the input is valid) are just right for
 reduction by the first rule.  But it is also legitimate to shift the
-@code{ELSE}, because that would lead to eventual reduction by the second
+@code{"else"}, because that would lead to eventual reduction by the second
 rule.
 
 This situation, where either a shift or a reduction would be valid, is
@@ -6618,14 +6780,14 @@ these conflicts by choosing to shift, unless otherwise directed by
 operator precedence declarations.  To see the reason for this, let's
 contrast it with the other alternative.
 
-Since the parser prefers to shift the @code{ELSE}, the result is to attach
+Since the parser prefers to shift the @code{"else"}, the result is to attach
 the else-clause to the innermost if-statement, making these two inputs
 equivalent:
 
 @example
-if x then if y then win (); else lose;
+if x then if y then win; else lose;
 
-if x then do; if y then win (); else lose; end;
+if x then do; if y then win; else lose; end;
 @end example
 
 But if the parser chose to reduce when possible rather than shift, the
@@ -6633,9 +6795,9 @@ result would be to attach the else-clause to the outermost if-statement,
 making these two inputs equivalent:
 
 @example
-if x then if y then win (); else lose;
+if x then if y then win; else lose;
 
-if x then do; if y then win (); end; else lose;
+if x then do; if y then win; end; else lose;
 @end example
 
 The conflict exists because the grammar as written is ambiguous: either
@@ -6648,11 +6810,16 @@ This particular ambiguity was first encountered in the specifications of
 Algol 60 and is called the ``dangling @code{else}'' ambiguity.
 
 To avoid warnings from Bison about predictable, legitimate shift/reduce
-conflicts, use the @code{%expect @var{n}} declaration.
+conflicts, you can use the @code{%expect @var{n}} declaration.
 There will be no warning as long as the number of shift/reduce conflicts
 is exactly @var{n}, and Bison will report an error if there is a
 different number.
-@xref{Expect Decl, ,Suppressing Conflict Warnings}.
+@xref{Expect Decl, ,Suppressing Conflict Warnings}.  However, we don't
+recommend the use of @code{%expect} (except @samp{%expect 0}!), as an equal
+number of conflicts does not mean that they are the @emph{same}.  When
+possible, you should rather use precedence directives to @emph{fix} the
+conflicts explicitly (@pxref{Non Operators,, Using Precedence For Non
+Operators}).
 
 The definition of @code{if_stmt} above is solely to blame for the
 conflict, but the conflict does not actually appear without additional
@@ -6661,7 +6828,6 @@ the conflict:
 
 @example
 @group
-%token IF THEN ELSE variable
 %%
 @end group
 @group
@@ -6673,13 +6839,13 @@ stmt:
 
 @group
 if_stmt:
-  IF expr THEN stmt
-| IF expr THEN stmt ELSE stmt
+  "if" expr "then" stmt
+| "if" expr "then" stmt "else" stmt
 ;
 @end group
 
 expr:
-  variable
+  "identifier"
 ;
 @end example
 
@@ -6698,6 +6864,7 @@ shift and when to reduce.
 * Using Precedence::  How to specify precedence in Bison grammars.
 * Precedence Examples::  How these features are used in the previous example.
 * How Precedence::    How they work.
+* Non Operators::     Using precedence for general conflicts.
 @end menu
 
 @node Why Precedence
@@ -6785,16 +6952,11 @@ would declare them in groups of equal precedence.  For example, @code{'+'} is
 declared with @code{'-'}:
 
 @example
-%left '<' '>' '=' NE LE GE
+%left '<' '>' '=' "!=" "<=" ">="
 %left '+' '-'
 %left '*' '/'
 @end example
 
-@noindent
-(Here @code{NE} and so on stand for the operators for ``not equal''
-and so on.  We assume that these tokens are more than one character long
-and therefore are represented by names, not character literals.)
-
 @node How Precedence
 @subsection How Precedence Works
 
@@ -6817,6 +6979,44 @@ resolved.
 Not all rules and not all tokens have precedence.  If either the rule or
 the lookahead token has no precedence, then the default is to shift.
 
+@node Non Operators
+@subsection Using Precedence For Non Operators
+
+Using properly precedence and associativity directives can help fixing
+shift/reduce conflicts that do not involve arithmetics-like operators.  For
+instance, the ``dangling @code{else}'' problem (@pxref{Shift/Reduce, ,
+Shift/Reduce Conflicts}) can be solved elegantly in two different ways.
+
+In the present case, the conflict is between the token @code{"else"} willing
+to be shifted, and the rule @samp{if_stmt: "if" expr "then" stmt}, asking
+for reduction.  By default, the precedence of a rule is that of its last
+token, here @code{"then"}, so the conflict will be solved appropriately
+by giving @code{"else"} a precedence higher than that of @code{"then"}, for
+instance as follows:
+
+@example
+@group
+%nonassoc "then"
+%nonassoc "else"
+@end group
+@end example
+
+Alternatively, you may give both tokens the same precedence, in which case
+associativity is used to solve the conflict.  To preserve the shift action,
+use right associativity:
+
+@example
+%right "then" "else"
+@end example
+
+Neither solution is perfect however.  Since Bison does not provide, so far,
+support for ``scoped'' precedence, both force you to declare the precedence
+of these keywords with respect to the other operators your grammar.
+Therefore, instead of being warned about new conflicts you would be unaware
+of (e.g., a shift/reduce conflict due to @samp{if test then 1 else 2 + 3}
+being ambiguous: @samp{if test then 1 else (2 + 3)} or @samp{(if test then 1
+else 2) + 3}?), the conflict will be already ``fixed''.
+
 @node Contextual Precedence
 @section Context-Dependent Precedence
 @cindex context-dependent precedence
@@ -6977,30 +7177,38 @@ reduce/reduce conflict must be studied and usually eliminated.  Here is the
 proper way to define @code{sequence}:
 
 @example
+@group
 sequence:
   /* empty */    @{ printf ("empty sequence\n"); @}
 | sequence word  @{ printf ("added word %s\n", $2); @}
 ;
+@end group
 @end example
 
 Here is another common error that yields a reduce/reduce conflict:
 
 @example
 sequence:
+@group
   /* empty */
 | sequence words
 | sequence redirects
 ;
+@end group
 
+@group
 words:
   /* empty */
 | words word
 ;
+@end group
 
+@group
 redirects:
   /* empty */
 | redirects redirect
 ;
+@end group
 @end example
 
 @noindent
@@ -7053,6 +7261,58 @@ redirects:
 @end group
 @end example
 
+Yet this proposal introduces another kind of ambiguity!  The input
+@samp{word word} can be parsed as a single @code{words} composed of two
+@samp{word}s, or as two one-@code{word} @code{words} (and likewise for
+@code{redirect}/@code{redirects}).  However this ambiguity is now a
+shift/reduce conflict, and therefore it can now be addressed with precedence
+directives.
+
+To simplify the matter, we will proceed with @code{word} and @code{redirect}
+being tokens: @code{"word"} and @code{"redirect"}.
+
+To prefer the longest @code{words}, the conflict between the token
+@code{"word"} and the rule @samp{sequence: sequence words} must be resolved
+as a shift.  To this end, we use the same techniques as exposed above, see
+@ref{Non Operators,, Using Precedence For Non Operators}.  One solution
+relies on precedences: use @code{%prec} to give a lower precedence to the
+rule:
+
+@example
+%nonassoc "word"
+%nonassoc "sequence"
+%%
+@group
+sequence:
+  /* empty */
+| sequence word      %prec "sequence"
+| sequence redirect  %prec "sequence"
+;
+@end group
+
+@group
+words:
+  word
+| words "word"
+;
+@end group
+@end example
+
+Another solution relies on associativity: provide both the token and the
+rule with the same precedence, but make them right-associative:
+
+@example
+%right "word" "redirect"
+%%
+@group
+sequence:
+  /* empty */
+| sequence word      %prec "word"
+| sequence redirect  %prec "redirect"
+;
+@end group
+@end example
+
 @node Mysterious Conflicts
 @section Mysterious Conflicts
 @cindex Mysterious Conflicts
@@ -7062,8 +7322,6 @@ Here is an example:
 
 @example
 @group
-%token ID
-
 %%
 def: param_spec return_spec ',';
 param_spec:
@@ -7078,10 +7336,10 @@ return_spec:
 ;
 @end group
 @group
-type: ID;
+type: "id";
 @end group
 @group
-name: ID;
+name: "id";
 name_list:
   name
 | name ',' name_list
@@ -7089,16 +7347,16 @@ name_list:
 @end group
 @end example
 
-It would seem that this grammar can be parsed with only a single token
-of lookahead: when a @code{param_spec} is being read, an @code{ID} is
-@code{name} if a comma or colon follows, or a @code{type} if another
-@code{ID} follows.  In other words, this grammar is LR(1).
+It would seem that this grammar can be parsed with only a single token of
+lookahead: when a @code{param_spec} is being read, an @code{"id"} is a
+@code{name} if a comma or colon follows, or a @code{type} if another
+@code{"id"} follows.  In other words, this grammar is LR(1).
 
 @cindex LR
 @cindex LALR
 However, for historical reasons, Bison cannot by default handle all
 LR(1) grammars.
-In this grammar, two contexts, that after an @code{ID} at the beginning
+In this grammar, two contexts, that after an @code{"id"} at the beginning
 of a @code{param_spec} and likewise at the beginning of a
 @code{return_spec}, are similar enough that Bison assumes they are the
 same.
@@ -7129,27 +7387,24 @@ distinct.  In the above example, adding one rule to
 
 @example
 @group
-%token BOGUS
-@dots{}
-%%
 @dots{}
 return_spec:
   type
 | name ':' type
-| ID BOGUS       /* This rule is never used.  */
+| "id" "bogus"       /* This rule is never used.  */
 ;
 @end group
 @end example
 
 This corrects the problem because it introduces the possibility of an
-additional active rule in the context after the @code{ID} at the beginning of
+additional active rule in the context after the @code{"id"} at the beginning of
 @code{return_spec}.  This rule is not active in the corresponding context
 in a @code{param_spec}, so the two contexts receive distinct parser states.
-As long as the token @code{BOGUS} is never generated by @code{yylex},
+As long as the token @code{"bogus"} is never generated by @code{yylex},
 the added rule cannot alter the way actual input is parsed.
 
 In this particular example, there is another way to solve the problem:
-rewrite the rule for @code{return_spec} to use @code{ID} directly
+rewrite the rule for @code{return_spec} to use @code{"id"} directly
 instead of via @code{name}.  This also causes the two confusing
 contexts to have different sets of active rules, because the one for
 @code{return_spec} activates the altered rule for @code{return_spec}
@@ -7162,7 +7417,7 @@ param_spec:
 ;
 return_spec:
   type
-| ID ':' type
+| "id" ':' type
 ;
 @end example
 
@@ -7220,9 +7475,9 @@ mysterious behavior altogether.  You simply need to activate a more powerful
 parser table construction algorithm by using the @code{%define lr.type}
 directive.
 
-@deffn {Directive} {%define lr.type @var{TYPE}}
+@deffn {Directive} {%define lr.type} @var{type}
 Specify the type of parser tables within the LR(1) family.  The accepted
-values for @var{TYPE} are:
+values for @var{type} are:
 
 @itemize
 @item @code{lalr} (default)
@@ -7409,9 +7664,9 @@ split the parse instead.
 To adjust which states have default reductions enabled, use the
 @code{%define lr.default-reductions} directive.
 
-@deffn {Directive} {%define lr.default-reductions @var{WHERE}}
+@deffn {Directive} {%define lr.default-reductions} @var{where}
 Specify the kind of states that are permitted to contain default reductions.
-The accepted values of @var{WHERE} are:
+The accepted values of @var{where} are:
 @itemize
 @item @code{most} (default for LALR and IELR)
 @item @code{consistent}
@@ -7449,7 +7704,7 @@ that solves these problems for canonical LR, IELR, and LALR without
 sacrificing @code{%nonassoc}, default reductions, or state merging.  You can
 enable LAC with the @code{%define parse.lac} directive.
 
-@deffn {Directive} {%define parse.lac @var{VALUE}}
+@deffn {Directive} {%define parse.lac} @var{value}
 Enable LAC to improve syntax error handling.
 @itemize
 @item @code{none} (default)
@@ -7545,9 +7800,9 @@ resolution because they are useless in the generated parser.  However,
 keeping unreachable states is sometimes useful when trying to understand the
 relationship between the parser and the grammar.
 
-@deffn {Directive} {%define lr.keep-unreachable-states @var{VALUE}}
+@deffn {Directive} {%define lr.keep-unreachable-states} @var{value}
 Request that Bison allow unreachable states to remain in the parser tables.
-@var{VALUE} must be a Boolean.  The default is @code{false}.
+@var{value} must be a Boolean.  The default is @code{false}.
 @end deffn
 
 There are a few caveats to consider:
@@ -8049,11 +8304,31 @@ clear the flag.
 
 Developing a parser can be a challenge, especially if you don't understand
 the algorithm (@pxref{Algorithm, ,The Bison Parser Algorithm}).  This
-chapter explains how to generate and read the detailed description of the
-automaton, and how to enable and understand the parser run-time traces.
+chapter explains how understand and debug a parser.
+
+The first sections focus on the static part of the parser: its structure.
+They explain how to generate and read the detailed description of the
+automaton.  There are several formats available:
+@itemize @minus
+@item
+as text, see @ref{Understanding, , Understanding Your Parser};
+
+@item
+as a graph, see @ref{Graphviz,, Visualizing Your Parser};
+
+@item
+or as a markup report that can be turned, for instance, into HTML, see
+@ref{Xml,, Visualizing your parser in multiple formats}.
+@end itemize
+
+The last section focuses on the dynamic part of the parser: how to enable
+and understand the parser run-time traces (@pxref{Tracing, ,Tracing Your
+Parser}).
 
 @menu
 * Understanding::     Understanding the structure of your parser.
+* Graphviz::          Getting a visual representation of the parser.
+* Xml::               Getting a markup representation of the parser.
 * Tracing::           Tracing the execution of your parser.
 @end menu
 
@@ -8063,8 +8338,7 @@ automaton, and how to enable and understand the parser run-time traces.
 As documented elsewhere (@pxref{Algorithm, ,The Bison Parser Algorithm})
 Bison parsers are @dfn{shift/reduce automata}.  In some cases (much more
 frequent than one would hope), looking at this automaton is required to
-tune or simply fix a parser.  Bison provides two different
-representation of it, either textually or graphically (as a DOT file).
+tune or simply fix a parser.
 
 The textual file is generated when the options @option{--report} or
 @option{--verbose} are specified, see @ref{Invocation, , Invoking
@@ -8078,9 +8352,12 @@ The following grammar file, @file{calc.y}, will be used in the sequel:
 
 @example
 %token NUM STR
+@group
 %left '+' '-'
 %left '*'
+@end group
 %%
+@group
 exp:
   exp '+' exp
 | exp '-' exp
@@ -8088,6 +8365,7 @@ exp:
 | exp '/' exp
 | NUM
 ;
+@end group
 useless: STR;
 %%
 @end example
@@ -8097,8 +8375,8 @@ useless: STR;
 @example
 calc.y: warning: 1 nonterminal useless in grammar
 calc.y: warning: 1 rule useless in grammar
-calc.y:11.1-7: warning: nonterminal useless in grammar: useless
-calc.y:11.10-12: warning: rule useless in grammar: useless: STR
+calc.y:12.1-7: warning: nonterminal useless in grammar: useless
+calc.y:12.10-12: warning: rule useless in grammar: useless: STR
 calc.y: conflicts: 7 shift/reduce
 @end example
 
@@ -8192,7 +8470,7 @@ item is a production rule together with a point (@samp{.}) marking
 the location of the input cursor.
 
 @example
-state 0
+State 0
 
     0 $accept: . exp $end
 
@@ -8222,7 +8500,7 @@ you want to see more detail you can invoke @command{bison} with
 @option{--report=itemset} to list the derived items as well:
 
 @example
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . exp '+' exp
@@ -8240,7 +8518,7 @@ state 0
 In the state 1@dots{}
 
 @example
-state 1
+State 1
 
     5 exp: NUM .
 
@@ -8250,11 +8528,11 @@ state 1
 @noindent
 the rule 5, @samp{exp: NUM;}, is completed.  Whatever the lookahead token
 (@samp{$default}), the parser will reduce it.  If it was coming from
-state 0, then, after this reduction it will return to state 0, and will
+State 0, then, after this reduction it will return to state 0, and will
 jump to state 2 (@samp{exp: go to state 2}).
 
 @example
-state 2
+State 2
 
     0 $accept: exp . $end
     1 exp: exp . '+' exp
@@ -8282,7 +8560,7 @@ The state 3 is named the @dfn{final state}, or the @dfn{accepting
 state}:
 
 @example
-state 3
+State 3
 
     0 $accept: exp $end .
 
@@ -8297,7 +8575,7 @@ The interpretation of states 4 to 7 is straightforward, and is left to
 the reader.
 
 @example
-state 4
+State 4
 
     1 exp: exp '+' . exp
 
@@ -8306,7 +8584,7 @@ state 4
     exp  go to state 8
 
 
-state 5
+State 5
 
     2 exp: exp '-' . exp
 
@@ -8315,7 +8593,7 @@ state 5
     exp  go to state 9
 
 
-state 6
+State 6
 
     3 exp: exp '*' . exp
 
@@ -8324,7 +8602,7 @@ state 6
     exp  go to state 10
 
 
-state 7
+State 7
 
     4 exp: exp '/' . exp
 
@@ -8337,7 +8615,7 @@ As was announced in beginning of the report, @samp{State 8 conflicts:
 1 shift/reduce}:
 
 @example
-state 8
+State 8
 
     1 exp: exp . '+' exp
     1    | exp '+' exp .
@@ -8380,7 +8658,7 @@ with some set of possible lookahead tokens.  When run with
 @option{--report=lookahead}, Bison specifies these lookahead tokens:
 
 @example
-state 8
+State 8
 
     1 exp: exp . '+' exp
     1    | exp '+' exp .  [$end, '+', '-', '/']
@@ -8412,7 +8690,7 @@ The remaining states are similar:
 
 @example
 @group
-state 9
+State 9
 
     1 exp: exp . '+' exp
     2    | exp . '-' exp
@@ -8428,7 +8706,7 @@ state 9
 @end group
 
 @group
-state 10
+State 10
 
     1 exp: exp . '+' exp
     2    | exp . '-' exp
@@ -8443,7 +8721,7 @@ state 10
 @end group
 
 @group
-state 11
+State 11
 
     1 exp: exp . '+' exp
     2    | exp . '-' exp
@@ -8466,10 +8744,180 @@ state 11
 
 @noindent
 Observe that state 11 contains conflicts not only due to the lack of
-precedence of @samp{/} with respect to @samp{+}, @samp{-}, and
-@samp{*}, but also because the
-associativity of @samp{/} is not specified.
+precedence of @samp{/} with respect to @samp{+}, @samp{-}, and @samp{*}, but
+also because the associativity of @samp{/} is not specified.
+
+Bison may also produce an HTML version of this output, via an XML file and
+XSLT processing (@pxref{Xml,,Visualizing your parser in multiple formats}).
+
+@c ================================================= Graphical Representation
+
+@node Graphviz
+@section Visualizing Your Parser
+@cindex dot
+
+As another means to gain better understanding of the shift/reduce
+automaton corresponding to the Bison parser, a DOT file can be generated. Note
+that debugging a real grammar with this is tedious at best, and impractical
+most of the times, because the generated files are huge (the generation of
+a PDF or PNG file from it will take very long, and more often than not it will
+fail due to memory exhaustion). This option was rather designed for beginners,
+to help them understand LR parsers.
+
+This file is generated when the @option{--graph} option is specified
+(@pxref{Invocation, , Invoking Bison}).  Its name is made by removing
+@samp{.tab.c} or @samp{.c} from the parser implementation file name, and
+adding @samp{.dot} instead.  If the grammar file is @file{foo.y}, the
+Graphviz output file is called @file{foo.dot}.  A DOT file may also be
+produced via an XML file and XSLT processing (@pxref{Xml,,Visualizing your
+parser in multiple formats}).
+
+
+The following grammar file, @file{rr.y}, will be used in the sequel:
+
+@example
+%%
+@group
+exp: a ";" | b ".";
+a: "0";
+b: "0";
+@end group
+@end example
+
+The graphical output
+@ifnotinfo
+(see @ref{fig:graph})
+@end ifnotinfo
+is very similar to the textual one, and as such it is easier understood by
+making direct comparisons between them.  @xref{Debugging, , Debugging Your
+Parser}, for a detailled analysis of the textual report.
+
+@ifnotinfo
+@float Figure,fig:graph
+@image{figs/example, 430pt}
+@caption{A graphical rendering of the parser.}
+@end float
+@end ifnotinfo
+
+@subheading Graphical Representation of States
+
+The items (pointed rules) for each state are grouped together in graph nodes.
+Their numbering is the same as in the verbose file. See the following points,
+about transitions, for examples
 
+When invoked with @option{--report=lookaheads}, the lookahead tokens, when
+needed, are shown next to the relevant rule between square brackets as a
+comma separated list. This is the case in the figure for the representation of
+reductions, below.
+
+@sp 1
+
+The transitions are represented as directed edges between the current and
+the target states.
+
+@subheading Graphical Representation of Shifts
+
+Shifts are shown as solid arrows, labelled with the lookahead token for that
+shift. The following describes a reduction in the @file{rr.output} file:
+
+@example
+@group
+State 3
+
+    1 exp: a . ";"
+
+    ";"  shift, and go to state 6
+@end group
+@end example
+
+A Graphviz rendering of this portion of the graph could be:
+
+@center @image{figs/example-shift, 100pt}
+
+@subheading Graphical Representation of Reductions
+
+Reductions are shown as solid arrows, leading to a diamond-shaped node
+bearing the number of the reduction rule. The arrow is labelled with the
+appropriate comma separated lookahead tokens. If the reduction is the default
+action for the given state, there is no such label.
+
+This is how reductions are represented in the verbose file @file{rr.output}:
+@example
+State 1
+
+    3 a: "0" .  [";"]
+    4 b: "0" .  ["."]
+
+    "."       reduce using rule 4 (b)
+    $default  reduce using rule 3 (a)
+@end example
+
+A Graphviz rendering of this portion of the graph could be:
+
+@center @image{figs/example-reduce, 120pt}
+
+When unresolved conflicts are present, because in deterministic parsing
+a single decision can be made, Bison can arbitrarily choose to disable a
+reduction, see @ref{Shift/Reduce, , Shift/Reduce Conflicts}.  Discarded actions
+are distinguished by a red filling color on these nodes, just like how they are
+reported between square brackets in the verbose file.
+
+The reduction corresponding to the rule number 0 is the acceptation
+state. It is shown as a blue diamond, labelled ``Acc''.
+
+@subheading Graphical representation of go tos
+
+The @samp{go to} jump transitions are represented as dotted lines bearing
+the name of the rule being jumped to.
+
+@c ================================================= XML
+
+@node Xml
+@section Visualizing your parser in multiple formats
+@cindex xml
+
+Bison supports two major report formats: textual output
+(@pxref{Understanding, ,Understanding Your Parser}) when invoked
+with option @option{--verbose}, and DOT
+(@pxref{Graphviz,, Visualizing Your Parser}) when invoked with
+option @option{--graph}. However,
+another alternative is to output an XML file that may then be, with
+@command{xsltproc}, rendered as either a raw text format equivalent to the
+verbose file, or as an HTML version of the same file, with clickable
+transitions, or even as a DOT. The @file{.output} and DOT files obtained via
+XSLT have no difference whatsoever with those obtained by invoking
+@command{bison} with options @option{--verbose} or @option{--graph}.
+
+The XML file is generated when the options @option{-x} or
+@option{--xml[=FILE]} are specified, see @ref{Invocation,,Invoking Bison}.
+If not specified, its name is made by removing @samp{.tab.c} or @samp{.c}
+from the parser implementation file name, and adding @samp{.xml} instead.
+For instance, if the grammar file is @file{foo.y}, the default XML output
+file is @file{foo.xml}.
+
+Bison ships with a @file{data/xslt} directory, containing XSL Transformation
+files to apply to the XML file. Their names are non-ambiguous:
+
+@table @file
+@item xml2dot.xsl
+Used to output a copy of the DOT visualization of the automaton.
+@item xml2text.xsl
+Used to output a copy of the @samp{.output} file.
+@item xml2xhtml.xsl
+Used to output an xhtml enhancement of the @samp{.output} file.
+@end table
+
+Sample usage (requires @command{xsltproc}):
+@example
+$ bison -x gr.y
+@group
+$ bison --print-datadir
+/usr/local/share/bison
+@end group
+$ xsltproc /usr/local/share/bison/xslt/xml2xhtml.xsl gr.xml >gr.html
+@end example
+
+@c ================================================= Tracing
 
 @node Tracing
 @section Tracing Your Parser
@@ -8502,8 +8950,8 @@ Prologue}).
 If the @code{%define} variable @code{api.prefix} is used (@pxref{Multiple
 Parsers, ,Multiple Parsers in the Same Program}), for instance @samp{%define
 api.prefix x}, then if @code{CDEBUG} is defined, its value controls the
-tracing feature (enabled iff nonzero); otherwise tracing is enabled iff
-@code{YYDEBUG} is nonzero.
+tracing feature (enabled if and only if nonzero); otherwise tracing is
+enabled if and only if @code{YYDEBUG} is nonzero.
 
 @item the option @option{-t} (POSIX Yacc compliant)
 @itemx the option @option{--debug} (Bison extension)
@@ -8657,7 +9105,7 @@ Entering state 24
 
 @noindent
 The previous reduction demonstrates the @code{%printer} directive for
-@code{<val>}: both the token @code{NUM} and the resulting non-terminal
+@code{<val>}: both the token @code{NUM} and the resulting nonterminal
 @code{exp} have @samp{1} as value.
 
 @example
@@ -8936,6 +9384,56 @@ Treat warnings as errors.
 A category can be turned off by prefixing its name with @samp{no-}.  For
 instance, @option{-Wno-yacc} will hide the warnings about
 POSIX Yacc incompatibilities.
+
+@item -f [@var{feature}]
+@itemx --feature[=@var{feature}]
+Activate miscellaneous @var{feature}. @var{feature} can be one of:
+@table @code
+@item caret
+@itemx diagnostics-show-caret
+Show caret errors, in a manner similar to GCC's
+@option{-fdiagnostics-show-caret}, or Clang's @option{-fcaret-diagnotics}. The
+location provided with the message is used to quote the corresponding line of
+the source file, underlining the important part of it with carets (^). Here is
+an example, using the following file @file{in.y}:
+
+@example
+%type <ival> exp
+%%
+exp: exp '+' exp @{ $exp = $1 + $2; @};
+@end example
+
+When invoked with @option{-fcaret}, Bison will report:
+
+@example
+@group
+in.y:3.20-23: error: ambiguous reference: '$exp'
+ exp: exp '+' exp @{ $exp = $1 + $2; @};
+                    ^^^^
+@end group
+@group
+in.y:3.1-3:       refers to: $exp at $$
+ exp: exp '+' exp @{ $exp = $1 + $2; @};
+ ^^^
+@end group
+@group
+in.y:3.6-8:       refers to: $exp at $1
+ exp: exp '+' exp @{ $exp = $1 + $2; @};
+      ^^^
+@end group
+@group
+in.y:3.14-16:     refers to: $exp at $3
+ exp: exp '+' exp @{ $exp = $1 + $2; @};
+              ^^^
+@end group
+@group
+in.y:3.32-33: error: $2 of 'exp' has no declared type
+ exp: exp '+' exp @{ $exp = $1 + $2; @};
+                                ^^
+@end group
+@end example
+
+@end table
 @end table
 
 @noindent
@@ -8984,9 +9482,6 @@ Specify the programming language for the generated parser, as if
 Summary}).  Currently supported languages include C, C++, and Java.
 @var{language} is case-insensitive.
 
-This option is experimental and its effect may be modified in future
-releases.
-
 @item --locations
 Pretend that @code{%locations} was specified.  @xref{Decl Summary}.
 
@@ -9055,13 +9550,23 @@ separated list of @var{things} among:
 Description of the grammar, conflicts (resolved and unresolved), and
 parser's automaton.
 
+@item itemset
+Implies @code{state} and augments the description of the automaton with
+the full set of items for each state, instead of its core only.
+
 @item lookahead
 Implies @code{state} and augments the description of the automaton with
 each rule's lookahead set.
 
-@item itemset
-Implies @code{state} and augments the description of the automaton with
-the full set of items for each state, instead of its core only.
+@item solved
+Implies @code{state}.  Explain how conflicts were solved thanks to
+precedence and associativity directives.
+
+@item all
+Enable all the items.
+
+@item none
+Do not generate the report.
 @end table
 
 @item --report-file=@var{file}
@@ -9179,8 +9684,9 @@ generated in the following files:
 @table @file
 @item position.hh
 @itemx location.hh
-The definition of the classes @code{position} and @code{location},
-used for location tracking.  @xref{C++ Location Values}.
+The definition of the classes @code{position} and @code{location}, used for
+location tracking.  These files are not generated if the @code{%define}
+variable @code{api.location.type} is defined.  @xref{C++ Location Values}.
 
 @item stack.hh
 An auxiliary class @code{stack} used by the parser.
@@ -9236,18 +9742,22 @@ Symbols}.
 @c - %define filename_type "const symbol::Symbol"
 
 When the directive @code{%locations} is used, the C++ parser supports
-location tracking, see @ref{Tracking Locations}.  Two auxiliary classes
-define a @code{position}, a single point in a file, and a @code{location}, a
-range composed of a pair of @code{position}s (possibly spanning several
-files).
+location tracking, see @ref{Tracking Locations}.
+
+By default, two auxiliary classes define a @code{position}, a single point
+in a file, and a @code{location}, a range composed of a pair of
+@code{position}s (possibly spanning several files).  But if the
+@code{%define} variable @code{api.location.type} is defined, then these
+classes will not be generated, and the user defined type will be used.
 
 @tindex uint
 In this section @code{uint} is an abbreviation for @code{unsigned int}: in
 genuine code only the latter is used.
 
 @menu
-* C++ position::         One point in the source file
-* C++ location::         Two points in the source file
+* C++ position::                One point in the source file
+* C++ location::                Two points in the source file
+* User Defined Location Type::  Required interface for locations
 @end menu
 
 @node C++ position
@@ -9351,6 +9861,63 @@ Report @var{p} on @var{o}, taking care of special cases such as: no
 @code{filename} defined, or equal filename/line or column.
 @end deftypefun
 
+@node User Defined Location Type
+@subsubsection User Defined Location Type
+@findex %define api.location.type
+
+Instead of using the built-in types you may use the @code{%define} variable
+@code{api.location.type} to specify your own type:
+
+@example
+%define api.location.type @var{LocationType}
+@end example
+
+The requirements over your @var{LocationType} are:
+@itemize
+@item
+it must be copyable;
+
+@item
+in order to compute the (default) value of @code{@@$} in a reduction, the
+parser basically runs
+@example
+@@$.begin = @@$1.begin;
+@@$.end   = @@$@var{N}.end; // The location of last right-hand side symbol.
+@end example
+@noindent
+so there must be copyable @code{begin} and @code{end} members;
+
+@item
+alternatively you may redefine the computation of the default location, in
+which case these members are not required (@pxref{Location Default Action});
+
+@item
+if traces are enabled, then there must exist an @samp{std::ostream&
+  operator<< (std::ostream& o, const @var{LocationType}& s)} function.
+@end itemize
+
+@sp 1
+
+In programs with several C++ parsers, you may also use the @code{%define}
+variable @code{api.location.type} to share a common set of built-in
+definitions for @code{position} and @code{location}.  For instance, one
+parser @file{master/parser.yy} might use:
+
+@example
+%defines
+%locations
+%define namespace "master::"
+@end example
+
+@noindent
+to generate the @file{master/position.hh} and @file{master/location.hh}
+files, reused by other parsers as follows:
+
+@example
+%define api.location.type "master::location"
+%code requires @{ #include <master/location.hh> @}
+@end example
+
 @node C++ Parser Interface
 @subsection C++ Parser Interface
 @c - define parser_class_name
@@ -9388,6 +9955,11 @@ Build a new parser object.  There are no arguments by default, unless
 
 @deftypemethod {parser} {int} parse ()
 Run the syntactic analysis, and return 0 on success, 1 otherwise.
+
+@cindex exceptions
+The whole function is wrapped in a @code{try}/@code{catch} block, so that
+when an exception is thrown, the @code{%destructor}s are called to release
+the lookahead symbol, and the symbols pushed on the stack.
 @end deftypemethod
 
 @deftypemethod {parser} {std::ostream&} debug_stream ()
@@ -9417,7 +9989,7 @@ described by @var{m}.
 
 The parser invokes the scanner by calling @code{yylex}.  Contrary to C
 parsers, C++ parsers are always pure: there is no point in using the
-@code{%define api.pure} directive.  Therefore the interface is as follows.
+@code{%define api.pure full} directive.  Therefore the interface is as follows.
 
 @deftypemethod {parser} {int} yylex (semantic_type* @var{yylval}, location_type* @var{yylloc}, @var{type1} @var{arg1}, ...)
 Return the next token.  Its type is the return value, its semantic
@@ -9868,19 +10440,30 @@ It is convenient to use a typedef to shorten
 %@{
   typedef yy::calcxx_parser::token token;
 %@}
-           /* Convert ints to the actual type of tokens.  */
-[-+*/]     return yy::calcxx_parser::token_type (yytext[0]);
-":="       return token::ASSIGN;
-@{int@}      @{
-  errno = 0;
-  long n = strtol (yytext, NULL, 10);
-  if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
-    driver.error (*yylloc, "integer is out of range");
-  yylval->ival = n;
-  return token::NUMBER;
-@}
-@{id@}       yylval->sval = new std::string (yytext); return token::IDENTIFIER;
-.          driver.error (*yylloc, "invalid character");
+         /* Convert ints to the actual type of tokens.  */
+[-+*/]   return yy::calcxx_parser::token_type (yytext[0]);
+
+":="     return token::ASSIGN;
+
+@group
+@{int@}    @{
+           errno = 0;
+           long n = strtol (yytext, NULL, 10);
+           if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
+             driver.error (*yylloc, "integer is out of range");
+           yylval->ival = n;
+           return token::NUMBER;
+         @}
+@end group
+
+@group
+@{id@}     @{
+           yylval->sval = new std::string (yytext);
+           return token::IDENTIFIER;
+         @}
+@end group
+
+.        driver.error (*yylloc, "invalid character");
 %%
 @end example
 
@@ -9980,7 +10563,7 @@ You can create documentation for generated parsers using Javadoc.
 Contrary to C parsers, Java parsers do not use global variables; the
 state of the parser is always local to an instance of the parser class.
 Therefore, all Java parsers are ``pure'', and the @code{%pure-parser}
-and @code{%define api.pure} directives does not do anything when used in
+and @code{%define api.pure full} directives does not do anything when used in
 Java.
 
 Push parsers are currently unsupported in Java and @code{%define
@@ -10059,11 +10642,11 @@ class defines a @dfn{position}, a single point in a file; Bison itself
 defines a class representing a @dfn{location}, a range composed of a pair of
 positions (possibly spanning several files).  The location class is an inner
 class of the parser; the name is @code{Location} by default, and may also be
-renamed using @code{%define location_type "@var{class-name}"}.
+renamed using @code{%define api.location.type "@var{class-name}"}.
 
 The location class treats the position as a completely opaque value.
 By default, the class name is @code{Position}, but this can be changed
-with @code{%define position_type "@var{class-name}"}.  This class must
+with @code{%define api.position.type "@var{class-name}"}.  This class must
 be supplied by the user.
 
 
@@ -10198,7 +10781,7 @@ In both cases, the scanner has to implement the following methods.
 @deftypemethod {Lexer} {void} yyerror (Location @var{loc}, String @var{msg})
 This method is defined by the user to emit an error message.  The first
 parameter is omitted if location tracking is not active.  Its type can be
-changed using @code{%define location_type "@var{class-name}".}
+changed using @code{%define api.location.type "@var{class-name}".}
 @end deftypemethod
 
 @deftypemethod {Lexer} {int} yylex ()
@@ -10216,7 +10799,7 @@ Return respectively the first position of the last token that
 @code{yylex} returned, and the first position beyond it.  These
 methods are not needed unless location tracking is active.
 
-The return type can be changed using @code{%define position_type
+The return type can be changed using @code{%define api.position.type
 "@var{class-name}".}
 @end deftypemethod
 
@@ -10461,10 +11044,11 @@ comma-separated list.  Default is @code{java.io.IOException}.
 @xref{Java Scanner Interface}.
 @end deffn
 
-@deffn {Directive} {%define location_type} "@var{class}"
+@deffn {Directive} {%define api.location.type} "@var{class}"
 The name of the class used for locations (a range between two
 positions).  This class is generated as an inner class of the parser
 class by @command{bison}.  Default is @code{Location}.
+Formerly named @code{location_type}.
 @xref{Java Location Values}.
 @end deffn
 
@@ -10479,9 +11063,10 @@ The name of the parser class.  Default is @code{YYParser} or
 @xref{Java Bison Interface}.
 @end deffn
 
-@deffn {Directive} {%define position_type} "@var{class}"
+@deffn {Directive} {%define api.position.type} "@var{class}"
 The name of the class used for positions. This class must be supplied by
 the user.  Default is @code{Position}.
+Formerly named @code{position_type}.
 @xref{Java Location Values}.
 @end deffn
 
@@ -10561,7 +11146,7 @@ or
 @quotation
 My parser includes support for an @samp{#include}-like feature, in
 which case I run @code{yyparse} from @code{yyparse}.  This fails
-although I did specify @samp{%define api.pure}.
+although I did specify @samp{%define api.pure full}.
 @end quotation
 
 These problems typically come not from Bison itself, but from
@@ -10924,18 +11509,23 @@ In an action, the location of the left-hand side of the rule.
 @end deffn
 
 @deffn {Variable} @@@var{n}
+@deffnx {Symbol} @@@var{n}
 In an action, the location of the @var{n}-th symbol of the right-hand side
 of the rule.  @xref{Tracking Locations}.
+
+In a grammar, the Bison-generated nonterminal symbol for a mid-rule action
+with a semantical value.  @xref{Mid-Rule Action Translation}.
 @end deffn
 
 @deffn {Variable} @@@var{name}
-In an action, the location of a symbol addressed by name.  @xref{Tracking
-Locations}.
+@deffnx {Variable} @@[@var{name}]
+In an action, the location of a symbol addressed by @var{name}.
+@xref{Tracking Locations}.
 @end deffn
 
-@deffn {Variable} @@[@var{name}]
-In an action, the location of a symbol addressed by name.  @xref{Tracking
-Locations}.
+@deffn {Symbol} $@@@var{n}
+In a grammar, the Bison-generated nonterminal symbol for a mid-rule action
+with no semantical value.  @xref{Mid-Rule Action Translation}.
 @end deffn
 
 @deffn {Variable} $$
@@ -10949,12 +11539,8 @@ right-hand side of the rule.  @xref{Actions}.
 @end deffn
 
 @deffn {Variable} $@var{name}
-In an action, the semantic value of a symbol addressed by name.
-@xref{Actions}.
-@end deffn
-
-@deffn {Variable} $[@var{name}]
-In an action, the semantic value of a symbol addressed by name.
+@deffnx {Variable} $[@var{name}]
+In an action, the semantic value of a symbol addressed by @var{name}.
 @xref{Actions}.
 @end deffn
 
@@ -10972,8 +11558,9 @@ the grammar file.  @xref{Grammar Outline, ,Outline of a Bison
 Grammar}.
 @end deffn
 
-@deffn {Construct} /*@dots{}*/
-Comment delimiters, as in C.
+@deffn {Construct} /* @dots{} */
+@deffnx {Construct} // @dots{}
+Comments, as in C/C++.
 @end deffn
 
 @deffn {Delimiter} :
@@ -11456,7 +12043,7 @@ Data type of semantic values; @code{int} by default.
 @item Accepting state
 A state whose only action is the accept action.
 The accepting state is thus a consistent state.
-@xref{Understanding,,}.
+@xref{Understanding, ,Understanding Your Parser}.
 
 @item Backus-Naur Form (BNF; also called ``Backus Normal Form'')
 Formal method of specifying context-free grammars originally proposed
@@ -11761,10 +12348,15 @@ London, Department of Computer Science, TR-00-12 (December 2000).
 @c LocalWords: toString deftypeivar deftypeivarx deftypeop YYParser strictfp
 @c LocalWords: superclasses boolean getErrorVerbose setErrorVerbose deftypecv
 @c LocalWords: getDebugStream setDebugStream getDebugLevel setDebugLevel url
-@c LocalWords: bisonVersion deftypecvx bisonSkeleton getStartPos getEndPos
+@c LocalWords: bisonVersion deftypecvx bisonSkeleton getStartPos getEndPos uint
 @c LocalWords: getLVal defvar deftypefn deftypefnx gotos msgfmt Corbett LALR's
-@c LocalWords: subdirectory Solaris nonassociativity perror schemas Malloy
-@c LocalWords: Scannerless ispell american
+@c LocalWords: subdirectory Solaris nonassociativity perror schemas Malloy ints
+@c LocalWords: Scannerless ispell american ChangeLog smallexample CSTYPE CLTYPE
+@c LocalWords: clval CDEBUG cdebug deftypeopx yyterminate LocationType
+@c LocalWords: parsers parser's
+@c LocalWords: associativity subclasses precedences unresolvable runnable
+@c LocalWords: allocators subunit initializations unreferenced untyped
+@c LocalWords: errorVerbose subtype subtypes
 
 @c Local Variables:
 @c ispell-dictionary: "american"
index c38ac00..4b71d31 100644 (file)
 @tab @option{-d}
 @tab @code{%defines [@var{"file"}]}
 
+@item @option{--feature[=@var{feature}]}
+@tab @option{-f [@var{feature}]}
+@tab
+
 @item @option{--file-prefix=@var{prefix}}
 @tab @option{-b @var{prefix}}
 @tab @code{%file-prefix @var{"prefix"}}
diff --git a/doc/figs/example-reduce.dot b/doc/figs/example-reduce.dot
new file mode 100644 (file)
index 0000000..fdd99c5
--- /dev/null
@@ -0,0 +1,11 @@
+digraph "reduce.y"
+{
+  node [fontname=courier shape=box]
+  edge [fontname=courier]
+
+  1 [label="State 1\n  3 a: \"0\" .  [\".\"]\l  4 b: \"0\" .  [\";\"]\l"]
+  1 -> "1R3" [label="" style=solid]
+ "1R3" [style=filled shape=diamond fillcolor=yellowgreen label="R3"]
+  1 -> "1R4" [label="[\";\"]" style=solid]
+ "1R4" [style=filled shape=diamond fillcolor=yellowgreen label="R4"]
+}
diff --git a/doc/figs/example-reduce.eps b/doc/figs/example-reduce.eps
new file mode 100644 (file)
index 0000000..d8d59b2
--- /dev/null
@@ -0,0 +1,300 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: graphviz version 2.30.1 (20130223.1256)
+%%Title: reduce.y
+%%Pages: 1
+%%BoundingBox: 0 0 180 150
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+/tapered { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 0 0 180 150
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+0 0 180 150 boxprim clip newpath
+1 1 set_scale 0 rotate 4 5 translate
+% 1
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 172.25 141.5 moveto
+-.25 141.5 lineto
+-.25 88.5 lineto
+172.25 88.5 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+57 126.3 moveto 58 (State 1) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 111.3 moveto 157 (  3 a: "0" .  ["."]) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 96.3 moveto 157 (  4 b: "0" .  [";"]) alignedtext
+grestore
+% 1R3
+gsave
+0.21961 0.75294 0.80392 nodecolor
+newpath 47 36 moveto
+17 18 lineto
+47 0 lineto
+77 18 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 47 36 moveto
+17 18 lineto
+47 0 lineto
+77 18 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+38.5 14.3 moveto 17 (R3) alignedtext
+grestore
+% 1->1R3
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 75.34 88.04 moveto
+69.46 73.72 62.22 56.08 56.53 42.22 curveto
+stroke
+0 0 0 edgecolor
+newpath 59.74 40.81 moveto
+52.7 32.89 lineto
+53.26 43.47 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 59.74 40.81 moveto
+52.7 32.89 lineto
+53.26 43.47 lineto
+closepath stroke
+grestore
+% 1R4
+gsave
+0.21961 0.75294 0.80392 nodecolor
+newpath 126 36 moveto
+96 18 lineto
+126 0 lineto
+156 18 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 126 36 moveto
+96 18 lineto
+126 0 lineto
+156 18 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+117.5 14.3 moveto 17 (R4) alignedtext
+grestore
+% 1->1R4
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 96.93 88.04 moveto
+103 73.63 110.48 55.86 116.33 41.96 curveto
+stroke
+0 0 0 edgecolor
+newpath 119.61 43.2 moveto
+120.26 32.62 lineto
+113.16 40.48 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 119.61 43.2 moveto
+120.26 32.62 lineto
+113.16 40.48 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+111 58.3 moveto 42 ([";"]) alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/doc/figs/example-reduce.pdf b/doc/figs/example-reduce.pdf
new file mode 100644 (file)
index 0000000..347be70
Binary files /dev/null and b/doc/figs/example-reduce.pdf differ
diff --git a/doc/figs/example-reduce.png b/doc/figs/example-reduce.png
new file mode 100644 (file)
index 0000000..80106ac
Binary files /dev/null and b/doc/figs/example-reduce.png differ
diff --git a/doc/figs/example-shift.dot b/doc/figs/example-shift.dot
new file mode 100644 (file)
index 0000000..995ba0e
--- /dev/null
@@ -0,0 +1,9 @@
+digraph "shift.y"
+{
+  node [fontname=courier shape=box]
+  edge [fontname=courier]
+
+  3 [label="State 3\n  1 exp: a . \".\"\l"]
+  3 -> 6 [style=solid label="\".\""]
+  6 [label="State 6\n  1 exp: a \".\" .\l"]
+}
diff --git a/doc/figs/example-shift.eps b/doc/figs/example-shift.eps
new file mode 100644 (file)
index 0000000..155d4ae
--- /dev/null
@@ -0,0 +1,252 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: graphviz version 2.30.1 (20130223.1256)
+%%Title: shift.y
+%%Pages: 1
+%%BoundingBox: 0 0 156 136
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+/tapered { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 0 0 156 136
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+0 0 156 136 boxprim clip newpath
+1 1 set_scale 0 rotate 4 5 translate
+% 3
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 148.25 128 moveto
+-.25 128 lineto
+-.25 90 lineto
+148.25 90 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+45 112.8 moveto 58 (State 3) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 97.8 moveto 133 (  1 exp: a . ".") alignedtext
+grestore
+% 6
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 148.25 38 moveto
+-.25 38 lineto
+-.25 0 lineto
+148.25 0 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+45 22.8 moveto 58 (State 6) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 7.8 moveto 133 (  1 exp: a "." .) alignedtext
+grestore
+% 3->6
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 74 89.77 moveto
+74 77.85 74 62.04 74 48.48 curveto
+stroke
+0 0 0 edgecolor
+newpath 77.5 48.21 moveto
+74 38.21 lineto
+70.5 48.21 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 77.5 48.21 moveto
+74 38.21 lineto
+70.5 48.21 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+74 60.3 moveto 25 (".") alignedtext
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/doc/figs/example-shift.pdf b/doc/figs/example-shift.pdf
new file mode 100644 (file)
index 0000000..68c9c46
Binary files /dev/null and b/doc/figs/example-shift.pdf differ
diff --git a/doc/figs/example-shift.png b/doc/figs/example-shift.png
new file mode 100644 (file)
index 0000000..28fff65
Binary files /dev/null and b/doc/figs/example-shift.png differ
diff --git a/doc/figs/example.dot b/doc/figs/example.dot
new file mode 100644 (file)
index 0000000..94fff85
--- /dev/null
@@ -0,0 +1,35 @@
+// Generated by GNU Bison 2.6.90.
+// Report bugs to <bug-bison@gnu.org>.
+// Home page: <http://www.gnu.org/software/bison/>.
+
+digraph "/tmp/fo.y"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label="State 0\n\l  0 $accept: . exp $end\l  1 exp: . a \";\"\l  2    | . b \".\"\l  3 a: . \"0\"\l  4 b: . \"0\"\l"]
+  0 -> 1 [style=solid label="\"0\""]
+  0 -> 2 [style=dashed label="exp"]
+  0 -> 3 [style=dashed label="a"]
+  0 -> 4 [style=dashed label="b"]
+  1 [label="State 1\n\l  3 a: \"0\" .  [\";\"]\l  4 b: \"0\" .  [\".\"]\l"]
+  1 -> "1R3" [style=solid]
+ "1R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  1 -> "1R4" [label="[\".\"]", style=solid]
+ "1R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
+  2 [label="State 2\n\l  0 $accept: exp . $end\l"]
+  2 -> 5 [style=solid label="$end"]
+  3 [label="State 3\n\l  1 exp: a . \";\"\l"]
+  3 -> 6 [style=solid label="\";\""]
+  4 [label="State 4\n\l  2 exp: b . \".\"\l"]
+  4 -> 7 [style=solid label="\".\""]
+  5 [label="State 5\n\l  0 $accept: exp $end .\l"]
+  5 -> "5R0" [style=solid]
+ "5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  6 [label="State 6\n\l  1 exp: a \";\" .\l"]
+  6 -> "6R1" [style=solid]
+ "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+  7 [label="State 7\n\l  2 exp: b \".\" .\l"]
+  7 -> "7R2" [style=solid]
+ "7R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+}
diff --git a/doc/figs/example.eps b/doc/figs/example.eps
new file mode 100644 (file)
index 0000000..35bee04
--- /dev/null
@@ -0,0 +1,715 @@
+%!PS-Adobe-3.0 EPSF-3.0
+%%Creator: graphviz version 2.30.1 (20130223.1256)
+%%Title: /tmp/fo.y
+%%Pages: 1
+%%BoundingBox: 0 0 739 424
+%%EndComments
+save
+%%BeginProlog
+/DotDict 200 dict def
+DotDict begin
+
+/setupLatin1 {
+mark
+/EncodingVector 256 array def
+ EncodingVector 0
+
+ISOLatin1Encoding 0 255 getinterval putinterval
+EncodingVector 45 /hyphen put
+
+% Set up ISO Latin 1 character encoding
+/starnetISO {
+        dup dup findfont dup length dict begin
+        { 1 index /FID ne { def }{ pop pop } ifelse
+        } forall
+        /Encoding EncodingVector def
+        currentdict end definefont
+} def
+/Times-Roman starnetISO def
+/Times-Italic starnetISO def
+/Times-Bold starnetISO def
+/Times-BoldItalic starnetISO def
+/Helvetica starnetISO def
+/Helvetica-Oblique starnetISO def
+/Helvetica-Bold starnetISO def
+/Helvetica-BoldOblique starnetISO def
+/Courier starnetISO def
+/Courier-Oblique starnetISO def
+/Courier-Bold starnetISO def
+/Courier-BoldOblique starnetISO def
+cleartomark
+} bind def
+
+%%BeginResource: procset graphviz 0 0
+/coord-font-family /Times-Roman def
+/default-font-family /Times-Roman def
+/coordfont coord-font-family findfont 8 scalefont def
+
+/InvScaleFactor 1.0 def
+/set_scale {
+       dup 1 exch div /InvScaleFactor exch def
+       scale
+} bind def
+
+% styles
+/solid { [] 0 setdash } bind def
+/dashed { [9 InvScaleFactor mul dup ] 0 setdash } bind def
+/dotted { [1 InvScaleFactor mul 6 InvScaleFactor mul] 0 setdash } bind def
+/invis {/fill {newpath} def /stroke {newpath} def /show {pop newpath} def} bind def
+/bold { 2 setlinewidth } bind def
+/filled { } bind def
+/unfilled { } bind def
+/rounded { } bind def
+/diagonals { } bind def
+/tapered { } bind def
+
+% hooks for setting color 
+/nodecolor { sethsbcolor } bind def
+/edgecolor { sethsbcolor } bind def
+/graphcolor { sethsbcolor } bind def
+/nopcolor {pop pop pop} bind def
+
+/beginpage {   % i j npages
+       /npages exch def
+       /j exch def
+       /i exch def
+       /str 10 string def
+       npages 1 gt {
+               gsave
+                       coordfont setfont
+                       0 0 moveto
+                       (\() show i str cvs show (,) show j str cvs show (\)) show
+               grestore
+       } if
+} bind def
+
+/set_font {
+       findfont exch
+       scalefont setfont
+} def
+
+% draw text fitted to its expected width
+/alignedtext {                 % width text
+       /text exch def
+       /width exch def
+       gsave
+               width 0 gt {
+                       [] 0 setdash
+                       text stringwidth pop width exch sub text length div 0 text ashow
+               } if
+       grestore
+} def
+
+/boxprim {                             % xcorner ycorner xsize ysize
+               4 2 roll
+               moveto
+               2 copy
+               exch 0 rlineto
+               0 exch rlineto
+               pop neg 0 rlineto
+               closepath
+} bind def
+
+/ellipse_path {
+       /ry exch def
+       /rx exch def
+       /y exch def
+       /x exch def
+       matrix currentmatrix
+       newpath
+       x y translate
+       rx ry scale
+       0 0 1 0 360 arc
+       setmatrix
+} bind def
+
+/endpage { showpage } bind def
+/showpage { } def
+
+/layercolorseq
+       [       % layer color sequence - darkest to lightest
+               [0 0 0]
+               [.2 .8 .8]
+               [.4 .8 .8]
+               [.6 .8 .8]
+               [.8 .8 .8]
+       ]
+def
+
+/layerlen layercolorseq length def
+
+/setlayer {/maxlayer exch def /curlayer exch def
+       layercolorseq curlayer 1 sub layerlen mod get
+       aload pop sethsbcolor
+       /nodecolor {nopcolor} def
+       /edgecolor {nopcolor} def
+       /graphcolor {nopcolor} def
+} bind def
+
+/onlayer { curlayer ne {invis} if } def
+
+/onlayers {
+       /myupper exch def
+       /mylower exch def
+       curlayer mylower lt
+       curlayer myupper gt
+       or
+       {invis} if
+} def
+
+/curlayer 0 def
+
+%%EndResource
+%%EndProlog
+%%BeginSetup
+14 default-font-family set_font
+1 setmiterlimit
+% /arrowlength 10 def
+% /arrowwidth 5 def
+
+% make sure pdfmark is harmless for PS-interpreters other than Distiller
+/pdfmark where {pop} {userdict /pdfmark /cleartomark load put} ifelse
+% make '<<' and '>>' safe on PS Level 1 devices
+/languagelevel where {pop languagelevel}{1} ifelse
+2 lt {
+    userdict (<<) cvn ([) cvn load put
+    userdict (>>) cvn ([) cvn load put
+} if
+
+%%EndSetup
+setupLatin1
+%%Page: 1 1
+%%PageBoundingBox: 0 0 739 424
+%%PageOrientation: Portrait
+0 0 1 beginpage
+gsave
+0 0 739 424 boxprim clip newpath
+1 1 set_scale 0 rotate 4 5 translate
+% 0
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 495 416 moveto
+289 416 lineto
+289 302 lineto
+495 302 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+363 400.8 moveto 58 (State 0) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+297 369.8 moveto 190 (  0 $accept: . exp $end) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+297 354.8 moveto 133 (  1 exp: . a ";") alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+297 339.8 moveto 133 (  2    | . b ".") alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+297 324.8 moveto 100 (  3 a: . "0") alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+297 309.8 moveto 100 (  4 b: . "0") alignedtext
+grestore
+% 1
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 172.25 249.5 moveto
+-.25 249.5 lineto
+-.25 180.5 lineto
+172.25 180.5 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+57 234.3 moveto 58 (State 1) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 203.3 moveto 157 (  3 a: "0" .  [";"]) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+7.5 188.3 moveto 157 (  4 b: "0" .  ["."]) alignedtext
+grestore
+% 0->1
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 288.83 310.12 moveto
+249.32 291.79 204.84 271.15 167.62 253.87 curveto
+stroke
+0 0 0 edgecolor
+newpath 168.86 250.59 moveto
+158.32 249.56 lineto
+165.92 256.94 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 168.86 250.59 moveto
+158.32 249.56 lineto
+165.92 256.94 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+230 272.3 moveto 25 ("0") alignedtext
+grestore
+% 2
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 397 242 moveto
+191 242 lineto
+191 188 lineto
+397 188 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+265 226.8 moveto 58 (State 2) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+199 195.8 moveto 190 (  0 $accept: exp . $end) alignedtext
+grestore
+% 0->2
+gsave
+1 setlinewidth
+dashed
+0 0 0 edgecolor
+newpath 353.27 301.88 moveto
+341.26 284.48 328.39 265.83 317.72 250.37 curveto
+stroke
+0 0 0 edgecolor
+newpath 320.6 248.39 moveto
+312.04 242.14 lineto
+314.84 252.36 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 320.6 248.39 moveto
+312.04 242.14 lineto
+314.84 252.36 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+341 272.3 moveto 25 (exp) alignedtext
+grestore
+% 3
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 564.25 242 moveto
+415.75 242 lineto
+415.75 188 lineto
+564.25 188 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+461 226.8 moveto 58 (State 3) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+423.5 195.8 moveto 133 (  1 exp: a . ";") alignedtext
+grestore
+% 0->3
+gsave
+1 setlinewidth
+dashed
+0 0 0 edgecolor
+newpath 430.73 301.88 moveto
+442.74 284.48 455.61 265.83 466.28 250.37 curveto
+stroke
+0 0 0 edgecolor
+newpath 469.16 252.36 moveto
+471.96 242.14 lineto
+463.4 248.39 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 469.16 252.36 moveto
+471.96 242.14 lineto
+463.4 248.39 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+453 272.3 moveto 9 (a) alignedtext
+grestore
+% 4
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 731.25 242 moveto
+582.75 242 lineto
+582.75 188 lineto
+731.25 188 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+628 226.8 moveto 58 (State 4) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+590.5 195.8 moveto 133 (  2 exp: b . ".") alignedtext
+grestore
+% 0->4
+gsave
+1 setlinewidth
+dashed
+0 0 0 edgecolor
+newpath 495.21 302.69 moveto
+530.51 283.78 568.73 263.3 599.15 247 curveto
+stroke
+0 0 0 edgecolor
+newpath 601.17 249.89 moveto
+608.33 242.08 lineto
+597.86 243.72 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 601.17 249.89 moveto
+608.33 242.08 lineto
+597.86 243.72 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+557 272.3 moveto 9 (b) alignedtext
+grestore
+% 1R3
+gsave
+0.2549 0.38039 0.87451 nodecolor
+newpath 36 119 moveto
+6 101 lineto
+36 83 lineto
+66 101 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 36 119 moveto
+6 101 lineto
+36 83 lineto
+66 101 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+27.5 97.3 moveto 17 (R3) alignedtext
+grestore
+% 1->1R3
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 71 180.4 moveto
+62.95 162.36 53.24 140.61 46.09 124.61 curveto
+stroke
+0 0 0 edgecolor
+newpath 49.28 123.17 moveto
+42.01 115.46 lineto
+42.89 126.02 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 49.28 123.17 moveto
+42.01 115.46 lineto
+42.89 126.02 lineto
+closepath stroke
+grestore
+% 1R4
+gsave
+0.2549 0.38039 0.87451 nodecolor
+newpath 115 119 moveto
+85 101 lineto
+115 83 lineto
+145 101 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 115 119 moveto
+85 101 lineto
+115 83 lineto
+145 101 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+106.5 97.3 moveto 17 (R4) alignedtext
+grestore
+% 1->1R4
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 94.7 180.4 moveto
+99.15 163.22 104.46 142.69 108.54 126.94 curveto
+stroke
+0 0 0 edgecolor
+newpath 112.02 127.47 moveto
+111.14 116.91 lineto
+105.24 125.71 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 112.02 127.47 moveto
+111.14 116.91 lineto
+105.24 125.71 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+104 150.3 moveto 42 (["."]) alignedtext
+grestore
+% 5
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 397 128 moveto
+191 128 lineto
+191 74 lineto
+397 74 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+265 112.8 moveto 58 (State 5) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+199 81.8 moveto 190 (  0 $accept: exp $end .) alignedtext
+grestore
+% 2->5
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 294 187.74 moveto
+294 173 294 154.38 294 138.26 curveto
+stroke
+0 0 0 edgecolor
+newpath 297.5 138.09 moveto
+294 128.09 lineto
+290.5 138.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 297.5 138.09 moveto
+294 128.09 lineto
+290.5 138.09 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+294 150.3 moveto 34 ($end) alignedtext
+grestore
+% 6
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 564.25 128 moveto
+415.75 128 lineto
+415.75 74 lineto
+564.25 74 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+461 112.8 moveto 58 (State 6) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+423.5 81.8 moveto 133 (  1 exp: a ";" .) alignedtext
+grestore
+% 3->6
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 490 187.74 moveto
+490 173 490 154.38 490 138.26 curveto
+stroke
+0 0 0 edgecolor
+newpath 493.5 138.09 moveto
+490 128.09 lineto
+486.5 138.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 493.5 138.09 moveto
+490 128.09 lineto
+486.5 138.09 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+490 150.3 moveto 25 (";") alignedtext
+grestore
+% 7
+gsave
+1 setlinewidth
+0 0 0 nodecolor
+newpath 731.25 128 moveto
+582.75 128 lineto
+582.75 74 lineto
+731.25 74 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+628 112.8 moveto 58 (State 7) alignedtext
+0 0 0 nodecolor
+14 /courier set_font
+590.5 81.8 moveto 133 (  2 exp: b "." .) alignedtext
+grestore
+% 4->7
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 657 187.74 moveto
+657 173 657 154.38 657 138.26 curveto
+stroke
+0 0 0 edgecolor
+newpath 660.5 138.09 moveto
+657 128.09 lineto
+653.5 138.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 660.5 138.09 moveto
+657 128.09 lineto
+653.5 138.09 lineto
+closepath stroke
+0 0 0 edgecolor
+14 /courier set_font
+657 150.3 moveto 25 (".") alignedtext
+grestore
+% 5R0
+gsave
+0.55686 0.26667 0.8902 nodecolor
+newpath 294 36 moveto
+256.47 18 lineto
+294 0 lineto
+331.53 18 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 294 36 moveto
+256.47 18 lineto
+294 0 lineto
+331.53 18 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+281.5 14.3 moveto 25 (Acc) alignedtext
+grestore
+% 5->5R0
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 294 73.93 moveto
+294 65.11 294 55.25 294 46.35 curveto
+stroke
+0 0 0 edgecolor
+newpath 297.5 46.09 moveto
+294 36.09 lineto
+290.5 46.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 297.5 46.09 moveto
+294 36.09 lineto
+290.5 46.09 lineto
+closepath stroke
+grestore
+% 6R1
+gsave
+0.2549 0.38039 0.87451 nodecolor
+newpath 490 36 moveto
+460 18 lineto
+490 0 lineto
+520 18 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 490 36 moveto
+460 18 lineto
+490 0 lineto
+520 18 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+481.5 14.3 moveto 17 (R1) alignedtext
+grestore
+% 6->6R1
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 490 73.93 moveto
+490 65.11 490 55.25 490 46.35 curveto
+stroke
+0 0 0 edgecolor
+newpath 493.5 46.09 moveto
+490 36.09 lineto
+486.5 46.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 493.5 46.09 moveto
+490 36.09 lineto
+486.5 46.09 lineto
+closepath stroke
+grestore
+% 7R2
+gsave
+0.2549 0.38039 0.87451 nodecolor
+newpath 657 36 moveto
+627 18 lineto
+657 0 lineto
+687 18 lineto
+closepath fill
+1 setlinewidth
+filled
+0 0 0 nodecolor
+newpath 657 36 moveto
+627 18 lineto
+657 0 lineto
+687 18 lineto
+closepath stroke
+0 0 0 nodecolor
+14 /courier set_font
+648.5 14.3 moveto 17 (R2) alignedtext
+grestore
+% 7->7R2
+gsave
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 657 73.93 moveto
+657 65.11 657 55.25 657 46.35 curveto
+stroke
+0 0 0 edgecolor
+newpath 660.5 46.09 moveto
+657 36.09 lineto
+653.5 46.09 lineto
+closepath fill
+1 setlinewidth
+solid
+0 0 0 edgecolor
+newpath 660.5 46.09 moveto
+657 36.09 lineto
+653.5 46.09 lineto
+closepath stroke
+grestore
+endpage
+showpage
+grestore
+%%PageTrailer
+%%EndPage: 1
+%%Trailer
+end
+restore
+%%EOF
diff --git a/doc/figs/example.pdf b/doc/figs/example.pdf
new file mode 100644 (file)
index 0000000..eb751fd
Binary files /dev/null and b/doc/figs/example.pdf differ
diff --git a/doc/figs/example.png b/doc/figs/example.png
new file mode 100644 (file)
index 0000000..69a3eb2
Binary files /dev/null and b/doc/figs/example.png differ
diff --git a/doc/figs/example.y b/doc/figs/example.y
new file mode 100644 (file)
index 0000000..d084081
--- /dev/null
@@ -0,0 +1,4 @@
+%%
+exp: a ";" | b ".";
+a: "0";
+b: "0";
index 97a17e1..0e2e212 100644 (file)
@@ -623,12 +623,12 @@ later version.
 @item Disclaimer of Warranty.
 
 THERE IS NO WARRANTY FOR THE PROGRAM, TO THE EXTENT PERMITTED BY
-APPLICABLE LAW.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
+APPLICABLE LAW@.  EXCEPT WHEN OTHERWISE STATED IN WRITING THE COPYRIGHT
 HOLDERS AND/OR OTHER PARTIES PROVIDE THE PROGRAM ``AS IS'' WITHOUT
 WARRANTY OF ANY KIND, EITHER EXPRESSED OR IMPLIED, INCLUDING, BUT NOT
 LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
-A PARTICULAR PURPOSE.  THE ENTIRE RISK AS TO THE QUALITY AND
-PERFORMANCE OF THE PROGRAM IS WITH YOU.  SHOULD THE PROGRAM PROVE
+A PARTICULAR PURPOSE@.  THE ENTIRE RISK AS TO THE QUALITY AND
+PERFORMANCE OF THE PROGRAM IS WITH YOU@.  SHOULD THE PROGRAM PROVE
 DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, REPAIR OR
 CORRECTION.
 
@@ -680,7 +680,7 @@ 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
+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
index caabf7e..a91e220 100644 (file)
@@ -19,7 +19,7 @@
 \def\finalout{\overfullrule=0pt}
 %\finalout
 
-% Copyright (c) 1998, 2001, 2009-2012 Free Software Foundation, Inc.
+% Copyright (c) 1998, 2001, 2009-2013 Free Software Foundation, Inc.
 %
 % This file is part of Bison.
 %
index a86638e..5268c51 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 27 July 2012
-@set UPDATED-MONTH July 2012
-@set EDITION 2.6.2
-@set VERSION 2.6.2
+@set UPDATED 8 April 2013
+@set UPDATED-MONTH April 2013
+@set EDITION 2.7.12-4996
+@set VERSION 2.7.12-4996
index a86638e..5268c51 100644 (file)
@@ -1,4 +1,4 @@
-@set UPDATED 27 July 2012
-@set UPDATED-MONTH July 2012
-@set EDITION 2.6.2
-@set VERSION 2.6.2
+@set UPDATED 8 April 2013
+@set UPDATED-MONTH April 2013
+@set EDITION 2.7.12-4996
+@set VERSION 2.7.12-4996
index 0261546..17c6ca8 100644 (file)
@@ -1,4 +1,4 @@
-## Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+## Copyright (C) 2006, 2009-2013 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
index 44d57d2..10ad8ac 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -63,8 +63,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = etc
-DIST_COMMON = README $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/bench.pl.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(srcdir)/bench.pl.in README
 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 \
@@ -80,6 +80,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -87,11 +88,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -184,6 +186,7 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -201,6 +204,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -220,9 +224,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -494,6 +501,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -833,6 +841,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1019,6 +1028,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1029,6 +1039,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1159,6 +1170,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1253,6 +1265,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1338,9 +1351,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits etc/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu etc/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits etc/Makefile
+         $(AUTOMAKE) --gnu etc/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1361,11 +1374,9 @@ $(ACLOCAL_M4):  $(am__aclocal_m4_deps)
 $(am__aclocal_m4_deps):
 bench.pl: $(top_builddir)/config.status $(srcdir)/bench.pl.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
@@ -1502,15 +1513,16 @@ uninstall-am:
 
 .MAKE: install-am install-strip
 
-.PHONY: all all-am check check-am clean clean-generic distclean \
-       distclean-generic distdir dvi dvi-am html html-am info info-am \
-       install install-am install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+.PHONY: all all-am check check-am clean clean-generic cscopelist-am \
+       ctags-am distclean distclean-generic distdir dvi dvi-am html \
+       html-am info info-am install install-am install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
+       pdf-am ps ps-am tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index e4f2abc..b9b8ce6 100644 (file)
@@ -16,7 +16,7 @@ straightforward use of _build/src/bison would.)
 
 --
 
-Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
 
 This file is part of Bison, the GNU Compiler Compiler.
 
index 4d480d5..66cb240 100755 (executable)
@@ -1,6 +1,6 @@
 #! /usr/bin/perl -w
 
-# Copyright (C) 2006, 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2008-2013 Free Software Foundation, Inc.
 #
 # This file is part of Bison, the GNU Compiler Compiler.
 #
index 60a79ad..89f244d 100644 (file)
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
-## Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc.
+## Copyright (C) 2005, 2009-2013 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
index a3eccef..87f9641 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -63,8 +63,8 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = examples
-DIST_COMMON = $(dist_noinst_SCRIPTS) $(srcdir)/Makefile.am \
-       $(srcdir)/Makefile.in
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       $(dist_noinst_SCRIPTS)
 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 \
@@ -80,6 +80,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -87,11 +88,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -179,13 +181,14 @@ am__v_at_0 = @
 am__v_at_1 = 
 SOURCES =
 DIST_SOURCES =
-RECURSIVE_TARGETS = all-recursive check-recursive dvi-recursive \
-       html-recursive info-recursive install-data-recursive \
-       install-dvi-recursive install-exec-recursive \
-       install-html-recursive install-info-recursive \
-       install-pdf-recursive install-ps-recursive install-recursive \
-       installcheck-recursive installdirs-recursive pdf-recursive \
-       ps-recursive uninstall-recursive
+RECURSIVE_TARGETS = all-recursive check-recursive cscopelist-recursive \
+       ctags-recursive dvi-recursive html-recursive info-recursive \
+       install-data-recursive install-dvi-recursive \
+       install-exec-recursive install-html-recursive \
+       install-info-recursive install-pdf-recursive \
+       install-ps-recursive install-recursive installcheck-recursive \
+       installdirs-recursive pdf-recursive ps-recursive \
+       tags-recursive uninstall-recursive
 am__can_run_installinfo = \
   case $$AM_UPDATE_INFO_DIR in \
     n|no|NO) false;; \
@@ -193,9 +196,29 @@ am__can_run_installinfo = \
   esac
 RECURSIVE_CLEAN_TARGETS = mostlyclean-recursive clean-recursive        \
   distclean-recursive maintainer-clean-recursive
-AM_RECURSIVE_TARGETS = $(RECURSIVE_TARGETS:-recursive=) \
-       $(RECURSIVE_CLEAN_TARGETS:-recursive=) tags TAGS ctags CTAGS \
+am__recursive_targets = \
+  $(RECURSIVE_TARGETS) \
+  $(RECURSIVE_CLEAN_TARGETS) \
+  $(am__extra_recursive_targets)
+AM_RECURSIVE_TARGETS = $(am__recursive_targets:-recursive=) TAGS CTAGS \
        distdir
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DIST_SUBDIRS = calc++
@@ -241,6 +264,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -260,9 +284,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -534,6 +561,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -873,6 +901,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1059,6 +1088,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1069,6 +1099,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1199,6 +1230,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1293,6 +1325,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1379,9 +1412,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits examples/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits examples/Makefile
+         $(AUTOMAKE) --gnu examples/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1407,7 +1440,7 @@ $(am__aclocal_m4_deps):
 # (1) if the variable is set in 'config.status', edit 'config.status'
 #     (which will cause the Makefiles to be regenerated when you run 'make');
 # (2) otherwise, pass the desired values on the 'make' command line.
-$(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
+$(am__recursive_targets):
        @fail= failcom='exit 1'; \
        for f in x $$MAKEFLAGS; do \
          case $$f in \
@@ -1435,31 +1468,13 @@ $(RECURSIVE_TARGETS) $(RECURSIVE_CLEAN_TARGETS):
        if test "$$dot_seen" = "no"; then \
          $(MAKE) $(AM_MAKEFLAGS) "$$target-am" || exit 1; \
        fi; test -z "$$fail"
-tags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) tags); \
-       done
-ctags-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) ctags); \
-       done
-cscopelist-recursive:
-       list='$(SUBDIRS)'; for subdir in $$list; do \
-         test "$$subdir" = . || ($(am__cd) $$subdir && $(MAKE) $(AM_MAKEFLAGS) cscopelist); \
-       done
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-recursive
+TAGS: tags
 
-TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
        if ($(ETAGS) --etags-include --version) >/dev/null 2>&1; then \
@@ -1475,12 +1490,7 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              set "$$@" "$$include_option=$$here/$$subdir/TAGS"; \
          fi; \
        done; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1492,15 +1502,11 @@ TAGS: tags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS: ctags-recursive $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-recursive
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1509,9 +1515,10 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-recursive
 
-cscopelist: cscopelist-recursive $(HEADERS) $(SOURCES) $(LISP)
-       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
        case "$(srcdir)" in \
          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
          *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1683,22 +1690,19 @@ ps-am:
 
 uninstall-am:
 
-.MAKE: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) \
-       cscopelist-recursive ctags-recursive install-am install-strip \
-       tags-recursive
+.MAKE: $(am__recursive_targets) install-am install-strip
 
-.PHONY: $(RECURSIVE_CLEAN_TARGETS) $(RECURSIVE_TARGETS) CTAGS GTAGS \
-       all all-am check check-am clean clean-generic cscopelist \
-       cscopelist-recursive ctags ctags-recursive distclean \
-       distclean-generic distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-data \
+.PHONY: $(am__recursive_targets) CTAGS GTAGS TAGS all all-am check \
+       check-am clean clean-generic cscopelist-am ctags ctags-am \
+       distclean distclean-generic distclean-tags distdir dvi dvi-am \
+       html html-am info info-am install install-am install-data \
        install-data-am install-dvi install-dvi-am install-exec \
        install-exec-am install-html install-html-am install-info \
        install-info-am install-man install-pdf install-pdf-am \
        install-ps install-ps-am install-strip installcheck \
        installcheck-am installdirs installdirs-am maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-generic pdf \
-       pdf-am ps ps-am tags tags-recursive uninstall uninstall-am
+       pdf-am ps ps-am tags tags-am uninstall uninstall-am
 
 
 # Tell versions [3.59,3.63) of GNU make to not export all variables.
index e8bbbac..41448bd 100644 (file)
@@ -1,5 +1,5 @@
 ## Process this file with automake to produce Makefile.in -*-Makefile-*-
-## Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+## Copyright (C) 2005-2006, 2009-2013 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
index 313e201..5bdea9b 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -63,9 +63,10 @@ build_triplet = @build@
 host_triplet = @host@
 check_PROGRAMS = calc++$(EXEEXT)
 subdir = examples/calc++
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap \
-       calc++-scanner.cc
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
+       calc++-scanner.cc $(top_srcdir)/build-aux/depcomp \
+       $(top_srcdir)/build-aux/ylwrap \
+       $(top_srcdir)/build-aux/test-driver
 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 \
@@ -81,6 +82,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -88,11 +90,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -228,12 +231,229 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 am__tty_colors_dummy = \
   mgn= red= grn= lgn= blu= brg= std=; \
   am__color_tests=no
-am__tty_colors = $(am__tty_colors_dummy)
+am__tty_colors = { \
+  $(am__tty_colors_dummy); \
+  if test "X$(AM_COLOR_TESTS)" = Xno; then \
+    am__color_tests=no; \
+  elif test "X$(AM_COLOR_TESTS)" = Xalways; then \
+    am__color_tests=yes; \
+  elif test "X$$TERM" != Xdumb && { test -t 1; } 2>/dev/null; then \
+    am__color_tests=yes; \
+  fi; \
+  if test $$am__color_tests = yes; then \
+    red='\e[0;31m'; \
+    grn='\e[0;32m'; \
+    lgn='\e[1;32m'; \
+    blu='\e[1;34m'; \
+    mgn='\e[0;35m'; \
+    brg='\e[1m'; \
+    std='\e[m'; \
+  fi; \
+}
+am__vpath_adj_setup = srcdirstrip=`echo "$(srcdir)" | sed 's|.|.|g'`;
+am__vpath_adj = case $$p in \
+    $(srcdir)/*) f=`echo "$$p" | sed "s|^$$srcdirstrip/||"`;; \
+    *) f=$$p;; \
+  esac;
+am__strip_dir = f=`echo $$p | sed -e 's|^.*/||'`;
+am__install_max = 40
+am__nobase_strip_setup = \
+  srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*|]/\\\\&/g'`
+am__nobase_strip = \
+  for p in $$list; do echo "$$p"; done | sed -e "s|$$srcdirstrip/||"
+am__nobase_list = $(am__nobase_strip_setup); \
+  for p in $$list; do echo "$$p $$p"; done | \
+  sed "s| $$srcdirstrip/| |;"' / .*\//!s/ .*/ ./; s,\( .*\)/[^/]*$$,\1,' | \
+  $(AWK) 'BEGIN { files["."] = "" } { files[$$2] = files[$$2] " " $$1; \
+    if (++n[$$2] == $(am__install_max)) \
+      { print $$2, files[$$2]; n[$$2] = 0; files[$$2] = "" } } \
+    END { for (dir in files) print dir, files[dir] }'
+am__base_list = \
+  sed '$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;$$!N;s/\n/ /g' | \
+  sed '$$!N;$$!N;$$!N;$$!N;s/\n/ /g'
+am__uninstall_files_from_dir = { \
+  test -z "$$files" \
+    || { test ! -d "$$dir" && test ! -f "$$dir" && test ! -r "$$dir"; } \
+    || { echo " ( cd '$$dir' && rm -f" $$files ")"; \
+         $(am__cd) "$$dir" && rm -f $$files; }; \
+  }
+am__recheck_rx = ^[    ]*:recheck:[    ]*
+am__global_test_result_rx = ^[         ]*:global-test-result:[         ]*
+am__copy_in_global_log_rx = ^[         ]*:copy-in-global-log:[         ]*
+# A command that, given a newline-separated list of test names on the
+# standard input, print the name of the tests that are to be re-run
+# upon "make recheck".
+am__list_recheck_tests = $(AWK) '{ \
+  recheck = 1; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+        { \
+          if ((getline line2 < ($$0 ".log")) < 0) \
+           recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[nN][Oo]/) \
+        { \
+          recheck = 0; \
+          break; \
+        } \
+      else if (line ~ /$(am__recheck_rx)[yY][eE][sS]/) \
+        { \
+          break; \
+        } \
+    }; \
+  if (recheck) \
+    print $$0; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# A command that, given a newline-separated list of test names on the
+# standard input, create the global log from their .trs and .log files.
+am__create_global_log = $(AWK) ' \
+function fatal(msg) \
+{ \
+  print "fatal: making $@: " msg | "cat >&2"; \
+  exit 1; \
+} \
+function rst_section(header) \
+{ \
+  print header; \
+  len = length(header); \
+  for (i = 1; i <= len; i = i + 1) \
+    printf "="; \
+  printf "\n\n"; \
+} \
+{ \
+  copy_in_global_log = 1; \
+  global_test_result = "RUN"; \
+  while ((rc = (getline line < ($$0 ".trs"))) != 0) \
+    { \
+      if (rc < 0) \
+         fatal("failed to read from " $$0 ".trs"); \
+      if (line ~ /$(am__global_test_result_rx)/) \
+        { \
+          sub("$(am__global_test_result_rx)", "", line); \
+          sub("[       ]*$$", "", line); \
+          global_test_result = line; \
+        } \
+      else if (line ~ /$(am__copy_in_global_log_rx)[nN][oO]/) \
+        copy_in_global_log = 0; \
+    }; \
+  if (copy_in_global_log) \
+    { \
+      rst_section(global_test_result ": " $$0); \
+      while ((rc = (getline line < ($$0 ".log"))) != 0) \
+      { \
+        if (rc < 0) \
+          fatal("failed to read from " $$0 ".log"); \
+        print line; \
+      }; \
+      printf "\n"; \
+    }; \
+  close ($$0 ".trs"); \
+  close ($$0 ".log"); \
+}'
+# Restructured Text title.
+am__rst_title = { sed 's/.*/   &   /;h;s/./=/g;p;x;s/ *$$//;p;g' && echo; }
+# Solaris 10 'make', and several other traditional 'make' implementations,
+# pass "-e" to $(SHELL), and POSIX 2008 even requires this.  Work around it
+# by disabling -e (using the XSI extension "set +e") if it's set.
+am__sh_e_setup = case $$- in *e*) set +e;; esac
+# Default flags passed to test drivers.
+am__common_driver_flags = \
+  --color-tests "$$am__color_tests" \
+  --enable-hard-errors "$$am__enable_hard_errors" \
+  --expect-failure "$$am__expect_failure"
+# To be inserted before the command running the test.  Creates the
+# directory for the log if needed.  Stores in $dir the directory
+# containing $f, in $tst the test, in $log the log.  Executes the
+# developer- defined test setup AM_TESTS_ENVIRONMENT (if any), and
+# passes TESTS_ENVIRONMENT.  Set up options for the wrapper that
+# will run the test scripts (or their associated LOG_COMPILER, if
+# thy have one).
+am__check_pre = \
+$(am__sh_e_setup);                                     \
+$(am__vpath_adj_setup) $(am__vpath_adj)                        \
+$(am__tty_colors);                                     \
+srcdir=$(srcdir); export srcdir;                       \
+case "$@" in                                           \
+  */*) am__odir=`echo "./$@" | sed 's|/[^/]*$$||'`;;   \
+    *) am__odir=.;;                                    \
+esac;                                                  \
+test "x$$am__odir" = x"." || test -d "$$am__odir"      \
+  || $(MKDIR_P) "$$am__odir" || exit $$?;              \
+if test -f "./$$f"; then dir=./;                       \
+elif test -f "$$f"; then dir=;                         \
+else dir="$(srcdir)/"; fi;                             \
+tst=$$dir$$f; log='$@';                                \
+if test -n '$(DISABLE_HARD_ERRORS)'; then              \
+  am__enable_hard_errors=no;                           \
+else                                                   \
+  am__enable_hard_errors=yes;                          \
+fi;                                                    \
+case " $(XFAIL_TESTS) " in                             \
+  *[\ \        ]$$f[\ \        ]* | *[\ \      ]$$dir$$f[\ \   ]*) \
+    am__expect_failure=yes;;                           \
+  *)                                                   \
+    am__expect_failure=no;;                            \
+esac;                                                  \
+$(AM_TESTS_ENVIRONMENT) $(TESTS_ENVIRONMENT)
+# A shell command to get the names of the tests scripts with any registered
+# extension removed (i.e., equivalently, the names of the test logs, with
+# the '.log' extension removed).  The result is saved in the shell variable
+# '$bases'.  This honors runtime overriding of TESTS and TEST_LOGS.  Sadly,
+# we cannot use something simpler, involving e.g., "$(TEST_LOGS:.log=)",
+# since that might cause problem with VPATH rewrites for suffix-less tests.
+# See also 'test-harness-vpath-rewrite.sh' and 'test-trs-basic.sh'.
+am__set_TESTS_bases = \
+  bases='$(TEST_LOGS)'; \
+  bases=`for i in $$bases; do echo $$i; done | sed 's/\.log$$//'`; \
+  bases=`echo $$bases`
+RECHECK_LOGS = $(TEST_LOGS)
+AM_RECURSIVE_TARGETS = check recheck
+TEST_SUITE_LOG = test-suite.log
+TEST_EXTENSIONS = @EXEEXT@ .test
+LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+LOG_COMPILE = $(LOG_COMPILER) $(AM_LOG_FLAGS) $(LOG_FLAGS)
+am__set_b = \
+  case '$@' in \
+    */*) \
+      case '$*' in \
+        */*) b='$*';; \
+          *) b=`echo '$@' | sed 's/\.log$$//'`; \
+       esac;; \
+    *) \
+      b='$*';; \
+  esac
+am__test_logs1 = $(TESTS:=.log)
+am__test_logs2 = $(am__test_logs1:@EXEEXT@.log=.log)
+TEST_LOGS = $(am__test_logs2:.test.log=.log)
+TEST_LOG_DRIVER = $(SHELL) $(top_srcdir)/build-aux/test-driver
+TEST_LOG_COMPILE = $(TEST_LOG_COMPILER) $(AM_TEST_LOG_FLAGS) \
+       $(TEST_LOG_FLAGS)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -251,6 +471,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -270,9 +491,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -544,6 +768,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -883,6 +1108,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1069,6 +1295,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1079,6 +1306,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1209,6 +1437,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1303,6 +1532,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1403,7 +1633,7 @@ all: $(BUILT_SOURCES)
        $(MAKE) $(AM_MAKEFLAGS) all-am
 
 .SUFFIXES:
-.SUFFIXES: .cc .ll .o .obj
+.SUFFIXES: .cc .ll .log .o .obj .test .test$(EXEEXT) .trs
 $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
        @for dep in $?; do \
          case '$(am__configure_deps)' in \
@@ -1413,9 +1643,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits examples/calc++/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu examples/calc++/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits examples/calc++/Makefile
+         $(AUTOMAKE) --gnu examples/calc++/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1516,26 +1746,15 @@ calc++-scanner.cc: $(srcdir)/calc++-scanner.ll
        $(am__skiplex) \
        $(SHELL) $(YLWRAP) `test -f '$(srcdir)/calc++-scanner.ll' || echo '$(srcdir)/'`$(srcdir)/calc++-scanner.ll $(LEX_OUTPUT_ROOT).c calc++-scanner.cc -- $(LEX) $(AM_LFLAGS) $(LFLAGS)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1547,15 +1766,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1564,9 +1779,10 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
        case "$(srcdir)" in \
          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
          *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1582,98 +1798,168 @@ cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
 distclean-tags:
        -rm -f TAGS ID GTAGS GRTAGS GSYMS GPATH tags
 
-check-TESTS: $(TESTS)
-       @failed=0; all=0; xfail=0; xpass=0; skip=0; \
-       srcdir=$(srcdir); export srcdir; \
-       list=' $(TESTS) '; \
-       $(am__tty_colors); \
-       if test -n "$$list"; then \
-         for tst in $$list; do \
-           if test -f ./$$tst; then dir=./; \
-           elif test -f $$tst; then dir=; \
-           else dir="$(srcdir)/"; fi; \
-           if $(TESTS_ENVIRONMENT) $${dir}$$tst $(AM_TESTS_FD_REDIRECT); then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xpass=`expr $$xpass + 1`; \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=XPASS; \
-             ;; \
-             *) \
-               col=$$grn; res=PASS; \
-             ;; \
-             esac; \
-           elif test $$? -ne 77; then \
-             all=`expr $$all + 1`; \
-             case " $(XFAIL_TESTS) " in \
-             *[\ \     ]$$tst[\ \      ]*) \
-               xfail=`expr $$xfail + 1`; \
-               col=$$lgn; res=XFAIL; \
-             ;; \
-             *) \
-               failed=`expr $$failed + 1`; \
-               col=$$red; res=FAIL; \
-             ;; \
-             esac; \
-           else \
-             skip=`expr $$skip + 1`; \
-             col=$$blu; res=SKIP; \
-           fi; \
-           echo "$${col}$$res$${std}: $$tst"; \
-         done; \
-         if test "$$all" -eq 1; then \
-           tests="test"; \
-           All=""; \
-         else \
-           tests="tests"; \
-           All="All "; \
+# Recover from deleted '.trs' file; this should ensure that
+# "rm -f foo.log; make foo.trs" re-run 'foo.test', and re-create
+# both 'foo.log' and 'foo.trs'.  Break the recipe in two subshells
+# to avoid problems with "make -n".
+.log.trs:
+       rm -f $< $@
+       $(MAKE) $(AM_MAKEFLAGS) $<
+
+# Leading 'am--fnord' is there to ensure the list of targets does not
+# exand to empty, as could happen e.g. with make check TESTS=''.
+am--fnord $(TEST_LOGS) $(TEST_LOGS:.log=.trs): $(am__force_recheck)
+am--force-recheck:
+       @:
+
+$(TEST_SUITE_LOG): $(TEST_LOGS)
+       @$(am__set_TESTS_bases); \
+       am__f_ok () { test -f "$$1" && test -r "$$1"; }; \
+       redo_bases=`for i in $$bases; do \
+                     am__f_ok $$i.trs && am__f_ok $$i.log || echo $$i; \
+                   done`; \
+       if test -n "$$redo_bases"; then \
+         redo_logs=`for i in $$redo_bases; do echo $$i.log; done`; \
+         redo_results=`for i in $$redo_bases; do echo $$i.trs; done`; \
+         if $(am__make_dryrun); then :; else \
+           rm -f $$redo_logs && rm -f $$redo_results || exit 1; \
          fi; \
-         if test "$$failed" -eq 0; then \
-           if test "$$xfail" -eq 0; then \
-             banner="$$All$$all $$tests passed"; \
-           else \
-             if test "$$xfail" -eq 1; then failures=failure; else failures=failures; fi; \
-             banner="$$All$$all $$tests behaved as expected ($$xfail expected $$failures)"; \
-           fi; \
-         else \
-           if test "$$xpass" -eq 0; then \
-             banner="$$failed of $$all $$tests failed"; \
+       fi; \
+       if test -n "$$am__remaking_logs"; then \
+         echo "fatal: making $(TEST_SUITE_LOG): possible infinite" \
+              "recursion detected" >&2; \
+       else \
+         am__remaking_logs=yes $(MAKE) $(AM_MAKEFLAGS) $$redo_logs; \
+       fi; \
+       if $(am__make_dryrun); then :; else \
+         st=0;  \
+         errmsg="fatal: making $(TEST_SUITE_LOG): failed to create"; \
+         for i in $$redo_bases; do \
+           test -f $$i.trs && test -r $$i.trs \
+             || { echo "$$errmsg $$i.trs" >&2; st=1; }; \
+           test -f $$i.log && test -r $$i.log \
+             || { echo "$$errmsg $$i.log" >&2; st=1; }; \
+         done; \
+         test $$st -eq 0 || exit 1; \
+       fi
+       @$(am__sh_e_setup); $(am__tty_colors); $(am__set_TESTS_bases); \
+       ws='[   ]'; \
+       results=`for b in $$bases; do echo $$b.trs; done`; \
+       test -n "$$results" || results=/dev/null; \
+       all=`  grep "^$$ws*:test-result:"           $$results | wc -l`; \
+       pass=` grep "^$$ws*:test-result:$$ws*PASS"  $$results | wc -l`; \
+       fail=` grep "^$$ws*:test-result:$$ws*FAIL"  $$results | wc -l`; \
+       skip=` grep "^$$ws*:test-result:$$ws*SKIP"  $$results | wc -l`; \
+       xfail=`grep "^$$ws*:test-result:$$ws*XFAIL" $$results | wc -l`; \
+       xpass=`grep "^$$ws*:test-result:$$ws*XPASS" $$results | wc -l`; \
+       error=`grep "^$$ws*:test-result:$$ws*ERROR" $$results | wc -l`; \
+       if test `expr $$fail + $$xpass + $$error` -eq 0; then \
+         success=true; \
+       else \
+         success=false; \
+       fi; \
+       br='==================='; br=$$br$$br$$br$$br; \
+       result_count () \
+       { \
+           if test x"$$1" = x"--maybe-color"; then \
+             maybe_colorize=yes; \
+           elif test x"$$1" = x"--no-color"; then \
+             maybe_colorize=no; \
            else \
-             if test "$$xpass" -eq 1; then passes=pass; else passes=passes; fi; \
-             banner="$$failed of $$all $$tests did not behave as expected ($$xpass unexpected $$passes)"; \
+             echo "$@: invalid 'result_count' usage" >&2; exit 4; \
            fi; \
-         fi; \
-         dashes="$$banner"; \
-         skipped=""; \
-         if test "$$skip" -ne 0; then \
-           if test "$$skip" -eq 1; then \
-             skipped="($$skip test was not run)"; \
+           shift; \
+           desc=$$1 count=$$2; \
+           if test $$maybe_colorize = yes && test $$count -gt 0; then \
+             color_start=$$3 color_end=$$std; \
            else \
-             skipped="($$skip tests were not run)"; \
+             color_start= color_end=; \
            fi; \
-           test `echo "$$skipped" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$skipped"; \
-         fi; \
-         report=""; \
-         if test "$$failed" -ne 0 && test -n "$(PACKAGE_BUGREPORT)"; then \
-           report="Please report to $(PACKAGE_BUGREPORT)"; \
-           test `echo "$$report" | wc -c` -le `echo "$$banner" | wc -c` || \
-             dashes="$$report"; \
-         fi; \
-         dashes=`echo "$$dashes" | sed s/./=/g`; \
-         if test "$$failed" -eq 0; then \
-           col="$$grn"; \
-         else \
-           col="$$red"; \
-         fi; \
-         echo "$${col}$$dashes$${std}"; \
-         echo "$${col}$$banner$${std}"; \
-         test -z "$$skipped" || echo "$${col}$$skipped$${std}"; \
-         test -z "$$report" || echo "$${col}$$report$${std}"; \
-         echo "$${col}$$dashes$${std}"; \
-         test "$$failed" -eq 0; \
-       else :; fi
+           echo "$${color_start}# $$desc $$count$${color_end}"; \
+       }; \
+       create_testsuite_report () \
+       { \
+         result_count $$1 "TOTAL:" $$all   "$$brg"; \
+         result_count $$1 "PASS: " $$pass  "$$grn"; \
+         result_count $$1 "SKIP: " $$skip  "$$blu"; \
+         result_count $$1 "XFAIL:" $$xfail "$$lgn"; \
+         result_count $$1 "FAIL: " $$fail  "$$red"; \
+         result_count $$1 "XPASS:" $$xpass "$$red"; \
+         result_count $$1 "ERROR:" $$error "$$mgn"; \
+       }; \
+       {                                                               \
+         echo "$(PACKAGE_STRING): $(subdir)/$(TEST_SUITE_LOG)" |       \
+           $(am__rst_title);                                           \
+         create_testsuite_report --no-color;                           \
+         echo;                                                         \
+         echo ".. contents:: :depth: 2";                               \
+         echo;                                                         \
+         for b in $$bases; do echo $$b; done                           \
+           | $(am__create_global_log);                                 \
+       } >$(TEST_SUITE_LOG).tmp || exit 1;                             \
+       mv $(TEST_SUITE_LOG).tmp $(TEST_SUITE_LOG);                     \
+       if $$success; then                                              \
+         col="$$grn";                                                  \
+        else                                                           \
+         col="$$red";                                                  \
+         test x"$$VERBOSE" = x || cat $(TEST_SUITE_LOG);               \
+       fi;                                                             \
+       echo "$${col}$$br$${std}";                                      \
+       echo "$${col}Testsuite summary for $(PACKAGE_STRING)$${std}";   \
+       echo "$${col}$$br$${std}";                                      \
+       create_testsuite_report --maybe-color;                          \
+       echo "$$col$$br$$std";                                          \
+       if $$success; then :; else                                      \
+         echo "$${col}See $(subdir)/$(TEST_SUITE_LOG)$${std}";         \
+         if test -n "$(PACKAGE_BUGREPORT)"; then                       \
+           echo "$${col}Please report to $(PACKAGE_BUGREPORT)$${std}"; \
+         fi;                                                           \
+         echo "$$col$$br$$std";                                        \
+       fi;                                                             \
+       $$success || exit 1
+
+check-TESTS:
+       @list='$(RECHECK_LOGS)';           test -z "$$list" || rm -f $$list
+       @list='$(RECHECK_LOGS:.log=.trs)'; test -z "$$list" || rm -f $$list
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       trs_list=`for i in $$bases; do echo $$i.trs; done`; \
+       log_list=`echo $$log_list`; trs_list=`echo $$trs_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) TEST_LOGS="$$log_list"; \
+       exit $$?;
+recheck: all $(check_PROGRAMS)
+       @test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
+       @set +e; $(am__set_TESTS_bases); \
+       bases=`for i in $$bases; do echo $$i; done \
+                | $(am__list_recheck_tests)` || exit 1; \
+       log_list=`for i in $$bases; do echo $$i.log; done`; \
+       log_list=`echo $$log_list`; \
+       $(MAKE) $(AM_MAKEFLAGS) $(TEST_SUITE_LOG) \
+               am__force_recheck=am--force-recheck \
+               TEST_LOGS="$$log_list"; \
+       exit $$?
+test.log: test
+       @p='test'; \
+       b='test'; \
+       $(am__check_pre) $(LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_LOG_DRIVER_FLAGS) $(LOG_DRIVER_FLAGS) -- $(LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+.test.log:
+       @p='$<'; \
+       $(am__set_b); \
+       $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+       --log-file $$b.log --trs-file $$b.trs \
+       $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+       "$$tst" $(AM_TESTS_FD_REDIRECT)
+@am__EXEEXT_TRUE@.test$(EXEEXT).log:
+@am__EXEEXT_TRUE@      @p='$<'; \
+@am__EXEEXT_TRUE@      $(am__set_b); \
+@am__EXEEXT_TRUE@      $(am__check_pre) $(TEST_LOG_DRIVER) --test-name "$$f" \
+@am__EXEEXT_TRUE@      --log-file $$b.log --trs-file $$b.trs \
+@am__EXEEXT_TRUE@      $(am__common_driver_flags) $(AM_TEST_LOG_DRIVER_FLAGS) $(TEST_LOG_DRIVER_FLAGS) -- $(TEST_LOG_COMPILE) \
+@am__EXEEXT_TRUE@      "$$tst" $(AM_TESTS_FD_REDIRECT)
 
 distdir: $(DISTFILES)
        @srcdirstrip=`echo "$(srcdir)" | sed 's/[].[^$$\\*]/\\\\&/g'`; \
@@ -1733,6 +2019,9 @@ install-strip:
            "INSTALL_PROGRAM_ENV=STRIPPROG='$(STRIP)'" install; \
        fi
 mostlyclean-generic:
+       -test -z "$(TEST_LOGS)" || rm -f $(TEST_LOGS)
+       -test -z "$(TEST_LOGS:.log=.trs)" || rm -f $(TEST_LOGS:.log=.trs)
+       -test -z "$(TEST_SUITE_LOG)" || rm -f $(TEST_SUITE_LOG)
 
 clean-generic:
        -test -z "$(CLEANFILES)" || rm -f $(CLEANFILES)
@@ -1818,18 +2107,18 @@ uninstall-am:
 
 .MAKE: all check check-am install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-TESTS check-am clean \
-       clean-checkPROGRAMS clean-generic cscopelist ctags distclean \
-       distclean-compile distclean-generic distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-html install-html-am \
-       install-info install-info-am install-man install-pdf \
-       install-pdf-am install-ps install-ps-am install-strip \
-       installcheck installcheck-am installdirs maintainer-clean \
-       maintainer-clean-generic mostlyclean mostlyclean-compile \
-       mostlyclean-generic pdf pdf-am ps ps-am tags uninstall \
-       uninstall-am
+.PHONY: CTAGS GTAGS TAGS all all-am check check-TESTS check-am clean \
+       clean-checkPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+       distclean distclean-compile distclean-generic distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installdirs \
+       maintainer-clean maintainer-clean-generic mostlyclean \
+       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
+       recheck tags tags-am uninstall uninstall-am
 
 
 $(BISON): $(BISON_IN)
index 3889663..4b40e93 100644 (file)
@@ -1,4 +1,4 @@
-#line 9574 "../../doc/bison.texi"
+#line 10146 "../../doc/bison.texi"
 #include "calc++-driver.hh"
 #include "calc++-parser.hh"
 
index 5dd79c1..e0ac6ee 100644 (file)
@@ -1,10 +1,10 @@
-#line 9485 "../../doc/bison.texi"
+#line 10057 "../../doc/bison.texi"
 #ifndef CALCXX_DRIVER_HH
 # define CALCXX_DRIVER_HH
 # include <string>
 # include <map>
 # include "calc++-parser.hh"
-#line 9501 "../../doc/bison.texi"
+#line 10073 "../../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 9517 "../../doc/bison.texi"
+#line 10089 "../../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 9535 "../../doc/bison.texi"
+#line 10107 "../../doc/bison.texi"
   // Handling the scanner.
   void scan_begin ();
   void scan_end ();
   bool trace_scanning;
-#line 9546 "../../doc/bison.texi"
+#line 10118 "../../doc/bison.texi"
   // Run the parser.  Return 0 on success.
   int parse (const std::string& f);
   std::string file;
   bool trace_parsing;
-#line 9560 "../../doc/bison.texi"
+#line 10132 "../../doc/bison.texi"
   // Error handling.
   void error (const yy::location& l, const std::string& m);
   void error (const std::string& m);
index e5edc70..7e8a108 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
+/* A Bison parser, made by GNU Bison 2.7.11-68f91.  */
 
 /* Skeleton implementation for Bison LALR(1) parsers in C++
    
-      Copyright (C) 2002-2012 Free Software Foundation, Inc.
+      Copyright (C) 2002-2013 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
 
 /* First part of user declarations.  */
 
-
-/* Line 278 of lalr1.cc  */
-#line 39 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 283 of lalr1.cc  */
+#line 38 "../../../../examples/calc++/calc++-parser.cc"
 
 
 #include "calc++-parser.hh"
 
 /* User implementation prologue.  */
 
-
-/* Line 284 of lalr1.cc  */
-#line 48 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 289 of lalr1.cc  */
+#line 46 "../../../../examples/calc++/calc++-parser.cc"
 /* Unqualified %code blocks.  */
-
-/* Line 285 of lalr1.cc  */
-#line 9708 "../../doc/bison.texi"
+/* Line 290 of lalr1.cc  */
+#line 10280 "../../doc/bison.texi"
 
 # include "calc++-driver.hh"
 
 
-
-/* Line 285 of lalr1.cc  */
-#line 59 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 290 of lalr1.cc  */
+#line 55 "../../../../examples/calc++/calc++-parser.cc"
 
 
 # ifndef YY_NULL
@@ -133,9 +129,9 @@ do {                                        \
 #else /* !YYDEBUG */
 
 # define YYCDEBUG if (false) std::cerr
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)
-# define YY_REDUCE_PRINT(Rule)
-# define YY_STACK_PRINT()
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location) YYUSE(Type)
+# define YY_REDUCE_PRINT(Rule)        static_cast<void>(0)
+# define YY_STACK_PRINT()             static_cast<void>(0)
 
 #endif /* !YYDEBUG */
 
@@ -149,9 +145,8 @@ do {                                        \
 
 
 namespace yy {
-
-/* Line 352 of lalr1.cc  */
-#line 155 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 357 of lalr1.cc  */
+#line 150 "../../../../examples/calc++/calc++-parser.cc"
 
   /* Return YYSTR after stripping away unnecessary quotes and
      backslashes, so that it's suitable for yyerror.  The heuristic is
@@ -221,37 +216,32 @@ namespace yy {
     std::ostream& yyoutput = yyo;
     YYUSE (yyoutput);
     switch (yytype)
-      {
-        case 4: /* "identifier" */
-
-/* Line 422 of lalr1.cc  */
-#line 9737 "../../doc/bison.texi"
-       { yyoutput << *((*yyvaluep).sval); };
-
-/* Line 422 of lalr1.cc  */
-#line 233 "../../../../examples/calc++/calc++-parser.cc"
-       break;
+    {
+      case 4: /* "identifier" */
+/* Line 425 of lalr1.cc  */
+#line 10309 "../../doc/bison.texi"
+        { yyoutput << *((*yyvaluep).sval); };
+/* Line 425 of lalr1.cc  */
+#line 226 "../../../../examples/calc++/calc++-parser.cc"
+        break;
       case 5: /* "number" */
-
-/* Line 422 of lalr1.cc  */
-#line 9740 "../../doc/bison.texi"
-       { yyoutput << ((*yyvaluep).ival); };
-
-/* Line 422 of lalr1.cc  */
-#line 242 "../../../../examples/calc++/calc++-parser.cc"
-       break;
+/* Line 425 of lalr1.cc  */
+#line 10312 "../../doc/bison.texi"
+        { yyoutput << ((*yyvaluep).ival); };
+/* Line 425 of lalr1.cc  */
+#line 233 "../../../../examples/calc++/calc++-parser.cc"
+        break;
       case 14: /* exp */
-
-/* Line 422 of lalr1.cc  */
-#line 9740 "../../doc/bison.texi"
-       { yyoutput << ((*yyvaluep).ival); };
-
-/* Line 422 of lalr1.cc  */
-#line 251 "../../../../examples/calc++/calc++-parser.cc"
-       break;
-       default:
-         break;
-      }
+/* Line 425 of lalr1.cc  */
+#line 10312 "../../doc/bison.texi"
+        { yyoutput << ((*yyvaluep).ival); };
+/* Line 425 of lalr1.cc  */
+#line 240 "../../../../examples/calc++/calc++-parser.cc"
+        break;
+
+      default:
+        break;
+    }
   }
 
 
@@ -275,23 +265,22 @@ namespace yy {
     YYUSE (yymsg);
     YYUSE (yyvaluep);
 
-    YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
+    if (yymsg)
+      YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
     switch (yytype)
-      {
-        case 4: /* "identifier" */
-
-/* Line 453 of lalr1.cc  */
-#line 9738 "../../doc/bison.texi"
-       { delete ((*yyvaluep).sval); };
-
-/* Line 453 of lalr1.cc  */
-#line 290 "../../../../examples/calc++/calc++-parser.cc"
-       break;
-
-       default:
-         break;
-      }
+    {
+      case 4: /* "identifier" */
+/* Line 452 of lalr1.cc  */
+#line 10310 "../../doc/bison.texi"
+        { delete ((*yyvaluep).sval); };
+/* Line 452 of lalr1.cc  */
+#line 279 "../../../../examples/calc++/calc++-parser.cc"
+        break;
+
+      default:
+        break;
+    }
   }
 
   void
@@ -348,17 +337,18 @@ namespace yy {
     int yychar = yyempty_;
     int yytoken = 0;
 
-    /* State.  */
+    // State.
     int yyn;
     int yylen = 0;
     int yystate = 0;
 
-    /* Error handling.  */
+    // Error handling.
     int yynerrs_ = 0;
     int yyerrstatus_ = 0;
 
     /// Semantic value of the lookahead.
-    semantic_type yylval;
+    static semantic_type yyval_default;
+    semantic_type yylval = yyval_default;
     /// Location of the lookahead.
     location_type yylloc;
     /// The locations where the error started and ended.
@@ -371,28 +361,30 @@ namespace yy {
 
     int yyresult;
 
+    // FIXME: This shoud be completely indented.  It is not yet to
+    // avoid gratuitous conflicts when merging into the master branch.
+    try
+      {
     YYCDEBUG << "Starting parse" << std::endl;
 
 
 /* User initialization code.  */
-
-/* Line 538 of lalr1.cc  */
-#line 9670 "../../doc/bison.texi"
+/* Line 539 of lalr1.cc  */
+#line 10242 "../../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  */
-#line 388 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 539 of lalr1.cc  */
+#line 380 "../../../../examples/calc++/calc++-parser.cc"
 
     /* Initialize the stacks.  The initial state will be pushed in
        yynewstate, since the latter expects the semantical and the
        location values to have been already stored, initialize these
        stacks with a primary value.  */
-    yystate_stack_ = state_stack_type (0);
-    yysemantic_stack_ = semantic_stack_type (0);
-    yylocation_stack_ = location_stack_type (0);
+    yystate_stack_.clear ();
+    yysemantic_stack_.clear ();
+    yylocation_stack_.clear ();
     yysemantic_stack_.push (yylval);
     yylocation_stack_.push (yylloc);
 
@@ -418,11 +410,10 @@ namespace yy {
     /* Read a lookahead token.  */
     if (yychar == yyempty_)
       {
-       YYCDEBUG << "Reading a token: ";
-       yychar = yylex (&yylval, &yylloc, driver);
+        YYCDEBUG << "Reading a token: ";
+        yychar = yylex (&yylval, &yylloc, driver);
       }
 
-
     /* Convert token to internal form.  */
     if (yychar <= yyeof_)
       {
@@ -493,90 +484,83 @@ namespace yy {
     else
       yyval = yysemantic_stack_[0];
 
+    // Compute the default @$.
     {
       slice<location_type, location_stack_type> slice (yylocation_stack_, yylen);
       YYLLOC_DEFAULT (yyloc, slice, yylen);
     }
+
+    // Perform the reduction.
     YY_REDUCE_PRINT (yyn);
     switch (yyn)
       {
-         case 2:
-
-/* Line 661 of lalr1.cc  */
-#line 9750 "../../doc/bison.texi"
+          case 2:
+/* Line 664 of lalr1.cc  */
+#line 10322 "../../doc/bison.texi"
     { driver.result = (yysemantic_stack_[(2) - (2)].ival); }
     break;
 
   case 3:
-
-/* Line 661 of lalr1.cc  */
-#line 9753 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10325 "../../doc/bison.texi"
     {}
     break;
 
   case 4:
-
-/* Line 661 of lalr1.cc  */
-#line 9754 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10326 "../../doc/bison.texi"
     {}
     break;
 
   case 5:
-
-/* Line 661 of lalr1.cc  */
-#line 9758 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10330 "../../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 661 of lalr1.cc  */
-#line 9762 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10334 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) + (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 7:
-
-/* Line 661 of lalr1.cc  */
-#line 9763 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10335 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) - (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 8:
-
-/* Line 661 of lalr1.cc  */
-#line 9764 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10336 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) * (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 9:
-
-/* Line 661 of lalr1.cc  */
-#line 9765 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10337 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(3) - (1)].ival) / (yysemantic_stack_[(3) - (3)].ival); }
     break;
 
   case 10:
-
-/* Line 661 of lalr1.cc  */
-#line 9766 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10338 "../../doc/bison.texi"
     { (yyval.ival) = driver.variables[*(yysemantic_stack_[(1) - (1)].sval)]; delete (yysemantic_stack_[(1) - (1)].sval); }
     break;
 
   case 11:
-
-/* Line 661 of lalr1.cc  */
-#line 9767 "../../doc/bison.texi"
+/* Line 664 of lalr1.cc  */
+#line 10339 "../../doc/bison.texi"
     { (yyval.ival) = (yysemantic_stack_[(1) - (1)].ival); }
     break;
 
 
-
-/* Line 661 of lalr1.cc  */
-#line 577 "../../../../examples/calc++/calc++-parser.cc"
-       default:
-          break;
+/* Line 664 of lalr1.cc  */
+#line 560 "../../../../examples/calc++/calc++-parser.cc"
+      default:
+        break;
       }
+
     /* User semantic actions sometimes alter yychar, and that requires
        that yytoken be updated with the new translation.  We take the
        approach of translating immediately before every use of yytoken.
@@ -627,20 +611,19 @@ namespace yy {
     yyerror_range[1] = yylloc;
     if (yyerrstatus_ == 3)
       {
-       /* If just tried and failed to reuse lookahead token after an
-        error, discard it.  */
-
-       if (yychar <= yyeof_)
-         {
-         /* Return failure if at end of input.  */
-         if (yychar == yyeof_)
-           YYABORT;
-         }
-       else
-         {
-           yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
-           yychar = yyempty_;
-         }
+        /* If just tried and failed to reuse lookahead token after an
+           error, discard it.  */
+        if (yychar <= yyeof_)
+          {
+            /* Return failure if at end of input.  */
+            if (yychar == yyeof_)
+              YYABORT;
+          }
+        else
+          {
+            yydestruct_ ("Error: discarding", yytoken, &yylval, &yylloc);
+            yychar = yyempty_;
+          }
       }
 
     /* Else will try to reuse lookahead token after shifting the error
@@ -689,7 +672,7 @@ namespace yy {
 
        /* Pop the current state because it cannot handle the error token.  */
        if (yystate_stack_.height () == 1)
-       YYABORT;
+         YYABORT;
 
        yyerror_range[1] = yylocation_stack_[0];
        yydestruct_ ("Error: popping",
@@ -737,16 +720,42 @@ namespace yy {
     /* Do not reclaim the symbols of the rule which action triggered
        this YYABORT or YYACCEPT.  */
     yypop_ (yylen);
-    while (yystate_stack_.height () != 1)
+    while (1 < yystate_stack_.height ())
       {
-       yydestruct_ ("Cleanup: popping",
-                  yystos_[yystate_stack_[0]],
-                  &yysemantic_stack_[0],
-                  &yylocation_stack_[0]);
-       yypop_ ();
+        yydestruct_ ("Cleanup: popping",
+                     yystos_[yystate_stack_[0]],
+                     &yysemantic_stack_[0],
+                     &yylocation_stack_[0]);
+        yypop_ ();
       }
 
     return yyresult;
+    }
+    catch (...)
+      {
+        YYCDEBUG << "Exception caught: cleaning lookahead and stack"
+                 << std::endl;
+        // Do not try to display the values of the reclaimed symbols,
+        // as their printer might throw an exception.
+        if (yychar != yyempty_)
+          {
+            /* Make sure we have latest lookahead translation.  See
+               comments at user semantic actions for why this is
+               necessary.  */
+            yytoken = yytranslate_ (yychar);
+            yydestruct_ (YY_NULL, yytoken, &yylval, &yylloc);
+          }
+
+        while (1 < yystate_stack_.height ())
+          {
+            yydestruct_ (YY_NULL,
+                         yystos_[yystate_stack_[0]],
+                         &yysemantic_stack_[0],
+                         &yylocation_stack_[0]);
+            yypop_ ();
+          }
+        throw;
+      }
   }
 
   // Generate an error message.
@@ -968,8 +977,8 @@ namespace yy {
   const unsigned short int
   calcxx_parser::yyrline_[] =
   {
-         0,  9750,  9750,  9753,  9754,  9757,  9762,  9763,  9764,  9765,
-    9766,  9767
+         0, 10322, 10322, 10325, 10326, 10329, 10334, 10335, 10336, 10337,
+   10338, 10339
   };
 
   // Print the state stack on the debug stream.
@@ -1057,18 +1066,15 @@ namespace yy {
 
 
 } // yy
+/* Line 1135 of lalr1.cc  */
+#line 1071 "../../../../examples/calc++/calc++-parser.cc"
+/* Line 1136 of lalr1.cc  */
+#line 10340 "../../doc/bison.texi"
 
-/* Line 1106 of lalr1.cc  */
-#line 1063 "../../../../examples/calc++/calc++-parser.cc"
-
-/* Line 1107 of lalr1.cc  */
-#line 9768 "../../doc/bison.texi"
-
-#line 9777 "../../doc/bison.texi"
+#line 10349 "../../doc/bison.texi"
 void
 yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
                           const std::string& m)
 {
   driver.error (l, m);
 }
-
index b44eda3..9a93a80 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
+/* A Bison parser, made by GNU Bison 2.7.11-68f91.  */
 
 /* Skeleton interface for Bison LALR(1) parsers in C++
    
-      Copyright (C) 2002-2012 Free Software Foundation, Inc.
+      Copyright (C) 2002-2013 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
 
 /* C++ LALR(1) parser skeleton written by Akim Demaille.  */
 
-#ifndef YY_EXAMPLES_CALC_CALC_PARSER_HH
-# define YY_EXAMPLES_CALC_CALC_PARSER_HH
+#ifndef YY_YY_EXAMPLES_CALC_CALC_PARSER_HH_INCLUDED
+# define YY_YY_EXAMPLES_CALC_CALC_PARSER_HH_INCLUDED
 
 /* "%code requires" blocks.  */
-
-/* Line 36 of lalr1.cc  */
-#line 9642 "../../doc/bison.texi"
+/* Line 33 of lalr1.cc  */
+#line 10214 "../../doc/bison.texi"
 
 # include <string>
 class calcxx_driver;
 
 
-
-/* Line 36 of lalr1.cc  */
-#line 55 "../../../../examples/calc++/calc++-parser.hh"
+/* Line 33 of lalr1.cc  */
+#line 53 "../../../../examples/calc++/calc++-parser.hh"
 
 
 #include <string>
@@ -66,9 +64,8 @@ class calcxx_driver;
 
 
 namespace yy {
-
-/* Line 36 of lalr1.cc  */
-#line 72 "../../../../examples/calc++/calc++-parser.hh"
+/* Line 33 of lalr1.cc  */
+#line 69 "../../../../examples/calc++/calc++-parser.hh"
 
   /// A Bison parser.
   class calcxx_parser
@@ -78,17 +75,15 @@ namespace yy {
 #ifndef YYSTYPE
     union semantic_type
     {
-
-/* Line 36 of lalr1.cc  */
-#line 9695 "../../doc/bison.texi"
+/* Line 33 of lalr1.cc  */
+#line 10267 "../../doc/bison.texi"
 
   int          ival;
   std::string *sval;
 
 
-
-/* Line 36 of lalr1.cc  */
-#line 92 "../../../../examples/calc++/calc++-parser.hh"
+/* Line 33 of lalr1.cc  */
+#line 87 "../../../../examples/calc++/calc++-parser.hh"
     };
 #else
     typedef YYSTYPE semantic_type;
@@ -133,6 +128,10 @@ namespace yy {
 #endif
 
   private:
+    /// This class is not copyable.
+    calcxx_parser (const calcxx_parser&);
+    calcxx_parser& operator= (const calcxx_parser&);
+
     /// Report a syntax error.
     /// \param loc    where the syntax error is found.
     /// \param msg    a description of the syntax error.
@@ -250,6 +249,7 @@ namespace yy {
 
     /// \brief Reclaim the memory associated to a symbol.
     /// \param yymsg        Why this token is reclaimed.
+    ///                     If null, do not display the symbol, just free it.
     /// \param yytype       The symbol type.
     /// \param yyvaluep     Its semantic value.
     /// \param yylocationp  Its location.
@@ -279,10 +279,9 @@ namespace yy {
   };
 
 } // yy
-
-/* Line 36 of lalr1.cc  */
-#line 285 "../../../../examples/calc++/calc++-parser.hh"
+/* Line 33 of lalr1.cc  */
+#line 284 "../../../../examples/calc++/calc++-parser.hh"
 
 
 
-#endif /* !YY_EXAMPLES_CALC_CALC_PARSER_HH  */
+#endif /* !YY_YY_EXAMPLES_CALC_CALC_PARSER_HH_INCLUDED  */
index a97d500..be56713 100644 (file)
@@ -1,50 +1,50 @@
-#line 9624 "../../doc/bison.texi"
+#line 10196 "../../doc/bison.texi"
 %skeleton "lalr1.cc" /* -*- C++ -*- */
-%require "2.6.29-ca7b"
+%require "2.7.11-68f91"
 %defines
 %define parser_class_name "calcxx_parser"
-#line 9642 "../../doc/bison.texi"
+#line 10214 "../../doc/bison.texi"
 %code requires {
 # include <string>
 class calcxx_driver;
 }
-#line 9655 "../../doc/bison.texi"
+#line 10227 "../../doc/bison.texi"
 // The parsing context.
 %parse-param { calcxx_driver& driver }
 %lex-param   { calcxx_driver& driver }
-#line 9668 "../../doc/bison.texi"
+#line 10240 "../../doc/bison.texi"
 %locations
 %initial-action
 {
   // Initialize the initial location.
   @$.begin.filename = @$.end.filename = &driver.file;
 };
-#line 9683 "../../doc/bison.texi"
+#line 10255 "../../doc/bison.texi"
 %debug
 %error-verbose
-#line 9693 "../../doc/bison.texi"
+#line 10265 "../../doc/bison.texi"
 // Symbols.
 %union
 {
   int          ival;
   std::string *sval;
 };
-#line 9708 "../../doc/bison.texi"
+#line 10280 "../../doc/bison.texi"
 %code {
 # include "calc++-driver.hh"
 }
-#line 9723 "../../doc/bison.texi"
+#line 10295 "../../doc/bison.texi"
 %token        END      0 "end of file"
 %token        ASSIGN     ":="
 %token <sval> IDENTIFIER "identifier"
 %token <ival> NUMBER     "number"
 %type  <ival> exp
-#line 9737 "../../doc/bison.texi"
+#line 10309 "../../doc/bison.texi"
 %printer    { yyoutput << *$$; } "identifier"
 %destructor { delete $$; } "identifier"
 
 %printer    { yyoutput << $$; } <ival>
-#line 9748 "../../doc/bison.texi"
+#line 10320 "../../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 9777 "../../doc/bison.texi"
+#line 10349 "../../doc/bison.texi"
 void
 yy::calcxx_parser::error (const yy::calcxx_parser::location_type& l,
                           const std::string& m)
index 744b557..d87000f 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 36
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -532,7 +532,7 @@ int yy_flex_debug = 1;
 
 static yyconst flex_int16_t yy_rule_linenum[8] =
     {   0,
-       37,   38,   44,   45,   46,   54,   55
+       37,   38,   44,   46,   49,   60,   66
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -543,8 +543,8 @@ static yyconst flex_int16_t yy_rule_linenum[8] =
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "calc++-scanner.ll"
-#line 2 "calc++-scanner.ll"
+#line 1 "../../../../examples/calc++/calc++-scanner.ll"
+#line 2 "../../../../examples/calc++/calc++-scanner.ll"
 # include <cstdlib>
 # include <cerrno>
 # include <climits>
@@ -563,7 +563,7 @@ char *yytext;
    Unfortunately yyterminate by default returns 0, which is
    not of token_type.  */
 #define yyterminate() return token::END
-#line 30 "calc++-scanner.ll"
+#line 30 "../../../../examples/calc++/calc++-scanner.ll"
 # define YY_USER_ACTION  yylloc->columns (yyleng);
 #line 569 "calc++-scanner.cc"
 
@@ -805,7 +805,7 @@ YY_DECL
        register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 33 "calc++-scanner.ll"
+#line 33 "../../../../examples/calc++/calc++-scanner.ll"
 
 
   yylloc->step ();
@@ -922,13 +922,13 @@ do_action:        /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 37 "calc++-scanner.ll"
+#line 37 "../../../../examples/calc++/calc++-scanner.ll"
 yylloc->step ();
        YY_BREAK
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 38 "calc++-scanner.ll"
+#line 38 "../../../../examples/calc++/calc++-scanner.ll"
 yylloc->lines (yyleng); yylloc->step ();
        YY_BREAK
 
@@ -937,42 +937,45 @@ yylloc->lines (yyleng); yylloc->step ();
 /* Convert ints to the actual type of tokens.  */
 case 3:
 YY_RULE_SETUP
-#line 44 "calc++-scanner.ll"
+#line 44 "../../../../examples/calc++/calc++-scanner.ll"
 return yy::calcxx_parser::token_type (yytext[0]);
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 45 "calc++-scanner.ll"
+#line 46 "../../../../examples/calc++/calc++-scanner.ll"
 return token::ASSIGN;
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 46 "calc++-scanner.ll"
+#line 49 "../../../../examples/calc++/calc++-scanner.ll"
 {
-  errno = 0;
-  long n = strtol (yytext, NULL, 10);
-  if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
-    driver.error (*yylloc, "integer is out of range");
-  yylval->ival = n;
-  return token::NUMBER;
-}
+           errno = 0;
+           long n = strtol (yytext, NULL, 10);
+           if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
+             driver.error (*yylloc, "integer is out of range");
+           yylval->ival = n;
+           return token::NUMBER;
+         }
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 54 "calc++-scanner.ll"
-yylval->sval = new std::string (yytext); return token::IDENTIFIER;
+#line 60 "../../../../examples/calc++/calc++-scanner.ll"
+{
+           yylval->sval = new std::string (yytext);
+           return token::IDENTIFIER;
+         }
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 55 "calc++-scanner.ll"
+#line 66 "../../../../examples/calc++/calc++-scanner.ll"
 driver.error (*yylloc, "invalid character");
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 56 "calc++-scanner.ll"
+#line 67 "../../../../examples/calc++/calc++-scanner.ll"
 ECHO;
        YY_BREAK
-#line 976 "calc++-scanner.cc"
+#line 979 "calc++-scanner.cc"
 case YY_STATE_EOF(INITIAL):
        yyterminate();
 
@@ -2054,7 +2057,7 @@ void yyfree (void * ptr )
 
 /* %ok-for-header */
 
-#line 56 "calc++-scanner.ll"
+#line 67 "../../../../examples/calc++/calc++-scanner.ll"
 
 
 
index b5b88f9..05e7fea 100644 (file)
@@ -40,19 +40,30 @@ blank [ \t]
 %{
   typedef yy::calcxx_parser::token token;
 %}
-           /* Convert ints to the actual type of tokens.  */
-[-+*/]     return yy::calcxx_parser::token_type (yytext[0]);
-":="       return token::ASSIGN;
-{int}      {
-  errno = 0;
-  long n = strtol (yytext, NULL, 10);
-  if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
-    driver.error (*yylloc, "integer is out of range");
-  yylval->ival = n;
-  return token::NUMBER;
-}
-{id}       yylval->sval = new std::string (yytext); return token::IDENTIFIER;
-.          driver.error (*yylloc, "invalid character");
+         /* Convert ints to the actual type of tokens.  */
+[-+*/]   return yy::calcxx_parser::token_type (yytext[0]);
+
+":="     return token::ASSIGN;
+
+
+{int}    {
+           errno = 0;
+           long n = strtol (yytext, NULL, 10);
+           if (! (INT_MIN <= n && n <= INT_MAX && errno != ERANGE))
+             driver.error (*yylloc, "integer is out of range");
+           yylval->ival = n;
+           return token::NUMBER;
+         }
+
+
+
+{id}     {
+           yylval->sval = new std::string (yytext);
+           return token::IDENTIFIER;
+         }
+
+
+.        driver.error (*yylloc, "invalid character");
 %%
 
 
index fc3ee29..7b0f8fc 100644 (file)
@@ -1,4 +1,4 @@
-#line 9924 "../../doc/bison.texi"
+#line 10507 "../../doc/bison.texi"
 #include <iostream>
 #include "calc++-driver.hh"
 
index a5aa58a..830f47e 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
+/* A Bison parser, made by GNU Bison 2.7.11-68f91.  */
 
 /* Locations for Bison parsers in C++
    
-      Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
+      Copyright (C) 2002-2007, 2009-2013 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
  ** Define the yy::location class.
  */
 
-#ifndef YY_EXAMPLES_CALC_LOCATION_HH
-# define YY_EXAMPLES_CALC_LOCATION_HH
+#ifndef YY_YY_EXAMPLES_CALC_LOCATION_HH_INCLUDED
+# define YY_YY_EXAMPLES_CALC_LOCATION_HH_INCLUDED
 
-# include <iostream>
-# include <string>
 # include "position.hh"
 
 
 namespace yy {
-
 /* Line 166 of location.cc  */
-#line 50 "../../../../examples/calc++/location.hh"
+#line 47 "../../../../examples/calc++/location.hh"
 
   /// Abstract a location.
   class location
@@ -159,7 +156,9 @@ namespace yy {
    **
    ** Avoid duplicate information.
    */
-  inline std::ostream& operator<< (std::ostream& ostr, const location& loc)
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const location& loc)
   {
     position last = loc.end - 1;
     ostr << loc.begin;
@@ -176,8 +175,7 @@ namespace yy {
 
 
 } // yy
+/* Line 296 of location.cc  */
+#line 180 "../../../../examples/calc++/location.hh"
 
-/* Line 294 of location.cc  */
-#line 182 "../../../../examples/calc++/location.hh"
-
-#endif /* !YY_EXAMPLES_CALC_LOCATION_HH  */
+#endif /* !YY_YY_EXAMPLES_CALC_LOCATION_HH_INCLUDED  */
index 83db8b9..6bc8b21 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
+/* A Bison parser, made by GNU Bison 2.7.11-68f91.  */
 
 /* Positions for Bison parsers in C++
    
-      Copyright (C) 2002-2007, 2009-2012 Free Software Foundation, Inc.
+      Copyright (C) 2002-2007, 2009-2013 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
  ** Define the yy::position class.
  */
 
-#ifndef YY_EXAMPLES_CALC_POSITION_HH
-# define YY_EXAMPLES_CALC_POSITION_HH
+#ifndef YY_YY_EXAMPLES_CALC_POSITION_HH_INCLUDED
+# define YY_YY_EXAMPLES_CALC_POSITION_HH_INCLUDED
 
 # include <algorithm> // std::max
-# include <iosfwd>
+# include <iostream>
 # include <string>
 
 # ifndef YY_NULL
@@ -52,9 +52,8 @@
 
 
 namespace yy {
-
-/* Line 38 of location.cc  */
-#line 58 "../../../../examples/calc++/position.hh"
+/* Line 36 of location.cc  */
+#line 57 "../../../../examples/calc++/position.hh"
   /// Abstract a position.
   class position
   {
@@ -106,7 +105,7 @@ namespace yy {
   };
 
   /// Add and assign a position.
-  inline const position&
+  inline position&
   operator+= (position& res, const int width)
   {
     res.columns (width);
@@ -122,7 +121,7 @@ namespace yy {
   }
 
   /// Add and assign a position.
-  inline const position&
+  inline position&
   operator-= (position& res, const int width)
   {
     return res += -width;
@@ -157,8 +156,9 @@ namespace yy {
    ** \param ostr the destination output stream
    ** \param pos a reference to the position to redirect
    */
-  inline std::ostream&
-  operator<< (std::ostream& ostr, const position& pos)
+  template <typename YYChar>
+  inline std::basic_ostream<YYChar>&
+  operator<< (std::basic_ostream<YYChar>& ostr, const position& pos)
   {
     if (pos.filename)
       ostr << *pos.filename << ':';
@@ -167,7 +167,6 @@ namespace yy {
 
 
 } // yy
-
-/* Line 149 of location.cc  */
-#line 173 "../../../../examples/calc++/position.hh"
-#endif /* !YY_EXAMPLES_CALC_POSITION_HH  */
+/* Line 148 of location.cc  */
+#line 172 "../../../../examples/calc++/position.hh"
+#endif /* !YY_YY_EXAMPLES_CALC_POSITION_HH_INCLUDED  */
index f652574..fbd1304 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.29-ca7b.  */
+/* A Bison parser, made by GNU Bison 2.7.11-68f91.  */
 
 /* Stack handling for Bison parsers in C++
    
-      Copyright (C) 2002-2012 Free Software Foundation, Inc.
+      Copyright (C) 2002-2013 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
  ** Define the yy::stack class.
  */
 
-#ifndef YY_EXAMPLES_CALC_STACK_HH
-# define YY_EXAMPLES_CALC_STACK_HH
+#ifndef YY_YY_EXAMPLES_CALC_STACK_HH_INCLUDED
+# define YY_YY_EXAMPLES_CALC_STACK_HH_INCLUDED
 
 # include <deque>
 
 
 namespace yy {
-
-/* Line 37 of stack.hh  */
-#line 48 "../../../../examples/calc++/stack.hh"
+/* Line 34 of stack.hh  */
+#line 47 "../../../../examples/calc++/stack.hh"
   template <class T, class S = std::deque<T> >
   class stack
   {
@@ -90,6 +89,12 @@ namespace yy {
         seq_.pop_front ();
     }
 
+    void
+    clear ()
+    {
+      seq_.clear ();
+    }
+
     inline
     unsigned int
     height () const
@@ -101,6 +106,8 @@ namespace yy {
     inline const_iterator end () const { return seq_.rend (); }
 
   private:
+    stack (const stack&);
+    stack& operator= (const stack&);
     S seq_;
   };
 
@@ -128,8 +135,7 @@ namespace yy {
   };
 
 } // yy
+/* Line 124 of stack.hh  */
+#line 140 "../../../../examples/calc++/stack.hh"
 
-/* Line 119 of stack.hh  */
-#line 134 "../../../../examples/calc++/stack.hh"
-
-#endif /* !YY_EXAMPLES_CALC_STACK_HH  */
+#endif /* !YY_YY_EXAMPLES_CALC_STACK_HH_INCLUDED  */
index 8f4d419..6aa12eb 100755 (executable)
@@ -1,6 +1,6 @@
 #! /bin/sh
 
-# Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# Copyright (C) 2005-2013 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
index 01f6cf2..4a80217 100644 (file)
@@ -2,7 +2,7 @@
 
 # This file is part of GNU Bison
 
-# Copyright (C) 1992, 2000-2001, 2005-2006, 2009-2012 Free Software
+# Copyright (C) 1992, 2000-2001, 2005-2006, 2009-2013 Free Software
 # Foundation, Inc.
 #
 # This program is free software: you can redistribute it and/or modify
index 1abfb75..67bfeb9 100644 (file)
@@ -1,6 +1,6 @@
 # Make bison/lib.
 
-# Copyright (C) 2001-2004, 2006, 2008-2012 Free Software Foundation,
+# Copyright (C) 2001-2004, 2006, 2008-2013 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
index 2a60453..05e7bd6 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -16,7 +16,7 @@
 
 # Make bison/lib.
 
-# Copyright (C) 2001-2004, 2006, 2008-2012 Free Software Foundation,
+# Copyright (C) 2001-2004, 2006, 2008-2013 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -32,7 +32,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/>.
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # 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
@@ -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 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
+# 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 getline 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 = \
@@ -90,8 +90,8 @@ PRE_UNINSTALL = :
 POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(srcdir)/config.in.h $(srcdir)/gnulib.mk \
+DIST_COMMON = $(srcdir)/gnulib.mk $(srcdir)/Makefile.in \
+       $(srcdir)/Makefile.am $(srcdir)/config.in.h \
        $(top_srcdir)/build-aux/depcomp
 @LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__append_1 = uniwidth/width.c
 subdir = lib
@@ -110,6 +110,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -117,11 +118,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -229,23 +231,24 @@ am__v_AR_0 = @echo "  AR      " $@;
 am__v_AR_1 = 
 libbison_a_AR = $(AR) $(ARFLAGS)
 am__DEPENDENCIES_1 =
-am__libbison_a_SOURCES_DIST = argmatch.c binary-io.h bitrotate.h \
-       c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c c-strncasecmp.c \
-       cloexec.c close-stream.c closeout.c dirname.c basename.c \
-       dirname-lgpl.c basename-lgpl.c stripslash.c exitfail.c \
-       fatal-signal.h fatal-signal.c fd-hook.c fd-safer-flag.c \
-       dup-safer-flag.c fopen-safer.c gettext.h hash.c localcharset.h \
-       localcharset.c glthread/lock.h glthread/lock.c mbchar.c \
-       mbschr.c mbsrchr.c mbswidth.h mbswidth.c mbuiter.h pipe2.c \
-       pipe2-safer.c printf-frexp.c printf-frexpl.c progname.h \
-       progname.c quotearg.c size_max.h spawn-pipe.h spawn-pipe.c \
-       w32spawn.h strnlen1.h strnlen1.c glthread/threadlib.c \
+am__libbison_a_SOURCES_DIST = argmatch.c binary-io.h binary-io.c \
+       bitrotate.h bitrotate.c c-ctype.h c-ctype.c c-strcase.h \
+       c-strcasecmp.c c-strncasecmp.c cloexec.c close-stream.c \
+       closeout.c dirname.c basename.c dirname-lgpl.c basename-lgpl.c \
+       stripslash.c exitfail.c fatal-signal.h fatal-signal.c \
+       fd-hook.c fd-safer-flag.c dup-safer-flag.c fopen-safer.c \
+       gettext.h hash.c localcharset.h localcharset.c glthread/lock.h \
+       glthread/lock.c math.c mbchar.c mbschr.c mbsrchr.c mbswidth.h \
+       mbswidth.c mbuiter.h mbuiter.c pipe2.c pipe2-safer.c \
+       printf-frexp.c printf-frexpl.c progname.h progname.c \
+       quotearg.c sig-handler.c size_max.h spawn-pipe.h spawn-pipe.c \
+       w32spawn.h strnlen1.h strnlen1.c glthread/threadlib.c unistd.c \
        dup-safer.c fd-safer.c pipe-safer.c uniwidth/width.c \
-       wait-process.h wait-process.c xmalloc.c xalloc-die.c xsize.h \
-       xstrndup.h xstrndup.c get-errno.h get-errno.c abitset.c \
-       abitset.h bbitset.h bitset.c bitset.h bitset_stats.c \
-       bitset_stats.h bitsetv.c bitsetv.h ebitset.c ebitset.h \
-       lbitset.c lbitset.h libiberty.h vbitset.c vbitset.h \
+       wait-process.h wait-process.c wctype-h.c xmalloc.c \
+       xalloc-die.c xsize.h xsize.c xstrndup.h xstrndup.c get-errno.h \
+       get-errno.c abitset.c abitset.h bbitset.h bitset.c bitset.h \
+       bitset_stats.c bitset_stats.h bitsetv.c bitsetv.h ebitset.c \
+       ebitset.h lbitset.c lbitset.h libiberty.h vbitset.c vbitset.h \
        bitsetv-print.h bitsetv-print.c timevar.h timevar.c \
        timevar.def
 @LIBUNISTRING_COMPILE_UNIWIDTH_WIDTH_TRUE@am__objects_1 =  \
@@ -255,22 +258,25 @@ am__objects_2 = abitset.$(OBJEXT) bitset.$(OBJEXT) \
        lbitset.$(OBJEXT) vbitset.$(OBJEXT)
 am__objects_3 = bitsetv-print.$(OBJEXT)
 am__objects_4 = timevar.$(OBJEXT)
-am_libbison_a_OBJECTS = argmatch.$(OBJEXT) c-ctype.$(OBJEXT) \
-       c-strcasecmp.$(OBJEXT) c-strncasecmp.$(OBJEXT) \
-       cloexec.$(OBJEXT) close-stream.$(OBJEXT) closeout.$(OBJEXT) \
-       dirname.$(OBJEXT) basename.$(OBJEXT) dirname-lgpl.$(OBJEXT) \
+am_libbison_a_OBJECTS = argmatch.$(OBJEXT) binary-io.$(OBJEXT) \
+       bitrotate.$(OBJEXT) c-ctype.$(OBJEXT) c-strcasecmp.$(OBJEXT) \
+       c-strncasecmp.$(OBJEXT) cloexec.$(OBJEXT) \
+       close-stream.$(OBJEXT) closeout.$(OBJEXT) dirname.$(OBJEXT) \
+       basename.$(OBJEXT) dirname-lgpl.$(OBJEXT) \
        basename-lgpl.$(OBJEXT) stripslash.$(OBJEXT) \
        exitfail.$(OBJEXT) fatal-signal.$(OBJEXT) fd-hook.$(OBJEXT) \
        fd-safer-flag.$(OBJEXT) dup-safer-flag.$(OBJEXT) \
        fopen-safer.$(OBJEXT) hash.$(OBJEXT) localcharset.$(OBJEXT) \
-       lock.$(OBJEXT) mbchar.$(OBJEXT) mbschr.$(OBJEXT) \
-       mbsrchr.$(OBJEXT) mbswidth.$(OBJEXT) pipe2.$(OBJEXT) \
-       pipe2-safer.$(OBJEXT) printf-frexp.$(OBJEXT) \
-       printf-frexpl.$(OBJEXT) progname.$(OBJEXT) quotearg.$(OBJEXT) \
+       lock.$(OBJEXT) math.$(OBJEXT) mbchar.$(OBJEXT) \
+       mbschr.$(OBJEXT) mbsrchr.$(OBJEXT) mbswidth.$(OBJEXT) \
+       mbuiter.$(OBJEXT) pipe2.$(OBJEXT) pipe2-safer.$(OBJEXT) \
+       printf-frexp.$(OBJEXT) printf-frexpl.$(OBJEXT) \
+       progname.$(OBJEXT) quotearg.$(OBJEXT) sig-handler.$(OBJEXT) \
        spawn-pipe.$(OBJEXT) strnlen1.$(OBJEXT) threadlib.$(OBJEXT) \
-       dup-safer.$(OBJEXT) fd-safer.$(OBJEXT) pipe-safer.$(OBJEXT) \
-       $(am__objects_1) wait-process.$(OBJEXT) xmalloc.$(OBJEXT) \
-       xalloc-die.$(OBJEXT) xstrndup.$(OBJEXT) get-errno.$(OBJEXT) \
+       unistd.$(OBJEXT) dup-safer.$(OBJEXT) fd-safer.$(OBJEXT) \
+       pipe-safer.$(OBJEXT) $(am__objects_1) wait-process.$(OBJEXT) \
+       wctype-h.$(OBJEXT) xmalloc.$(OBJEXT) xalloc-die.$(OBJEXT) \
+       xsize.$(OBJEXT) xstrndup.$(OBJEXT) get-errno.$(OBJEXT) \
        $(am__objects_2) $(am__objects_3) $(am__objects_4)
 libbison_a_OBJECTS = $(am_libbison_a_OBJECTS)
 liby_a_AR = $(AR) $(ARFLAGS)
@@ -318,6 +324,24 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) \
+       $(LISP)config.in.h
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -337,6 +361,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -356,9 +381,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -630,6 +658,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -969,6 +998,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1155,6 +1185,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1165,6 +1196,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1295,6 +1327,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1389,6 +1422,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1500,8 +1534,8 @@ EXTRA_DIST = alloca.in.h $(top_srcdir)/build-aux/announce-gen \
        stdio--.h stdio-safer.h fpending.c fpending.h fprintf.c \
        fpucw.h frexp.c frexp.c frexpl.c fseterr.c fseterr.h \
        stdio-impl.h fstat.c $(top_srcdir)/build-aux/gendocs.sh \
-       getdtablesize.c getopt.c getopt.in.h getopt1.c getopt_int.h \
-       $(top_srcdir)/build-aux/config.rpath \
+       getdelim.c getdtablesize.c getline.c getopt.c getopt.in.h \
+       getopt1.c getopt_int.h $(top_srcdir)/build-aux/config.rpath \
        $(top_srcdir)/build-aux/git-version-gen \
        $(top_srcdir)/build-aux/gitlog-to-changelog \
        $(top_srcdir)/build-aux/gnu-web-doc-update \
@@ -1563,32 +1597,34 @@ SUFFIXES = .sed .sin
 noinst_LIBRARIES = libbison.a
 
 # Non-gnulib sources in Bison's internal library.
-libbison_a_SOURCES = argmatch.c binary-io.h bitrotate.h c-ctype.h \
-       c-ctype.c c-strcase.h c-strcasecmp.c c-strncasecmp.c cloexec.c \
-       close-stream.c closeout.c dirname.c basename.c dirname-lgpl.c \
-       basename-lgpl.c stripslash.c exitfail.c fatal-signal.h \
-       fatal-signal.c fd-hook.c fd-safer-flag.c dup-safer-flag.c \
-       fopen-safer.c gettext.h hash.c localcharset.h localcharset.c \
-       glthread/lock.h glthread/lock.c mbchar.c mbschr.c mbsrchr.c \
-       mbswidth.h mbswidth.c mbuiter.h pipe2.c pipe2-safer.c \
+libbison_a_SOURCES = argmatch.c binary-io.h binary-io.c bitrotate.h \
+       bitrotate.c c-ctype.h c-ctype.c c-strcase.h c-strcasecmp.c \
+       c-strncasecmp.c cloexec.c close-stream.c closeout.c dirname.c \
+       basename.c dirname-lgpl.c basename-lgpl.c stripslash.c \
+       exitfail.c fatal-signal.h fatal-signal.c fd-hook.c \
+       fd-safer-flag.c dup-safer-flag.c fopen-safer.c gettext.h \
+       hash.c localcharset.h localcharset.c glthread/lock.h \
+       glthread/lock.c math.c mbchar.c mbschr.c mbsrchr.c mbswidth.h \
+       mbswidth.c mbuiter.h mbuiter.c pipe2.c pipe2-safer.c \
        printf-frexp.c printf-frexpl.c progname.h progname.c \
-       quotearg.c size_max.h spawn-pipe.h spawn-pipe.c w32spawn.h \
-       strnlen1.h strnlen1.c glthread/threadlib.c dup-safer.c \
-       fd-safer.c pipe-safer.c $(am__append_1) wait-process.h \
-       wait-process.c xmalloc.c xalloc-die.c xsize.h xstrndup.h \
-       xstrndup.c get-errno.h get-errno.c $(bitsets_sources) \
-       $(additional_bitsets_sources) $(timevars_sources)
+       quotearg.c sig-handler.c size_max.h spawn-pipe.h spawn-pipe.c \
+       w32spawn.h strnlen1.h strnlen1.c glthread/threadlib.c unistd.c \
+       dup-safer.c fd-safer.c pipe-safer.c $(am__append_1) \
+       wait-process.h wait-process.c wctype-h.c xmalloc.c \
+       xalloc-die.c xsize.h xsize.c xstrndup.h xstrndup.c get-errno.h \
+       get-errno.c $(bitsets_sources) $(additional_bitsets_sources) \
+       $(timevars_sources)
 libbison_a_LIBADD = $(gl_LIBOBJS)
 libbison_a_DEPENDENCIES = $(gl_LIBOBJS)
 EXTRA_libbison_a_SOURCES = calloc.c close.c stripslash.c dup2.c \
        error.c fcntl.c float.c itold.c fopen.c fpending.c fprintf.c \
-       frexp.c frexp.c frexpl.c fseterr.c fstat.c getdtablesize.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 \
-       obstack_printf.c open.c perror.c spawni.c \
-       spawn_faction_addclose.c spawn_faction_adddup2.c \
+       frexp.c frexp.c frexpl.c fseterr.c fstat.c getdelim.c \
+       getdtablesize.c getline.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 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 \
@@ -1646,9 +1682,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am $(srcdir)/gnulib.mk $(am__configur
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits lib/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu lib/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits lib/Makefile
+         $(AUTOMAKE) --gnu lib/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1737,6 +1773,8 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/asnprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename-lgpl.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/basename.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/binary-io.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitrotate.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitset.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitset_stats.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/bitsetv-print.Po@am__quote@
@@ -1772,7 +1810,9 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fseterr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/fstat.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/get-errno.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdelim.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getdtablesize.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getline.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/getopt1.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/hash.Po@am__quote@
@@ -1788,12 +1828,14 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/lock.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/main.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/malloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/math.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbchar.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbrtowc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbschr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbsinit.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbsrchr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbswidth.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/mbuiter.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/memchr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-inval.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/msvc-nothrow.Po@am__quote@
@@ -1814,6 +1856,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/raise.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/rawmemchr.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/realloc.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sig-handler.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/sigaction.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signbitd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/signbitf.Po@am__quote@
@@ -1849,6 +1892,7 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/strverscmp.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/threadlib.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/timevar.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unistd.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/unsetenv.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vasnprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vbitset.Po@am__quote@
@@ -1857,11 +1901,13 @@ distclean-compile:
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/vsprintf.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wait-process.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/waitpid.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wctype-h.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/wcwidth.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/width.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xalloc-die.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmalloc.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xmemdup0.Po@am__quote@
+@AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xsize.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/xstrndup.Po@am__quote@
 @AMDEP_TRUE@@am__include@ @am__quote@./$(DEPDIR)/yyerror.Po@am__quote@
 
@@ -1921,26 +1967,15 @@ width.obj: uniwidth/width.c
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) $(depcomp) @AMDEPBACKSLASH@
 @am__fastdepCC_FALSE@  $(AM_V_CC@am__nodep@)$(CC) $(DEFS) $(DEFAULT_INCLUDES) $(INCLUDES) $(AM_CPPFLAGS) $(CPPFLAGS) $(AM_CFLAGS) $(CFLAGS) -c -o width.obj `if test -f 'uniwidth/width.c'; then $(CYGPATH_W) 'uniwidth/width.c'; else $(CYGPATH_W) '$(srcdir)/uniwidth/width.c'; fi`
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES) config.in.h $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS) config.in.h $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1952,15 +1987,11 @@ TAGS:  $(HEADERS) $(SOURCES) config.in.h $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES) config.in.h $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS) config.in.h $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1969,9 +2000,10 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
        case "$(srcdir)" in \
          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
          *) sdir=$(subdir)/$(srcdir) ;; \
@@ -2132,20 +2164,21 @@ uninstall-am: uninstall-libLIBRARIES uninstall-local
 
 .MAKE: all check install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am all-local check check-am clean \
+.PHONY: CTAGS GTAGS TAGS all all-am all-local check check-am clean \
        clean-generic clean-libLIBRARIES clean-noinstLIBRARIES \
-       cscopelist ctags distclean distclean-compile distclean-generic \
-       distclean-hdr distclean-local distclean-tags distdir dvi \
-       dvi-am html html-am info info-am install install-am \
-       install-data install-data-am install-dvi install-dvi-am \
-       install-exec install-exec-am install-exec-local install-html \
-       install-html-am install-info install-info-am \
+       cscopelist-am ctags ctags-am distclean distclean-compile \
+       distclean-generic distclean-hdr distclean-local distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-exec-local \
+       install-html install-html-am install-info install-info-am \
        install-libLIBRARIES install-man install-pdf install-pdf-am \
        install-ps install-ps-am install-strip installcheck \
        installcheck-am installdirs maintainer-clean \
        maintainer-clean-generic mostlyclean mostlyclean-compile \
        mostlyclean-generic mostlyclean-local pdf pdf-am ps ps-am tags \
-       uninstall uninstall-am uninstall-libLIBRARIES uninstall-local
+       tags-am uninstall uninstall-am uninstall-libLIBRARIES \
+       uninstall-local
 
 
 # We need the following in order to create <alloca.h> when the system
@@ -2279,7 +2312,7 @@ getopt.h: getopt.in.h $(top_builddir)/config.status $(ARG_NONNULL_H)
 
 distclean-local: clean-GNUmakefile
 clean-GNUmakefile:
-       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+       test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile
 
 # We need the following in order to create <inttypes.h> when the system
 # doesn't have one that works with the given compiler.
@@ -2992,6 +3025,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
              -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
              -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
+             -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
              -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
              -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
              -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
@@ -3020,6 +3054,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
              -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
              -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
              -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
              -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
              -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
@@ -3033,6 +3068,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
              -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
              -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
              -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
index 5ffba83..f0a665d 100644 (file)
@@ -1,6 +1,6 @@
 /* Array bitsets.
 
-   Copyright (C) 2002-2003, 2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002-2003, 2006, 2009-2013 Free Software Foundation,
    Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
index ad858fa..f661228 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support abitsets.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index d20f4b8..72d28ee 100644 (file)
@@ -1,6 +1,6 @@
 /* Memory allocation on the stack.
 
-   Copyright (C) 1995, 1999, 2001-2004, 2006-2012 Free Software Foundation,
+   Copyright (C) 1995, 1999, 2001-2004, 2006-2013 Free Software Foundation,
    Inc.
 
    This program is free software; you can redistribute it and/or modify it
index a713364..9125e2a 100644 (file)
@@ -1,6 +1,6 @@
 /* argmatch.c -- find a match for a string in an array
 
-   Copyright (C) 1990, 1998-1999, 2001-2007, 2009-2012 Free Software
+   Copyright (C) 1990, 1998-1999, 2001-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 7e88696..2e0275c 100644 (file)
@@ -1,6 +1,6 @@
 /* argmatch.h -- definitions and prototypes for argmatch.c
 
-   Copyright (C) 1990, 1998-1999, 2001-2002, 2004-2005, 2009-2012 Free Software
+   Copyright (C) 1990, 1998-1999, 2001-2002, 2004-2005, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index f6f70c9..76e228d 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 1999, 2002, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002, 2006, 2009-2013 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
index 43ef8c2..9307e83 100644 (file)
@@ -1,6 +1,6 @@
 /* basename.c -- return the last element in a file name
 
-   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2012 Free Software
+   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 5f18ffd..d73fd41 100644 (file)
@@ -1,6 +1,6 @@
 /* basename.c -- return the last element in a file name
 
-   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2012 Free Software
+   Copyright (C) 1990, 1998-2001, 2003-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index f819b17..ce9d56b 100644 (file)
@@ -1,6 +1,6 @@
 /* Base bitset stuff.
 
-   Copyright (C) 2002-2004, 2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002-2004, 2006, 2009-2013 Free Software Foundation,
    Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
diff --git a/lib/binary-io.c b/lib/binary-io.c
new file mode 100644 (file)
index 0000000..8bbdb44
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define BINARY_IO_INLINE _GL_EXTERN_INLINE
+#include "binary-io.h"
index a33e32a..317fe3d 100644 (file)
@@ -1,5 +1,5 @@
 /* Binary mode I/O.
-   Copyright (C) 2001, 2003, 2005, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2005, 2008-2013 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
    so we include it here first.  */
 #include <stdio.h>
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef BINARY_IO_INLINE
+# define BINARY_IO_INLINE _GL_INLINE
+#endif
+
 /* set_binary_mode (fd, mode)
    sets the binary/text I/O mode of file descriptor fd to the given mode
    (must be O_BINARY or O_TEXT) and returns the previous mode.  */
@@ -39,9 +44,9 @@
 # endif
 #else
   /* On reasonable systems, binary I/O is the only choice.  */
-  /* Use an inline function rather than a macro, to avoid gcc warnings
+  /* Use a function rather than a macro, to avoid gcc warnings
      "warning: statement with no effect".  */
-static inline int
+BINARY_IO_INLINE int
 set_binary_mode (int fd, int mode)
 {
   (void) fd;
@@ -62,4 +67,6 @@ set_binary_mode (int fd, int mode)
 # define SET_BINARY(fd) ((void) set_binary_mode (fd, O_BINARY))
 #endif
 
+_GL_INLINE_HEADER_END
+
 #endif /* _BINARY_H */
diff --git a/lib/bitrotate.c b/lib/bitrotate.c
new file mode 100644 (file)
index 0000000..a8f6028
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define BITROTATE_INLINE _GL_EXTERN_INLINE
+#include "bitrotate.h"
index 5fb8f9b..9e10a45 100644 (file)
@@ -1,5 +1,5 @@
 /* bitrotate.h - Rotate bits in integers
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
 #include <stdint.h>
 #include <sys/types.h>
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef BITROTATE_INLINE
+# define BITROTATE_INLINE _GL_INLINE
+#endif
+
 #ifdef UINT64_MAX
 /* Given an unsigned 64-bit argument X, return the value corresponding
    to rotating the bits N steps to the left.  N must be between 1 and
    63 inclusive. */
-static inline uint64_t
+BITROTATE_INLINE uint64_t
 rotl64 (uint64_t x, int n)
 {
   return ((x << n) | (x >> (64 - n))) & UINT64_MAX;
@@ -36,7 +41,7 @@ rotl64 (uint64_t x, int n)
 /* Given an unsigned 64-bit argument X, return the value corresponding
    to rotating the bits N steps to the right.  N must be between 1 to
    63 inclusive.*/
-static inline uint64_t
+BITROTATE_INLINE uint64_t
 rotr64 (uint64_t x, int n)
 {
   return ((x >> n) | (x << (64 - n))) & UINT64_MAX;
@@ -46,7 +51,7 @@ rotr64 (uint64_t x, int n)
 /* Given an unsigned 32-bit argument X, return the value corresponding
    to rotating the bits N steps to the left.  N must be between 1 and
    31 inclusive. */
-static inline uint32_t
+BITROTATE_INLINE uint32_t
 rotl32 (uint32_t x, int n)
 {
   return ((x << n) | (x >> (32 - n))) & UINT32_MAX;
@@ -55,7 +60,7 @@ rotl32 (uint32_t x, int n)
 /* Given an unsigned 32-bit argument X, return the value corresponding
    to rotating the bits N steps to the right.  N must be between 1 to
    31 inclusive.*/
-static inline uint32_t
+BITROTATE_INLINE uint32_t
 rotr32 (uint32_t x, int n)
 {
   return ((x >> n) | (x << (32 - n))) & UINT32_MAX;
@@ -64,7 +69,7 @@ rotr32 (uint32_t x, int n)
 /* Given a size_t argument X, return the value corresponding
    to rotating the bits N steps to the left.  N must be between 1 and
    (CHAR_BIT * sizeof (size_t) - 1) inclusive.  */
-static inline size_t
+BITROTATE_INLINE size_t
 rotl_sz (size_t x, int n)
 {
   return ((x << n) | (x >> ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
@@ -73,7 +78,7 @@ rotl_sz (size_t x, int n)
 /* Given a size_t argument X, return the value corresponding
    to rotating the bits N steps to the right.  N must be between 1 to
    (CHAR_BIT * sizeof (size_t) - 1) inclusive.  */
-static inline size_t
+BITROTATE_INLINE size_t
 rotr_sz (size_t x, int n)
 {
   return ((x >> n) | (x << ((CHAR_BIT * sizeof x) - n))) & SIZE_MAX;
@@ -84,7 +89,7 @@ rotr_sz (size_t x, int n)
    15 inclusive, but on most relevant targets N can also be 0 and 16
    because 'int' is at least 32 bits and the arguments must widen
    before shifting. */
-static inline uint16_t
+BITROTATE_INLINE uint16_t
 rotl16 (uint16_t x, int n)
 {
   return ((x << n) | (x >> (16 - n))) & UINT16_MAX;
@@ -95,7 +100,7 @@ rotl16 (uint16_t x, int n)
    inclusive, but on most relevant targets N can also be 0 and 16
    because 'int' is at least 32 bits and the arguments must widen
    before shifting. */
-static inline uint16_t
+BITROTATE_INLINE uint16_t
 rotr16 (uint16_t x, int n)
 {
   return ((x >> n) | (x << (16 - n))) & UINT16_MAX;
@@ -106,7 +111,7 @@ rotr16 (uint16_t x, int n)
    inclusive, but on most relevant targets N can also be 0 and 8
    because 'int' is at least 32 bits and the arguments must widen
    before shifting. */
-static inline uint8_t
+BITROTATE_INLINE uint8_t
 rotl8 (uint8_t x, int n)
 {
   return ((x << n) | (x >> (8 - n))) & UINT8_MAX;
@@ -117,10 +122,12 @@ rotl8 (uint8_t x, int n)
    inclusive, but on most relevant targets N can also be 0 and 8
    because 'int' is at least 32 bits and the arguments must widen
    before shifting. */
-static inline uint8_t
+BITROTATE_INLINE uint8_t
 rotr8 (uint8_t x, int n)
 {
   return ((x >> n) | (x << (8 - n))) & UINT8_MAX;
 }
 
+_GL_INLINE_HEADER_END
+
 #endif /* _GL_BITROTATE_H */
index d64d5f8..2bb2033 100644 (file)
@@ -1,6 +1,6 @@
 /* General bitsets.
 
-   Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index fbc7b77..6459242 100644 (file)
@@ -1,6 +1,6 @@
 /* Generic bitsets.
 
-   Copyright (C) 2002-2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index bde9b98..f099b4b 100644 (file)
@@ -1,6 +1,6 @@
 /* Bitset statistics.
 
-   Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 96efd56..d65fcad 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support bitset statistics.
 
-   Copyright (C) 2002-2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 92b617e..4b44b56 100644 (file)
@@ -1,6 +1,6 @@
 /* Bitset vectors.
 
-   Copyright (C) 2001-2002, 2004, 2006, 2009-2012 Free Software
+   Copyright (C) 2001-2002, 2004, 2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 27736ef..a7cc8bc 100644 (file)
@@ -1,6 +1,6 @@
 /* Bitset vectors.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Akim Demaille (akim@freefriends.org).
 
index e3bafb9..8d925aa 100644 (file)
@@ -1,6 +1,6 @@
 /* Bitset vectors.
 
-   Copyright (C) 2001-2002, 2004-2006, 2009-2012 Free Software
+   Copyright (C) 2001-2002, 2004-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 34e1604..2472a82 100644 (file)
@@ -1,6 +1,6 @@
 /* Bitset vectors.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 952d7a8..752d2e3 100644 (file)
@@ -1,6 +1,6 @@
 /* Character handling in C locale.
 
-   Copyright 2000-2003, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright 2000-2003, 2006, 2009-2013 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
index 0b31309..3a66440 100644 (file)
@@ -5,7 +5,7 @@
    <ctype.h> functions' behaviour depends on the current locale set via
    setlocale.
 
-   Copyright (C) 2000-2003, 2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2003, 2006, 2008-2013 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
index fdef238..49e1bb0 100644 (file)
@@ -1,5 +1,5 @@
 /* Case-insensitive string comparison functions in C locale.
-   Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2012 Free Software
+   Copyright (C) 1995-1996, 2001, 2003, 2005, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index d8332ca..ef85f0e 100644 (file)
@@ -1,5 +1,5 @@
 /* c-strcasecmp.c -- case insensitive string comparator in C locale
-   Copyright (C) 1998-1999, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-1999, 2005-2006, 2009-2013 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
index 5c4bdff..afdea26 100644 (file)
@@ -1,5 +1,5 @@
 /* Optimized case-insensitive string comparison in C locale.
-   Copyright (C) 2001-2002, 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2007, 2009-2013 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
index 47fb5fd..04404b0 100644 (file)
@@ -1,5 +1,5 @@
 /* c-strncasecmp.c -- case insensitive string comparator in C locale
-   Copyright (C) 1998-1999, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-1999, 2005-2006, 2009-2013 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
index 93da14d..475d0ae 100644 (file)
@@ -1,6 +1,6 @@
 /* calloc() function that is glibc compatible.
    This wrapper function is required at least on Tru64 UNIX 5.1 and mingw.
-   Copyright (C) 2004-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004-2007, 2009-2013 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
index 7919e86..e3e42d2 100644 (file)
@@ -1,6 +1,6 @@
 /* closexec.c - set or clear the close-on-exec descriptor flag
 
-   Copyright (C) 1991, 2004-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1991, 2004-2006, 2009-2013 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
index 92e9f81..0c5935b 100644 (file)
@@ -1,6 +1,6 @@
 /* closexec.c - set or clear the close-on-exec descriptor flag
 
-   Copyright (C) 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2009-2013 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
index 04fa5ec..d6a8692 100644 (file)
@@ -1,6 +1,6 @@
 /* Close a stream, with nicer error checking than fclose's.
 
-   Copyright (C) 1998-2002, 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2004, 2006-2013 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
index 4b7accb..f620e54 100644 (file)
@@ -1,5 +1,5 @@
 /* close replacement.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index eea4024..d4d3edc 100644 (file)
@@ -1,6 +1,6 @@
 /* Close standard output and standard error, exiting with a diagnostic on error.
 
-   Copyright (C) 1998-2002, 2004, 2006, 2008-2012 Free Software Foundation,
+   Copyright (C) 1998-2002, 2004, 2006, 2008-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
index 5310b28..131fe86 100644 (file)
@@ -1,6 +1,6 @@
 /* Close standard output and standard error.
 
-   Copyright (C) 1998, 2000, 2003-2004, 2006, 2008-2012 Free Software
+   Copyright (C) 1998, 2000, 2003-2004, 2006, 2008-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 0a3b343..a991419 100644 (file)
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Output a system dependent table of character encoding aliases.
 #
-#   Copyright (C) 2000-2004, 2006-2012 Free Software Foundation, Inc.
+#   Copyright (C) 2000-2004, 2006-2013 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
index 38f6c41..3e12a30 100644 (file)
 /* Define to 1 when the gnulib module fstat should be tested. */
 #undef GNULIB_TEST_FSTAT
 
+/* Define to 1 when the gnulib module getdelim should be tested. */
+#undef GNULIB_TEST_GETDELIM
+
 /* Define to 1 when the gnulib module getdtablesize should be tested. */
 #undef GNULIB_TEST_GETDTABLESIZE
 
+/* Define to 1 when the gnulib module getline should be tested. */
+#undef GNULIB_TEST_GETLINE
+
 /* Define to 1 when the gnulib module getopt-gnu should be tested. */
 #undef GNULIB_TEST_GETOPT_GNU
 
 /* Define to 1 when the gnulib module wcwidth should be tested. */
 #undef GNULIB_TEST_WCWIDTH
 
-/* Define to 1 if you have the `alarm' function. */
-#undef HAVE_ALARM
-
 /* Define to 1 if you have 'alloca' after including <alloca.h>, a header that
    may be supplied by this distribution. */
 #undef HAVE_ALLOCA
    */
 #undef HAVE_DCGETTEXT
 
+/* Define to 1 if you have the declaration of `alarm', and to 0 if you don't.
+   */
+#undef HAVE_DECL_ALARM
+
 /* Define to 1 if you have the declaration of `clearerr_unlocked', and to 0 if
    you don't. */
 #undef HAVE_DECL_CLEARERR_UNLOCKED
    don't. */
 #undef HAVE_DECL_GETC_UNLOCKED
 
+/* Define to 1 if you have the declaration of `getdelim', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETDELIM
+
 /* Define to 1 if you have the declaration of `getenv', and to 0 if you don't.
    */
 #undef HAVE_DECL_GETENV
 
+/* Define to 1 if you have the declaration of `getline', and to 0 if you
+   don't. */
+#undef HAVE_DECL_GETLINE
+
 /* Define to 1 if you have the declaration of `getrusage', and to 0 if you
    don't. */
 #undef HAVE_DECL_GETRUSAGE
 /* Define to 1 if you have the <features.h> header file. */
 #undef HAVE_FEATURES_H
 
+/* Define to 1 if you have the `flockfile' function. */
+#undef HAVE_FLOCKFILE
+
 /* Define if the frexpl function is available in libc. */
 #undef HAVE_FREXPL_IN_LIBC
 
 /* Define if the frexp function is available in libc. */
 #undef HAVE_FREXP_IN_LIBC
 
+/* Define to 1 if you have the `funlockfile' function. */
+#undef HAVE_FUNLOCKFILE
+
+/* Define to 1 if you have the `getdelim' function. */
+#undef HAVE_GETDELIM
+
 /* Define to 1 if you have the `getdtablesize' function. */
 #undef HAVE_GETDTABLESIZE
 
 /* Define if you have the iconv() function and it works. */
 #undef HAVE_ICONV
 
-/* Define to 1 if the compiler supports one of the keywords 'inline',
-   '__inline__', '__inline' and effectively inlines functions marked as such.
-   */
-#undef HAVE_INLINE
-
 /* Define if you have the 'intmax_t' type in <stdint.h> or <inttypes.h>. */
 #undef HAVE_INTMAX_T
 
 /* Define to 1 if rpmatch is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_RPMATCH
 
+/* Define to 1 if secure_getenv is declared even after undefining macros. */
+#undef HAVE_RAW_DECL_SECURE_GETENV
+
 /* Define to 1 if setenv is declared even after undefining macros. */
 #undef HAVE_RAW_DECL_SETENV
 
    made weak. */
 #undef USE_SOLARIS_THREADS_WEAK
 
+/* Enable extensions on AIX 3, Interix.  */
+#ifndef _ALL_SOURCE
+# undef _ALL_SOURCE
+#endif
+/* Enable general extensions on OS X.  */
+#ifndef _DARWIN_C_SOURCE
+# undef _DARWIN_C_SOURCE
+#endif
+/* Enable GNU extensions on systems that have them.  */
+#ifndef _GNU_SOURCE
+# undef _GNU_SOURCE
+#endif
+/* Enable threading extensions on Solaris.  */
+#ifndef _POSIX_PTHREAD_SEMANTICS
+# undef _POSIX_PTHREAD_SEMANTICS
+#endif
+/* Enable extensions on HP NonStop.  */
+#ifndef _TANDEM_SOURCE
+# undef _TANDEM_SOURCE
+#endif
+/* Enable X/Open extensions if necessary.  HP-UX 11.11 defines
+   mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
+   whether compiling with -Ae or -D_HPUX_SOURCE=1.  */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
+#endif
+/* Enable general extensions on Solaris.  */
+#ifndef __EXTENSIONS__
+# undef __EXTENSIONS__
+#endif
+
+
 /* Define to 1 if you want getc etc. to use unlocked I/O if available.
    Unlocked I/O can improve performance in unithreaded apps, but it is not
    safe for multithreaded apps. */
    `char[]'. */
 #undef YYTEXT_POINTER
 
-/* Enable large inode numbers on Mac OS X 10.5.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif
+/* Enable large inode numbers on Mac OS X 10.5. */
+#undef _DARWIN_USE_64_BIT_INODE
 
 /* Number of bits in a file offset, on hosts where this is settable. */
 #undef _FILE_OFFSET_BITS
 /* Define to 1 if on MINIX. */
 #undef _MINIX
 
+/* Define to 1 to make NetBSD features available. MINIX 3 needs this. */
+#undef _NETBSD_SOURCE
+
 /* The _Noreturn keyword of C11.  */
 #if ! (defined _Noreturn \
        || (defined __STDC_VERSION__ && 201112 <= __STDC_VERSION__))
 /* Define to 1 if you need to in order for 'stat' and other things to work. */
 #undef _POSIX_SOURCE
 
-/* Define to 500 only on HP-UX. */
-#undef _XOPEN_SOURCE
-
-/* Enable extensions on AIX 3, Interix.  */
-#ifndef _ALL_SOURCE
-# undef _ALL_SOURCE
-#endif
-/* Enable general extensions on Mac OS X.  */
-#ifndef _DARWIN_C_SOURCE
-# undef _DARWIN_C_SOURCE
-#endif
-/* Enable GNU extensions on systems that have them.  */
-#ifndef _GNU_SOURCE
-# undef _GNU_SOURCE
-#endif
-/* Enable threading extensions on Solaris.  */
-#ifndef _POSIX_PTHREAD_SEMANTICS
-# undef _POSIX_PTHREAD_SEMANTICS
-#endif
-/* Enable extensions on HP NonStop.  */
-#ifndef _TANDEM_SOURCE
-# undef _TANDEM_SOURCE
-#endif
-/* Enable general extensions on Solaris.  */
-#ifndef __EXTENSIONS__
-# undef __EXTENSIONS__
-#endif
-
-
 /* Define to rpl_ if the getopt replacement functions and variables should be
    used. */
 #undef __GETOPT_PREFIX
 
+/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
+   _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
+   _GL_INLINE_HEADER_BEGIN contains useful stuff to put
+     in an include file, before uses of _GL_INLINE.
+     It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
+     when FOO is an inline function in the header; see
+     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
+   _GL_INLINE_HEADER_END contains useful stuff to put
+     in the same include file, after uses of _GL_INLINE.
+
+   Suppress extern inline with HP-UX cc, as it appears to be broken; see
+   <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
+
+   Suppress the use of extern inline on Apple's platforms,
+   as Libc-825.25 (2012-09-19) is incompatible with it; see
+   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
+   Perhaps Apple will fix this some day.  */
+#if ((__GNUC__ \
+      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+      : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \
+     && !defined __APPLE__)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
+# if __GNUC_GNU_INLINE__
+   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
+#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+#  define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+#  define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+#  define _GL_INLINE_HEADER_CONST_PRAGMA \
+     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+    _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif
+
 /* Define to `int' if <sys/types.h> doesn't define. */
 #undef gid_t
 
index 2895cbc..82f6630 100644 (file)
@@ -1,6 +1,6 @@
 /* dirname.c -- return all but the last element in a file name
 
-   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2012 Free Software
+   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 627c164..1fb6588 100644 (file)
@@ -1,6 +1,6 @@
 /* dirname.c -- return all but the last element in a file name
 
-   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2012 Free Software
+   Copyright (C) 1990, 1998, 2000-2001, 2003-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 51a685c..4ad0312 100644 (file)
@@ -1,6 +1,6 @@
 /*  Take file names apart into directory and base names.
 
-    Copyright (C) 1998, 2001, 2003-2006, 2009-2012 Free Software Foundation,
+    Copyright (C) 1998, 2001, 2003-2006, 2009-2013 Free Software Foundation,
     Inc.
 
     This program is free software: you can redistribute it and/or modify
index 0468ce4..ba63ce4 100644 (file)
@@ -1,6 +1,6 @@
 /* File names on MS-DOS/Windows systems.
 
-   Copyright (C) 2000-2001, 2004-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2001, 2004-2006, 2009-2013 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
index e4d1b21..8a09821 100644 (file)
@@ -1,7 +1,7 @@
 /* Duplicate a file descriptor result, avoiding clobbering
    STD{IN,OUT,ERR}_FILENO, with specific flags.
 
-   Copyright (C) 2001, 2004-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2004-2006, 2009-2013 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
index 0f5d3be..c203107 100644 (file)
@@ -1,6 +1,6 @@
 /* Invoke dup, but avoid some glitches.
 
-   Copyright (C) 2001, 2004-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2004-2006, 2009-2013 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
index f6d0f1c..9219eb3 100644 (file)
@@ -1,6 +1,6 @@
 /* Duplicate an open file descriptor to a specified file descriptor.
 
-   Copyright (C) 1999, 2004-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2004-2007, 2009-2013 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
@@ -95,7 +95,10 @@ rpl_dup2 (int fd, int desired_fd)
 # ifdef F_GETFL
   /* On Linux kernels 2.6.26-2.6.29, dup2 (fd, fd) returns -EBADF.
      On Cygwin 1.5.x, dup2 (1, 1) returns 0.
+     On Cygwin 1.7.17, dup2 (1, -1) dumps core.
      On Haiku, dup2 (fd, fd) mistakenly clears FD_CLOEXEC.  */
+  if (desired_fd < 0)
+    fd = desired_fd;
   if (fd == desired_fd)
     return fcntl (fd, F_GETFL) == -1 ? -1 : fd;
 # endif
index 9f35499..9d9341f 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support expandable bitsets.
 
-   Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index a25ed28..d31bda7 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support ebitsets.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 5e5af92..49b3546 100644 (file)
@@ -1,6 +1,6 @@
 /* A POSIX-like <errno.h>.
 
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
 #  define GNULIB_defined_ENOTRECOVERABLE 1
 # endif
 
+# ifndef EILSEQ
+#  define EILSEQ 2015
+#  define GNULIB_defined_EILSEQ 1
+# endif
+
 #endif /* _@GUARD_PREFIX@_ERRNO_H */
 #endif /* _@GUARD_PREFIX@_ERRNO_H */
index dc8c65f..865b293 100644 (file)
@@ -1,5 +1,5 @@
 /* Error handler for noninteractive utilities
-   Copyright (C) 1990-1998, 2000-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1990-1998, 2000-2007, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
@@ -121,7 +121,7 @@ extern char *program_name;
 
 #if !_LIBC
 /* Return non-zero if FD is open.  */
-static inline int
+static int
 is_open (int fd)
 {
 # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
@@ -139,7 +139,7 @@ is_open (int fd)
 }
 #endif
 
-static inline void
+static void
 flush_stdout (void)
 {
 #if !_LIBC
index 9c2cb8b..afcb0e1 100644 (file)
@@ -1,5 +1,5 @@
 /* Declaration for error-reporting function
-   Copyright (C) 1995-1997, 2003, 2006, 2008-2012 Free Software Foundation,
+   Copyright (C) 1995-1997, 2003, 2006, 2008-2013 Free Software Foundation,
    Inc.
    This file is part of the GNU C Library.
 
index fdd674c..b0b4ebe 100644 (file)
@@ -1,6 +1,6 @@
 /* Failure exit status
 
-   Copyright (C) 2002-2003, 2005-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2003, 2005-2007, 2009-2013 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
index 074f212..e54333b 100644 (file)
@@ -1,6 +1,6 @@
 /* Failure exit status
 
-   Copyright (C) 2002, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2009-2013 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
index 54ef8c6..8f7cb8e 100644 (file)
@@ -1,5 +1,5 @@
 /* Emergency actions in case of a fatal signal.
-   Copyright (C) 2003-2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003-2004, 2006-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.
 
    This program is free software: you can redistribute it and/or modify
@@ -131,7 +131,7 @@ static struct sigaction saved_sigactions[64];
 
 
 /* Uninstall the handlers.  */
-static inline void
+static void
 uninstall_handlers (void)
 {
   size_t i;
@@ -176,7 +176,7 @@ fatal_signal_handler (int sig)
 
 
 /* Install the handlers.  */
-static inline void
+static void
 install_handlers (void)
 {
   size_t i;
index f6628d6..f5df78a 100644 (file)
@@ -1,5 +1,5 @@
 /* Emergency actions in case of a fatal signal.
-   Copyright (C) 2003-2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003-2004, 2009-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.
 
    This program is free software: you can redistribute it and/or modify
index 3dfb6b7..735fa66 100644 (file)
@@ -1,6 +1,6 @@
 /* Provide file descriptor control.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
index 76e12f7..1e45a65 100644 (file)
@@ -1,6 +1,6 @@
 /* Like <fcntl.h>, but with non-working flags defined to 0.
 
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 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
@@ -216,6 +216,10 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_EXEC O_RDONLY /* This is often close enough in older systems.  */
 #endif
 
+#ifndef O_IGNORE_CTTY
+# define O_IGNORE_CTTY 0
+#endif
+
 #ifndef O_NDELAY
 # define O_NDELAY 0
 #endif
@@ -249,10 +253,18 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_NOFOLLOW 0
 #endif
 
+#ifndef O_NOLINK
+# define O_NOLINK 0
+#endif
+
 #ifndef O_NOLINKS
 # define O_NOLINKS 0
 #endif
 
+#ifndef O_NOTRANS
+# define O_NOTRANS 0
+#endif
+
 #ifndef O_RSYNC
 # define O_RSYNC 0
 #endif
@@ -269,7 +281,7 @@ _GL_WARN_ON_USE (openat, "openat is not portable - "
 # define O_TTY_INIT 0
 #endif
 
-#if O_ACCMODE != (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
+#if ~O_ACCMODE & (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
 # undef O_ACCMODE
 # define O_ACCMODE (O_RDONLY | O_WRONLY | O_RDWR | O_EXEC | O_SEARCH)
 #endif
index 8f4ffe2..e158a52 100644 (file)
@@ -1,5 +1,5 @@
 /* Hook for making making file descriptor functions close(), ioctl() extensible.
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2009.
 
    This program is free software: you can redistribute it and/or modify it
index 721e9ad..d15b577 100644 (file)
@@ -1,5 +1,5 @@
 /* Hook for making making file descriptor functions close(), ioctl() extensible.
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
index b090edf..8bc14bd 100644 (file)
@@ -1,7 +1,7 @@
 /* Adjust a file descriptor result so that it avoids clobbering
    STD{IN,OUT,ERR}_FILENO, with specific flags.
 
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 052837b..8ded888 100644 (file)
@@ -1,6 +1,6 @@
 /* Return a safer copy of a file descriptor.
 
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 75e56a1..32fb790 100644 (file)
@@ -1,5 +1,5 @@
 /* Supplemental information about the floating-point formats.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2007.
 
    This program is free software; you can redistribute it and/or modify
index ea31866..366945f 100644 (file)
@@ -1,5 +1,5 @@
 /* Auxiliary definitions for <float.h>.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2011.
 
    This program is free software: you can redistribute it and/or modify
index b420510..84e1950 100644 (file)
@@ -1,6 +1,6 @@
 /* A correct <float.h>.
 
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 38b0093..917920d 100644 (file)
@@ -1,6 +1,6 @@
 /* Invoke fopen, but avoid some glitches.
 
-   Copyright (C) 2001, 2004-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2004-2006, 2009-2013 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
index c17c73f..f9d6763 100644 (file)
@@ -1,5 +1,5 @@
 /* Open a stream to a file.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
@@ -26,7 +26,7 @@
 #include <stdio.h>
 #undef __need_FILE
 
-static inline FILE *
+static FILE *
 orig_fopen (const char *filename, const char *mode)
 {
   return fopen (filename, mode);
index 2591d53..e917f4f 100644 (file)
@@ -1,5 +1,5 @@
 /* fpending.c -- return the number of pending output bytes on a stream
-   Copyright (C) 2000, 2004, 2006-2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2000, 2004, 2006-2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
index 0365287..bf40d37 100644 (file)
@@ -1,6 +1,6 @@
 /* Declare __fpending.
 
-   Copyright (C) 2000, 2003, 2005-2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2000, 2003, 2005-2006, 2009-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
index b1db5f6..450d7f1 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to a stream.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 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
index 23e4c81..0b7f528 100644 (file)
@@ -1,5 +1,5 @@
 /* Manipulating the FPU control word.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2007.
 
    This program is free software: you can redistribute it and/or modify
index 4f5d0c0..d847fa3 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a double into fraction and mantissa.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index b74ceeb..5ec2780 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a 'long double' into fraction and mantissa.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 4273a46..0fca65f 100644 (file)
@@ -1,5 +1,5 @@
 /* Set the error indicator of a stream.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 16a1afe..630fa86 100644 (file)
@@ -1,5 +1,5 @@
 /* Set the error indicator of a stream.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 6d5f5c2..dc802f5 100644 (file)
@@ -1,5 +1,5 @@
 /* fstat() replacement.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
@@ -31,7 +31,7 @@
 #endif
 #undef __need_system_sys_stat_h
 
-static inline int
+static int
 orig_fstat (int fd, struct stat *buf)
 {
   return fstat (fd, buf);
@@ -51,7 +51,7 @@ orig_fstat (int fd, struct stat *buf)
 #endif
 
 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER
-static inline int
+static int
 fstat_nothrow (int fd, struct stat *buf)
 {
   int result;
index b77ecc2..7865212 100644 (file)
@@ -1,6 +1,6 @@
 /* get-errno.c - get and set errno.
 
-   Copyright (C) 2002, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006, 2009-2013 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
index 99ab52f..04b3d4c 100644 (file)
@@ -1,6 +1,6 @@
 /* get-errno.h - get and set errno.
 
-   Copyright (C) 2002, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2009-2013 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
diff --git a/lib/getdelim.c b/lib/getdelim.c
new file mode 100644 (file)
index 0000000..fdbcde2
--- /dev/null
@@ -0,0 +1,135 @@
+/* getdelim.c --- Implementation of replacement getdelim function.
+   Copyright (C) 1994, 1996-1998, 2001, 2003, 2005-2013 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/>.  */
+
+/* Ported from glibc by Simon Josefsson. */
+
+/* Don't use __attribute__ __nonnull__ in this compilation unit.  Otherwise gcc
+   optimizes away the lineptr == NULL || n == NULL || fp == NULL tests below.  */
+#define _GL_ARG_NONNULL(params)
+
+#include <config.h>
+
+#include <stdio.h>
+
+#include <limits.h>
+#include <stdint.h>
+#include <stdlib.h>
+#include <errno.h>
+
+#ifndef SSIZE_MAX
+# define SSIZE_MAX ((ssize_t) (SIZE_MAX / 2))
+#endif
+
+#if USE_UNLOCKED_IO
+# include "unlocked-io.h"
+# define getc_maybe_unlocked(fp)        getc(fp)
+#elif !HAVE_FLOCKFILE || !HAVE_FUNLOCKFILE || !HAVE_DECL_GETC_UNLOCKED
+# undef flockfile
+# undef funlockfile
+# define flockfile(x) ((void) 0)
+# define funlockfile(x) ((void) 0)
+# define getc_maybe_unlocked(fp)        getc(fp)
+#else
+# define getc_maybe_unlocked(fp)        getc_unlocked(fp)
+#endif
+
+/* Read up to (and including) a DELIMITER from FP into *LINEPTR (and
+   NUL-terminate it).  *LINEPTR is a pointer returned from malloc (or
+   NULL), pointing to *N characters of space.  It is realloc'ed as
+   necessary.  Returns the number of characters read (not including
+   the null terminator), or -1 on error or EOF.  */
+
+ssize_t
+getdelim (char **lineptr, size_t *n, int delimiter, FILE *fp)
+{
+  ssize_t result;
+  size_t cur_len = 0;
+
+  if (lineptr == NULL || n == NULL || fp == NULL)
+    {
+      errno = EINVAL;
+      return -1;
+    }
+
+  flockfile (fp);
+
+  if (*lineptr == NULL || *n == 0)
+    {
+      char *new_lineptr;
+      *n = 120;
+      new_lineptr = (char *) realloc (*lineptr, *n);
+      if (new_lineptr == NULL)
+        {
+          result = -1;
+          goto unlock_return;
+        }
+      *lineptr = new_lineptr;
+    }
+
+  for (;;)
+    {
+      int i;
+
+      i = getc_maybe_unlocked (fp);
+      if (i == EOF)
+        {
+          result = -1;
+          break;
+        }
+
+      /* Make enough space for len+1 (for final NUL) bytes.  */
+      if (cur_len + 1 >= *n)
+        {
+          size_t needed_max =
+            SSIZE_MAX < SIZE_MAX ? (size_t) SSIZE_MAX + 1 : SIZE_MAX;
+          size_t needed = 2 * *n + 1;   /* Be generous. */
+          char *new_lineptr;
+
+          if (needed_max < needed)
+            needed = needed_max;
+          if (cur_len + 1 >= needed)
+            {
+              result = -1;
+              errno = EOVERFLOW;
+              goto unlock_return;
+            }
+
+          new_lineptr = (char *) realloc (*lineptr, needed);
+          if (new_lineptr == NULL)
+            {
+              result = -1;
+              goto unlock_return;
+            }
+
+          *lineptr = new_lineptr;
+          *n = needed;
+        }
+
+      (*lineptr)[cur_len] = i;
+      cur_len++;
+
+      if (i == delimiter)
+        break;
+    }
+  (*lineptr)[cur_len] = '\0';
+  result = cur_len ? cur_len : result;
+
+ unlock_return:
+  funlockfile (fp); /* doesn't set errno */
+
+  return result;
+}
index 70ba075..9947405 100644 (file)
@@ -1,5 +1,5 @@
 /* getdtablesize() function for platforms that don't have it.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2008.
 
    This program is free software: you can redistribute it and/or modify
@@ -27,7 +27,7 @@
 #include "msvc-inval.h"
 
 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER
-static inline int
+static int
 _setmaxstdio_nothrow (int newmax)
 {
   int result;
diff --git a/lib/getline.c b/lib/getline.c
new file mode 100644 (file)
index 0000000..1aa07b9
--- /dev/null
@@ -0,0 +1,27 @@
+/* getline.c --- Implementation of replacement getline function.
+   Copyright (C) 2005-2007, 2009-2013 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/>.  */
+
+/* Written by Simon Josefsson. */
+
+#include <config.h>
+
+#include <stdio.h>
+
+ssize_t
+getline (char **lineptr, size_t *n, FILE *stream)
+{
+  return getdelim (lineptr, n, '\n', stream);
+}
index 4342a34..ef0f4ce 100644 (file)
@@ -2,7 +2,7 @@
    NOTE: getopt is part of the C library, so if you don't know what
    "Keep this file name-space clean" means, talk to drepper@gnu.org
    before changing it!
-   Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2012 Free Software
+   Copyright (C) 1987-1996, 1998-2004, 2006, 2008-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
 
index 06b6dfc..d9c7d81 100644 (file)
@@ -1,5 +1,5 @@
 /* Declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2012 Free Software
+   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2007, 2009-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
 
@@ -49,7 +49,9 @@
    linkers.  */
 #if defined __GETOPT_PREFIX && !defined __need_getopt
 # if !@HAVE_GETOPT_H@
+#  define __need_system_stdlib_h
 #  include <stdlib.h>
+#  undef __need_system_stdlib_h
 #  include <stdio.h>
 #  include <unistd.h>
 # endif
index fb2a8f5..55a6b4e 100644 (file)
@@ -1,5 +1,5 @@
 /* getopt_long and getopt_long_only entry points for GNU getopt.
-   Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2012 Free Software
+   Copyright (C) 1987-1994, 1996-1998, 2004, 2006, 2009-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
 
index 2da020c..a6e4b9e 100644 (file)
@@ -1,5 +1,5 @@
 /* Internal declarations for getopt.
-   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2012 Free Software
+   Copyright (C) 1989-1994, 1996-1999, 2001, 2003-2004, 2009-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
 
index 65ca1e6..d021571 100644 (file)
@@ -1,5 +1,5 @@
 /* Convenience header for conditional use of GNU <libintl.h>.
-   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2012 Free Software
+   Copyright (C) 1995-1998, 2000-2002, 2004-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index 9a391ea..f62aa30 100644 (file)
@@ -1,5 +1,5 @@
 /* Locking in multithreaded situations.
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
@@ -682,7 +682,7 @@ glthread_lock_destroy_func (gl_lock_t *lock)
 /* In this file, the waitqueues are implemented as circular arrays.  */
 #define gl_waitqueue_t gl_carray_waitqueue_t
 
-static inline void
+static void
 gl_waitqueue_init (gl_waitqueue_t *wq)
 {
   wq->array = NULL;
@@ -743,7 +743,7 @@ gl_waitqueue_add (gl_waitqueue_t *wq)
 }
 
 /* Notifies the first thread from a wait queue and dequeues it.  */
-static inline void
+static void
 gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 {
   SetEvent (wq->array[wq->offset + 0]);
@@ -754,7 +754,7 @@ gl_waitqueue_notify_first (gl_waitqueue_t *wq)
 }
 
 /* Notifies all threads from a wait queue and dequeues them all.  */
-static inline void
+static void
 gl_waitqueue_notify_all (gl_waitqueue_t *wq)
 {
   unsigned int i;
index 6782d49..d20bbde 100644 (file)
@@ -1,5 +1,5 @@
 /* Locking in multithreaded situations.
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
index 946268e..b447657 100644 (file)
@@ -1,5 +1,5 @@
 /* Multithreading primitives.
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
index 5ad6766..0ec586c 100644 (file)
@@ -1,6 +1,6 @@
 ## DO NOT EDIT! GENERATED AUTOMATICALLY!
 ## Process this file with automake to produce Makefile.in.
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # 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
@@ -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 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
+# 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 getline 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
@@ -73,13 +73,13 @@ EXTRA_DIST += argmatch.h
 
 ## begin gnulib module binary-io
 
-libbison_a_SOURCES += binary-io.h
+libbison_a_SOURCES += binary-io.h binary-io.c
 
 ## end   gnulib module binary-io
 
 ## begin gnulib module bitrotate
 
-libbison_a_SOURCES += bitrotate.h
+libbison_a_SOURCES += bitrotate.h bitrotate.c
 
 ## end   gnulib module bitrotate
 
@@ -460,6 +460,15 @@ EXTRA_DIST += $(top_srcdir)/build-aux/gendocs.sh
 
 ## end   gnulib module gendocs
 
+## begin gnulib module getdelim
+
+
+EXTRA_DIST += getdelim.c
+
+EXTRA_libbison_a_SOURCES += getdelim.c
+
+## end   gnulib module getdelim
+
 ## begin gnulib module getdtablesize
 
 
@@ -469,6 +478,15 @@ EXTRA_libbison_a_SOURCES += getdtablesize.c
 
 ## end   gnulib module getdtablesize
 
+## begin gnulib module getline
+
+
+EXTRA_DIST += getline.c
+
+EXTRA_libbison_a_SOURCES += getline.c
+
+## end   gnulib module getline
+
 ## begin gnulib module getopt-posix
 
 BUILT_SOURCES += $(GETOPT_H)
@@ -543,7 +561,7 @@ EXTRA_DIST += $(top_srcdir)/build-aux/gnu-web-doc-update
 
 distclean-local: clean-GNUmakefile
 clean-GNUmakefile:
-       test x'$(VPATH)' != x && rm -f $(top_builddir)/GNUmakefile || :
+       test '$(srcdir)' = . || rm -f $(top_builddir)/GNUmakefile
 
 EXTRA_DIST += $(top_srcdir)/GNUmakefile
 
@@ -815,6 +833,7 @@ EXTRA_libbison_a_SOURCES += malloc.c
 ## begin gnulib module math
 
 BUILT_SOURCES += math.h
+libbison_a_SOURCES += math.c
 
 # We need the following in order to create <math.h> when the system
 # doesn't have one that works with the given compiler.
@@ -1141,7 +1160,7 @@ libbison_a_SOURCES += mbswidth.h mbswidth.c
 
 ## begin gnulib module mbuiter
 
-libbison_a_SOURCES += mbuiter.h
+libbison_a_SOURCES += mbuiter.h mbuiter.c
 
 ## end   gnulib module mbuiter
 
@@ -1440,6 +1459,7 @@ EXTRA_DIST += sched.in.h
 
 ## begin gnulib module sigaction
 
+libbison_a_SOURCES += sig-handler.c
 
 EXTRA_DIST += sig-handler.h sigaction.c
 
@@ -1951,6 +1971,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's/@''GNULIB_REALLOC_POSIX''@/$(GNULIB_REALLOC_POSIX)/g' \
              -e 's/@''GNULIB_REALPATH''@/$(GNULIB_REALPATH)/g' \
              -e 's/@''GNULIB_RPMATCH''@/$(GNULIB_RPMATCH)/g' \
+             -e 's/@''GNULIB_SECURE_GETENV''@/$(GNULIB_SECURE_GETENV)/g' \
              -e 's/@''GNULIB_SETENV''@/$(GNULIB_SETENV)/g' \
              -e 's/@''GNULIB_STRTOD''@/$(GNULIB_STRTOD)/g' \
              -e 's/@''GNULIB_STRTOLL''@/$(GNULIB_STRTOLL)/g' \
@@ -1979,6 +2000,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's|@''HAVE_RANDOM_R''@|$(HAVE_RANDOM_R)|g' \
              -e 's|@''HAVE_REALPATH''@|$(HAVE_REALPATH)|g' \
              -e 's|@''HAVE_RPMATCH''@|$(HAVE_RPMATCH)|g' \
+             -e 's|@''HAVE_SECURE_GETENV''@|$(HAVE_SECURE_GETENV)|g' \
              -e 's|@''HAVE_DECL_SETENV''@|$(HAVE_DECL_SETENV)|g' \
              -e 's|@''HAVE_STRTOD''@|$(HAVE_STRTOD)|g' \
              -e 's|@''HAVE_STRTOLL''@|$(HAVE_STRTOLL)|g' \
@@ -1992,6 +2014,7 @@ stdlib.h: stdlib.in.h $(top_builddir)/config.status $(CXXDEFS_H) \
              -e 's|@''REPLACE_MALLOC''@|$(REPLACE_MALLOC)|g' \
              -e 's|@''REPLACE_MBTOWC''@|$(REPLACE_MBTOWC)|g' \
              -e 's|@''REPLACE_MKSTEMP''@|$(REPLACE_MKSTEMP)|g' \
+             -e 's|@''REPLACE_PTSNAME''@|$(REPLACE_PTSNAME)|g' \
              -e 's|@''REPLACE_PTSNAME_R''@|$(REPLACE_PTSNAME_R)|g' \
              -e 's|@''REPLACE_PUTENV''@|$(REPLACE_PUTENV)|g' \
              -e 's|@''REPLACE_RANDOM_R''@|$(REPLACE_RANDOM_R)|g' \
@@ -2384,6 +2407,7 @@ EXTRA_DIST += time.in.h
 ## begin gnulib module unistd
 
 BUILT_SOURCES += unistd.h
+libbison_a_SOURCES += unistd.c
 
 # We need the following in order to create an empty placeholder for
 # <unistd.h> when the system doesn't have one.
@@ -2800,6 +2824,7 @@ EXTRA_DIST += wchar.in.h
 ## begin gnulib module wctype-h
 
 BUILT_SOURCES += wctype.h
+libbison_a_SOURCES += wctype-h.c
 
 # We need the following in order to create <wctype.h> when the system
 # doesn't have one that works with the given compiler.
@@ -2877,7 +2902,7 @@ EXTRA_libbison_a_SOURCES += xmemdup0.c
 
 ## begin gnulib module xsize
 
-libbison_a_SOURCES += xsize.h
+libbison_a_SOURCES += xsize.h xsize.c
 
 ## end   gnulib module xsize
 
index 1933057..685928e 100644 (file)
@@ -1,6 +1,6 @@
 /* hash - hashing table processing.
 
-   Copyright (C) 1998-2004, 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-2004, 2006-2007, 2009-2013 Free Software Foundation, Inc.
 
    Written by Jim Meyering, 1992.
 
index 06e303b..bcd0d1d 100644 (file)
@@ -1,5 +1,5 @@
 /* hash - hashing table processing.
-   Copyright (C) 1998-1999, 2001, 2003, 2009-2012 Free Software Foundation,
+   Copyright (C) 1998-1999, 2001, 2003, 2009-2013 Free Software Foundation,
    Inc.
    Written by Jim Meyering <meyering@ascend.com>, 1998.
 
index 2485c78..b473052 100644 (file)
@@ -1,6 +1,6 @@
 /* intprops.h -- properties of integer types
 
-   Copyright (C) 2001-2005, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2005, 2009-2013 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
index b9da2b5..1893f55 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2006-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2006-2013 Free Software Foundation, Inc.
    Written by Paul Eggert, Bruno Haible, Derek Price.
    This file is part of gnulib.
 
index a5a7d92..d95e4ba 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 56fb270..8a84ff8 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index ef815f3..cbad17b 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index 9d550e0..dc43863 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 0816704..946cb69 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 58d963d..18eb803 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 597ac2a..9d9d84b 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for NaN that does not need libm.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index f18de99..613ef63 100644 (file)
@@ -1,5 +1,5 @@
 /* Test wide character for being blank.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index 95ff7e1..9aabc7e 100644 (file)
@@ -1,5 +1,5 @@
 /* Replacement for 'int' to 'long double' conversion routine.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2011.
 
    This program is free software: you can redistribute it and/or modify
index aa19f45..5af5fcc 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support link list bitsets.
 
-   Copyright (C) 2002-2004, 2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002-2004, 2006, 2009-2013 Free Software Foundation,
    Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
index 79804da..8ccaca7 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support lbitsets.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index a6cfff9..f560053 100644 (file)
@@ -1,7 +1,7 @@
 /* Emulation for ldexpl.
    Contributed by Paolo Bonzini
 
-   Copyright 2002-2003, 2007-2012 Free Software Foundation, Inc.
+   Copyright 2002-2003, 2007-2013 Free Software Foundation, Inc.
 
    This file is part of gnulib.
 
index ad7b358..2ae5cf1 100644 (file)
@@ -1,6 +1,6 @@
 /* Fake libiberty.h for Bison.
 
-   Copyright (C) 2002-2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2004, 2009-2013 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
index b5ee2d6..953cc1e 100644 (file)
@@ -1,6 +1,6 @@
 /* Determine a canonical name for the current locale's character encoding.
 
-   Copyright (C) 2000-2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2006, 2008-2013 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
@@ -542,5 +542,12 @@ locale_charset (void)
   if (codeset[0] == '\0')
     codeset = "ASCII";
 
+#ifdef DARWIN7
+  /* Mac OS X sets MB_CUR_MAX to 1 when LC_ALL=C, and "UTF-8"
+     (the default codeset) does not work when MB_CUR_MAX is 1.  */
+  if (strcmp (codeset, "UTF-8") == 0 && MB_CUR_MAX <= 1)
+    codeset = "ASCII";
+#endif
+
   return codeset;
 }
index 39dc593..c209829 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine a canonical name for the current locale's character encoding.
-   Copyright (C) 2000-2003, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2003, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU CHARSET Library.
 
    This program is free software; you can redistribute it and/or modify
index 7996c7f..3657851 100644 (file)
@@ -1,6 +1,6 @@
 /* Yacc library main function.
 
-   Copyright (C) 2002, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index e0d5c89..908735d 100644 (file)
@@ -1,6 +1,6 @@
 /* malloc() function that is glibc compatible.
 
-   Copyright (C) 1997-1998, 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1997-1998, 2006-2007, 2009-2013 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
diff --git a/lib/math.c b/lib/math.c
new file mode 100644 (file)
index 0000000..ddb2ded
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define _GL_MATH_INLINE _GL_EXTERN_INLINE
+#include "math.h"
index 0625777..7189819 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <math.h>.
 
-   Copyright (C) 2002-2003, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2003, 2007-2013 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
 #ifndef _@GUARD_PREFIX@_MATH_H
 #define _@GUARD_PREFIX@_MATH_H
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_MATH_INLINE
+# define _GL_MATH_INLINE _GL_INLINE
+#endif
 
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
@@ -78,17 +82,17 @@ func (long double l)                                                \
    classification macros with an argument of real-floating (that is,
    one of float, double, or long double).  */
 #define _GL_WARN_REAL_FLOATING_DECL(func) \
-static inline int                                                   \
+_GL_MATH_INLINE int                                                 \
 rpl_ ## func ## f (float f)                                         \
 {                                                                   \
   return func (f);                                                  \
 }                                                                   \
-static inline int                                                   \
+_GL_MATH_INLINE int                                                 \
 rpl_ ## func ## d (double d)                                        \
 {                                                                   \
   return func (d);                                                  \
 }                                                                   \
-static inline int                                                   \
+_GL_MATH_INLINE int                                                 \
 rpl_ ## func ## l (long double l)                                   \
 {                                                                   \
   return func (l);                                                  \
@@ -124,7 +128,7 @@ static void (*_gl_math_fix_itold) (long double *, int) = _Qp_itoq;
   /* The Compaq (ex-DEC) C 6.4 compiler and the Microsoft MSVC 9 compiler
      choke on the expression 0.0 / 0.0.  */
 #  if defined __DECC || defined _MSC_VER
-static float
+_GL_MATH_INLINE float
 _NaN ()
 {
   static float zero = 0.0f;
@@ -2265,6 +2269,7 @@ _GL_WARN_REAL_FLOATING_DECL (signbit);
 # endif
 #endif
 
+_GL_INLINE_HEADER_END
 
 #endif /* _@GUARD_PREFIX@_MATH_H */
 #endif /* _@GUARD_PREFIX@_MATH_H */
index 1070951..7482c31 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001, 2006, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2001, 2006, 2009-2013 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
@@ -16,6 +16,8 @@
 
 #include <config.h>
 
+#define MBCHAR_INLINE _GL_EXTERN_INLINE
+
 #include <limits.h>
 
 #include "mbchar.h"
index ccbcb82..327c957 100644 (file)
@@ -1,5 +1,5 @@
 /* Multibyte character data type.
-   Copyright (C) 2001, 2005-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2005-2007, 2009-2013 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
 #include <wchar.h>
 #include <wctype.h>
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef MBCHAR_INLINE
+# define MBCHAR_INLINE _GL_INLINE
+#endif
+
 #define MBCHAR_BUF_SIZE 24
 
 struct mbchar
@@ -235,7 +240,7 @@ typedef struct mbchar mbchar_t;
 /* Unprintable characters appear as a small box of width 1.  */
 #define MB_UNPRINTABLE_WIDTH 1
 
-static inline int
+MBCHAR_INLINE int
 mb_width_aux (wint_t wc)
 {
   int w = wcwidth (wc);
@@ -256,7 +261,7 @@ mb_width_aux (wint_t wc)
    (mbc)->wc = (mbc)->buf[0] = (sc))
 
 /* Copying a character.  */
-static inline void
+MBCHAR_INLINE void
 mb_copy (mbchar_t *new_mbc, const mbchar_t *old_mbc)
 {
   if (old_mbc->ptr == &old_mbc->buf[0])
@@ -304,7 +309,7 @@ mb_copy (mbchar_t *new_mbc, const mbchar_t *old_mbc)
 
 extern const unsigned int is_basic_table[];
 
-static inline bool
+MBCHAR_INLINE bool
 is_basic (char c)
 {
   return (is_basic_table [(unsigned char) c >> 5] >> ((unsigned char) c & 31))
@@ -313,7 +318,7 @@ is_basic (char c)
 
 #else
 
-static inline bool
+MBCHAR_INLINE bool
 is_basic (char c)
 {
   switch (c)
@@ -347,4 +352,6 @@ is_basic (char c)
 
 #endif
 
+_GL_INLINE_HEADER_END
+
 #endif /* _MBCHAR_H */
index e3f354b..5ee44ae 100644 (file)
@@ -1,5 +1,5 @@
 /* Convert multibyte character to wide character.
-   Copyright (C) 1999-2002, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 1999-2002, 2005-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2008.
 
    This program is free software: you can redistribute it and/or modify
index d021d99..d66dae8 100644 (file)
@@ -1,5 +1,5 @@
 /* Searching a string for a character.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2007.
 
    This program is free software: you can redistribute it and/or modify
index 638142e..26fbb7f 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for initial conversion state.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2008.
 
    This program is free software: you can redistribute it and/or modify
index ad39a3b..cf11f09 100644 (file)
@@ -1,5 +1,5 @@
 /* Searching a string for the last occurrence of a character.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2007.
 
    This program is free software: you can redistribute it and/or modify
index d81b5c8..7c2dfce 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine the number of screen columns needed for a string.
-   Copyright (C) 2000-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2013 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
index 690a5a7..e9c0b03 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine the number of screen columns needed for a string.
-   Copyright (C) 2000-2004, 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2004, 2007, 2009-2013 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
diff --git a/lib/mbuiter.c b/lib/mbuiter.c
new file mode 100644 (file)
index 0000000..9167580
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define MBUITER_INLINE _GL_EXTERN_INLINE
+#include "mbuiter.h"
index 44b6173..c5f5fce 100644 (file)
@@ -1,5 +1,5 @@
 /* Iterating through multibyte strings: macros for multi-byte encodings.
-   Copyright (C) 2001, 2005, 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2005, 2007, 2009-2013 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
 #include "mbchar.h"
 #include "strnlen1.h"
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef MBUITER_INLINE
+# define MBUITER_INLINE _GL_INLINE
+#endif
+
 struct mbuiter_multi
 {
   bool in_shift;        /* true if next byte may not be interpreted as ASCII */
@@ -120,7 +125,7 @@ struct mbuiter_multi
         */
 };
 
-static inline void
+MBUITER_INLINE void
 mbuiter_multi_next (struct mbuiter_multi *iter)
 {
   if (iter->next_done)
@@ -181,13 +186,13 @@ mbuiter_multi_next (struct mbuiter_multi *iter)
   iter->next_done = true;
 }
 
-static inline void
+MBUITER_INLINE void
 mbuiter_multi_reloc (struct mbuiter_multi *iter, ptrdiff_t ptrdiff)
 {
   iter->cur.ptr += ptrdiff;
 }
 
-static inline void
+MBUITER_INLINE void
 mbuiter_multi_copy (struct mbuiter_multi *new_iter, const struct mbuiter_multi *old_iter)
 {
   if ((new_iter->in_shift = old_iter->in_shift))
@@ -219,4 +224,6 @@ typedef struct mbuiter_multi mbui_iterator_t;
 /* Copying an iterator.  */
 #define mbui_copy mbuiter_multi_copy
 
+_GL_INLINE_HEADER_END
+
 #endif /* _MBUITER_H */
index b8fb0ef..3db38a9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2012
+/* Copyright (C) 1991, 1993, 1996-1997, 1999-2000, 2003-2004, 2006, 2008-2013
    Free Software Foundation, Inc.
 
    Based on strlen implementation by Torbjorn Granlund (tege@sics.se),
index ba76a7e..72a6b6e 100644 (file)
@@ -1,5 +1,5 @@
 /* Invalid parameter handler for MSVC runtime libraries.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
index eb6930b..dcb0353 100644 (file)
@@ -1,5 +1,5 @@
 /* Invalid parameter handler for MSVC runtime libraries.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
index e5cf181..8d65472 100644 (file)
@@ -1,6 +1,6 @@
 /* Wrappers that don't throw invalid parameter notifications
    with MSVC runtime libraries.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
index 2b71945..5f52181 100644 (file)
@@ -1,6 +1,6 @@
 /* Wrappers that don't throw invalid parameter notifications
    with MSVC runtime libraries.
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
index fc50f1e..d915449 100644 (file)
@@ -1,6 +1,6 @@
 /* obstack.c - subroutines used implicitly by object stack macros
 
-   Copyright (C) 1988-1994, 1996-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1988-1994, 1996-2006, 2009-2013 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
index 6a44b44..159cfa2 100644 (file)
@@ -1,5 +1,5 @@
 /* obstack.h - object stack macros
-   Copyright (C) 1988-1994, 1996-1999, 2003-2006, 2009-2012 Free Software
+   Copyright (C) 1988-1994, 1996-1999, 2003-2006, 2009-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
 
index fba0536..6e34cc1 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to obstacks.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index 27801b9..a0c43ea 100644 (file)
@@ -1,5 +1,5 @@
 /* Open a descriptor to a file.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
@@ -27,7 +27,7 @@
 #include <sys/types.h>
 #undef __need_system_fcntl_h
 
-static inline int
+static int
 orig_open (const char *filename, int flags, mode_t mode)
 {
   return open (filename, flags, mode);
index 03db7cb..a9ddc33 100644 (file)
@@ -1,5 +1,5 @@
 /* Define PATH_MAX somehow.  Requires sys/types.h.
-   Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2012 Free Software
+   Copyright (C) 1992, 1999, 2001, 2003, 2005, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index 4853d1b..ae53201 100644 (file)
@@ -1,5 +1,5 @@
 /* Print a message describing error code.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 Free Software Foundation, Inc.
    Written by Bruno Haible and Simon Josefsson.
 
    This program is free software: you can redistribute it and/or modify
index d6dce5f..f2e0ad6 100644 (file)
@@ -1,5 +1,5 @@
 /* Invoke pipe, but avoid some glitches.
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 981a0ff..e831d0c 100644 (file)
@@ -1,5 +1,5 @@
 /* Invoke pipe2, but avoid some glitches.
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 6203fe5..5925cf9 100644 (file)
@@ -1,5 +1,5 @@
 /* Create a pipe, with specific opening flags.
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
index 47b20dc..c27e6bc 100644 (file)
@@ -1,5 +1,5 @@
 /* Decomposed printf argument list.
-   Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2012 Free Software
+   Copyright (C) 1999, 2002-2003, 2005-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index aa811af..2a9c2a3 100644 (file)
@@ -1,5 +1,5 @@
 /* Decomposed printf argument list.
-   Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2012 Free Software
+   Copyright (C) 1999, 2002-2003, 2006-2007, 2011-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index eb47205..1a7b0c4 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a double into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 985d7d2..3976b73 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a double into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 568d2ff..26987a7 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 341dded..3768b09 100644 (file)
@@ -1,5 +1,5 @@
 /* Split a 'long double' into fraction and mantissa, for hexadecimal printf.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 815fd43..23cacc1 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 1999-2000, 2002-2003, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 1999-2000, 2002-2003, 2006-2013 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
index 577099a..d8474be 100644 (file)
@@ -1,5 +1,5 @@
 /* Parse printf format string.
-   Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2012 Free Software
+   Copyright (C) 1999, 2002-2003, 2005, 2007, 2010-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify
index 11c306b..7f68249 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to a stream.
-   Copyright (C) 2007, 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2010-2013 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
index bdd4dd7..0c195e5 100644 (file)
@@ -1,5 +1,5 @@
 /* Program name management.
-   Copyright (C) 2001-2003, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2005-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
index a75a02e..b4f3c27 100644 (file)
@@ -1,5 +1,5 @@
 /* Program name management.
-   Copyright (C) 2001-2004, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2004, 2006, 2009-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
index b30b166..1679796 100644 (file)
@@ -1,6 +1,6 @@
 /* quote.h - prototypes for quote.c
 
-   Copyright (C) 1998-2001, 2003, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-2001, 2003, 2009-2013 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
 #ifndef QUOTE_H_
 # define QUOTE_H_ 1
 
+# include <stddef.h>
+
 /* The quoting options used by quote_n and quote.  Its type is incomplete,
    so it's useful only in expressions like '&quote_quoting_options'.  */
 extern struct quoting_options quote_quoting_options;
 
-/* Return an unambiguous printable representation of NAME,
-   allocated in slot N, suitable for diagnostics.  */
-char const *quote_n (int n, char const *name);
+/* Return an unambiguous printable representation of ARG (of size
+   ARGSIZE), allocated in slot N, suitable for diagnostics.  If
+   ARGSIZE is SIZE_MAX, use the string length of the argument for
+   ARGSIZE.  */
+char const *quote_n_mem (int n, char const *arg, size_t argsize);
+
+/* Return an unambiguous printable representation of ARG (of size
+   ARGSIZE), suitable for diagnostics.  If ARGSIZE is SIZE_MAX, use
+   the string length of the argument for ARGSIZE.  */
+char const *quote_mem (char const *arg, size_t argsize);
+
+/* Return an unambiguous printable representation of ARG, allocated in
+   slot N, suitable for diagnostics.  */
+char const *quote_n (int n, char const *arg);
 
-/* Return an unambiguous printable representation of NAME,
-   suitable for diagnostics.  */
-char const *quote (char const *name);
+/* Return an unambiguous printable representation of ARG, suitable for
+   diagnostics.  */
+char const *quote (char const *arg);
 
 #endif /* !QUOTE_H_ */
index 1ea583d..57a8382 100644 (file)
@@ -1,6 +1,6 @@
 /* quotearg.c - quote arguments for output
 
-   Copyright (C) 1998-2002, 2004-2012 Free Software Foundation, Inc.
+   Copyright (C) 1998-2002, 2004-2013 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
@@ -929,7 +929,7 @@ quotearg_custom_mem (char const *left_quote, char const *right_quote,
 }
 
 
-/* The quoting option used by quote_n and quote.  */
+/* The quoting option used by the functions of quote.h.  */
 struct quoting_options quote_quoting_options =
   {
     locale_quoting_style,
@@ -939,13 +939,25 @@ struct quoting_options quote_quoting_options =
   };
 
 char const *
-quote_n (int n, char const *name)
+quote_n_mem (int n, char const *arg, size_t argsize)
 {
-  return quotearg_n_options (n, name, SIZE_MAX, &quote_quoting_options);
+  return quotearg_n_options (n, arg, argsize, &quote_quoting_options);
 }
 
 char const *
-quote (char const *name)
+quote_mem (char const *arg, size_t argsize)
 {
-  return quote_n (0, name);
+  return quote_n_mem (0, arg, argsize);
+}
+
+char const *
+quote_n (int n, char const *arg)
+{
+  return quote_n_mem (n, arg, SIZE_MAX);
+}
+
+char const *
+quote (char const *arg)
+{
+  return quote_n (0, arg);
 }
index e6b08ab..58ee3f6 100644 (file)
@@ -1,6 +1,6 @@
 /* quotearg.h - quote arguments for output
 
-   Copyright (C) 1998-2002, 2004, 2006, 2008-2012 Free Software Foundation,
+   Copyright (C) 1998-2002, 2004, 2006, 2008-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
index 7f32b09..5b546d2 100644 (file)
@@ -1,6 +1,6 @@
 /* Provide a non-threads replacement for the POSIX raise function.
 
-   Copyright (C) 2002-2003, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2003, 2005-2006, 2009-2013 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
@@ -32,7 +32,7 @@
 # undef raise
 
 # if HAVE_MSVC_INVALID_PARAMETER_HANDLER
-static inline int
+static int
 raise_nothrow (int sig)
 {
   int result;
index c94a0e1..a0298ce 100644 (file)
@@ -1,5 +1,5 @@
 /* Searching in a string.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index 99556cc..b51010a 100644 (file)
@@ -1,6 +1,6 @@
 /* realloc() function that is glibc compatible.
 
-   Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2012 Free Software
+   Copyright (C) 1997, 2003-2004, 2006-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 4ec043f..112bcdc 100644 (file)
@@ -1,6 +1,6 @@
 # Add this package to a list of references stored in a text file.
 #
-#   Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+#   Copyright (C) 2000, 2009-2013 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
index eb03881..6f73868 100644 (file)
@@ -1,6 +1,6 @@
 # Remove this package from a list of references stored in a text file.
 #
-#   Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+#   Copyright (C) 2000, 2009-2013 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
index 3955f07..731e800 100644 (file)
@@ -1,5 +1,5 @@
 /* Replacement <sched.h> for platforms that lack it.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
diff --git a/lib/sig-handler.c b/lib/sig-handler.c
new file mode 100644 (file)
index 0000000..52c3621
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define SIG_HANDLER_INLINE _GL_EXTERN_INLINE
+#include "sig-handler.h"
index 386135f..ca9f979 100644 (file)
@@ -1,6 +1,6 @@
 /* Convenience declarations when working with <signal.h>.
 
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
 
 #include <signal.h>
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef SIG_HANDLER_INLINE
+# define SIG_HANDLER_INLINE _GL_INLINE
+#endif
+
 /* Convenience type when working with signal handlers.  */
 typedef void (*sa_handler_t) (int);
 
 /* Return the handler of a signal, as a sa_handler_t value regardless
    of its true type.  The resulting function can be compared to
    special values like SIG_IGN but it is not portable to call it.  */
-static inline sa_handler_t
+SIG_HANDLER_INLINE sa_handler_t
 get_handler (struct sigaction const *a)
 {
 #ifdef SA_SIGINFO
@@ -41,4 +46,6 @@ get_handler (struct sigaction const *a)
   return a->sa_handler;
 }
 
+_GL_INLINE_HEADER_END
+
 #endif /* _GL_SIG_HANDLER_H */
index 659c4ec..97eb76d 100644 (file)
@@ -1,5 +1,5 @@
 /* POSIX compatible signal blocking.
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 Free Software Foundation, Inc.
    Written by Eric Blake <ebb9@byu.net>, 2008.
 
    This program is free software: you can redistribute it and/or modify
index 8fb1ad1..5484950 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <signal.h>.
 
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 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
index 7629ff5..7a434f8 100644 (file)
@@ -1,5 +1,5 @@
 /* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index f99f992..f133be5 100644 (file)
@@ -1,5 +1,5 @@
 /* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index 35afcf1..9e1e900 100644 (file)
@@ -1,5 +1,5 @@
 /* signbit() macro: Determine the sign bit of a floating-point number.
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 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
index be53d54..8de3777 100644 (file)
@@ -1,5 +1,5 @@
 /* POSIX compatible signal blocking.
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2006.
 
    This program is free software: you can redistribute it and/or modify
@@ -63,7 +63,7 @@
 typedef void (*handler_t) (int);
 
 #if HAVE_MSVC_INVALID_PARAMETER_HANDLER
-static inline handler_t
+static handler_t
 signal_nothrow (int sig, handler_t handler)
 {
   handler_t result;
index 9642441..5f33124 100644 (file)
@@ -1,5 +1,5 @@
 /* size_max.h -- declare SIZE_MAX through system headers
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
    Written by Simon Josefsson.
 
    This program is free software; you can redistribute it and/or modify
index 3908442..9c4ab3f 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 Free Software Foundation, Inc.
    Written by Simon Josefsson and Paul Eggert.
 
    This program is free software; you can redistribute it and/or modify
index fc7834d..35567d4 100644 (file)
@@ -1,5 +1,5 @@
 /* Creation of subprocesses, communicating via pipes.
-   Copyright (C) 2001-2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2004, 2006-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
@@ -60,7 +60,7 @@
    These functions can return -1/EINTR even though we don't have any
    signal handlers set up, namely when we get interrupted via SIGSTOP.  */
 
-static inline int
+static int
 nonintr_close (int fd)
 {
   int retval;
@@ -73,7 +73,8 @@ nonintr_close (int fd)
 }
 #define close nonintr_close
 
-static inline int
+#if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
+static int
 nonintr_open (const char *pathname, int oflag, mode_t mode)
 {
   int retval;
@@ -84,8 +85,9 @@ nonintr_open (const char *pathname, int oflag, mode_t mode)
 
   return retval;
 }
-#undef open /* avoid warning on VMS */
-#define open nonintr_open
+# undef open /* avoid warning on VMS */
+# define open nonintr_open
+#endif
 
 #endif
 
index ea8ae8f..ea8284f 100644 (file)
@@ -1,5 +1,5 @@
 /* Creation of subprocesses, communicating via pipes.
-   Copyright (C) 2001-2003, 2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2006, 2008-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
index 0f25d17..bca2998 100644 (file)
@@ -1,5 +1,5 @@
 /* Definitions for POSIX spawn interface.
-   Copyright (C) 2000, 2003-2004, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2003-2004, 2008-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 8326bbb..86a9aba 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 08daa52..56ff1ec 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index d13fc2c..8aaeca6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 774d3d9..942733d 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 373c7da..cf1d0a6 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index f85c6f7..f22a659 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2008-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2008-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 6025ee4..ec6c7cf 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 7451b4e..b050fb4 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 0def40a..babbb19 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2004, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2004, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 7f8e61c..8aa6da9 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 649a4b9..17b903f 100644 (file)
@@ -1,5 +1,5 @@
 /* Guts of POSIX spawn interface.  Generic POSIX.1 version.
-   Copyright (C) 2000-2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2006, 2008-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 25493eb..8bc5f99 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 68c9762..9f24cd7 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 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
index 7599540..f888130 100644 (file)
@@ -1,5 +1,5 @@
 /* Work around platform bugs in stat.
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
@@ -42,7 +42,7 @@
 # endif
 #endif
 
-static inline int
+static int
 orig_stat (const char *filename, struct stat *buf)
 {
   return stat (filename, buf);
index ed1f9aa..7c15772 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2003, 2006-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2003, 2006-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software; you can redistribute it and/or modify
 # undef true
 #endif
 
-/* For the sake of symbolic names in gdb, we define true and false as
-   enum constants, not only as macros.
-   It is tempting to write
-      typedef enum { false = 0, true = 1 } _Bool;
-   so that gdb prints values of type 'bool' symbolically. But if we do
-   this, values of type '_Bool' may promote to 'int' or 'unsigned int'
-   (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
-   (see ISO C 99 6.3.1.1.(2)).  So we add a negative value to the
-   enum; this ensures that '_Bool' promotes to 'int'.  */
-#if defined __cplusplus || (defined __BEOS__ && !defined __HAIKU__)
+#ifdef __cplusplus
+# define _Bool bool
+# define bool bool
+#else
+# if defined __BEOS__ && !defined __HAIKU__
   /* A compiler known to have 'bool'.  */
   /* If the compiler already has both 'bool' and '_Bool', we can assume they
      are the same types.  */
-# if !@HAVE__BOOL@
+#  if !@HAVE__BOOL@
 typedef bool _Bool;
-# endif
-#else
-# if !defined __GNUC__
+#  endif
+# else
+#  if !defined __GNUC__
    /* If @HAVE__BOOL@:
         Some HP-UX cc and AIX IBM C compiler versions have compiler bugs when
         the built-in _Bool type is used.  See
@@ -103,19 +98,35 @@ typedef bool _Bool;
           "Invalid enumerator. (badenum)" with HP-UX cc on Tru64.
         The only benefit of the enum, debuggability, is not important
         with these compilers.  So use 'signed char' and no enum.  */
-#  define _Bool signed char
-# else
+#   define _Bool signed char
+#  else
    /* With this compiler, trust the _Bool type if the compiler has it.  */
-#  if !@HAVE__BOOL@
+#   if !@HAVE__BOOL@
+   /* For the sake of symbolic names in gdb, define true and false as
+      enum constants, not only as macros.
+      It is tempting to write
+         typedef enum { false = 0, true = 1 } _Bool;
+      so that gdb prints values of type 'bool' symbolically.  But then
+      values of type '_Bool' might promote to 'int' or 'unsigned int'
+      (see ISO C 99 6.7.2.2.(4)); however, '_Bool' must promote to 'int'
+      (see ISO C 99 6.3.1.1.(2)).  So add a negative value to the
+      enum; this ensures that '_Bool' promotes to 'int'.  */
 typedef enum { _Bool_must_promote_to_int = -1, false = 0, true = 1 } _Bool;
+#   endif
 #  endif
 # endif
+# define bool _Bool
 #endif
-#define bool _Bool
 
 /* The other macros must be usable in preprocessor directives.  */
-#define false 0
-#define true 1
+#ifdef __cplusplus
+# define false false
+# define true true
+#else
+# define false 0
+# define true 1
+#endif
+
 #define __bool_true_false_are_defined 1
 
 #endif /* _GL_STDBOOL_H */
index 17fcaea..40f0536 100644 (file)
@@ -1,6 +1,6 @@
 /* A substitute for POSIX 2008 <stddef.h>, for platforms that have issues.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 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
index e2a0eb1..2db8b2e 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 2001-2002, 2004-2012 Free Software Foundation, Inc.
+/* Copyright (C) 2001-2002, 2004-2013 Free Software Foundation, Inc.
    Written by Paul Eggert, Bruno Haible, Sam Steingold, Peter Burwood.
    This file is part of gnulib.
 
@@ -39,7 +39,7 @@
    Ideally we should test __BIONIC__ here, but it is only defined after
    <sys/cdefs.h> has been included; hence test __ANDROID__ instead.  */
 #if defined __ANDROID__ \
-    && defined _SYS_TYPES_H_ && !defined _SSIZE_T_DEFINED_
+    && defined _SYS_TYPES_H_ && !defined __need_size_t
 # @INCLUDE_NEXT@ @NEXT_STDINT_H@
 #else
 
index 307fbde..fe6d83e 100644 (file)
@@ -1,6 +1,6 @@
 /* Like stdio.h, but redefine some names to avoid glitches.
 
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 920b4d4..e00600a 100644 (file)
@@ -1,5 +1,5 @@
 /* Implementation details of FILE streams.
-   Copyright (C) 2007-2008, 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2008, 2010-2013 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
index ac8a450..7b67ae0 100644 (file)
@@ -1,6 +1,6 @@
 /* Invoke stdio functions, but avoid some glitches.
 
-   Copyright (C) 2001, 2003, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2006, 2009-2013 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
index b1b543d..d6af99c 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <stdio.h>.
 
-   Copyright (C) 2004, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2007-2013 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
@@ -575,21 +575,17 @@ _GL_CXXALIAS_RPL (fwrite, size_t,
 _GL_CXXALIAS_SYS (fwrite, size_t,
                   (const void *ptr, size_t s, size_t n, FILE *stream));
 
-/* Work around glibc bug 11959
+/* Work around bug 11959 when fortifying glibc 2.4 through 2.15
    <http://sources.redhat.com/bugzilla/show_bug.cgi?id=11959>,
    which sometimes causes an unwanted diagnostic for fwrite calls.
-   This affects only function declaration attributes, so it's not
-   needed for C++.  */
-#  if !defined __cplusplus && 0 < __USE_FORTIFY_LEVEL
-static inline size_t _GL_ARG_NONNULL ((1, 4))
-rpl_fwrite (const void *ptr, size_t s, size_t n, FILE *stream)
-{
-  size_t r = fwrite (ptr, s, n, stream);
-  (void) r;
-  return r;
-}
+   This affects only function declaration attributes under certain
+   versions of gcc, and is not needed for C++.  */
+#  if (0 < __USE_FORTIFY_LEVEL                                          \
+       && __GLIBC__ == 2 && 4 <= __GLIBC_MINOR__ && __GLIBC_MINOR__ <= 15 \
+       && 3 < __GNUC__ + (4 <= __GNUC_MINOR__)                          \
+       && !defined __cplusplus)
 #   undef fwrite
-#   define fwrite rpl_fwrite
+#   define fwrite(a, b, c, d) ({size_t __r = fwrite (a, b, c, d); __r; })
 #  endif
 # endif
 _GL_CXXALIASWARN (fwrite);
@@ -1333,7 +1329,6 @@ _GL_WARN_ON_USE (vsprintf, "vsprintf is not always POSIX compliant - "
                       "POSIX compliance");
 #endif
 
-
 #endif /* _@GUARD_PREFIX@_STDIO_H */
 #endif /* _@GUARD_PREFIX@_STDIO_H */
 #endif
index 1d67ec6..c955248 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <stdlib.h>.
 
-   Copyright (C) 1995, 2001-2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 1995, 2001-2004, 2006-2013 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
@@ -20,8 +20,9 @@
 #endif
 @PRAGMA_COLUMNS@
 
-#if defined __need_malloc_and_calloc
-/* Special invocation convention inside glibc header files.  */
+#if defined __need_system_stdlib_h || defined __need_malloc_and_calloc
+/* Special invocation conventions inside some gnulib header files,
+   and inside some glibc header files, respectively.  */
 
 #@INCLUDE_NEXT@ @NEXT_STDLIB_H@
 
@@ -457,10 +458,19 @@ _GL_WARN_ON_USE (posix_openpt, "posix_openpt is not portable - "
 #if @GNULIB_PTSNAME@
 /* Return the pathname of the pseudo-terminal slave associated with
    the master FD is open on, or NULL on errors.  */
-# if !@HAVE_PTSNAME@
+# if @REPLACE_PTSNAME@
+#  if !(defined __cplusplus && defined GNULIB_NAMESPACE)
+#   undef ptsname
+#   define ptsname rpl_ptsname
+#  endif
+_GL_FUNCDECL_RPL (ptsname, char *, (int fd));
+_GL_CXXALIAS_RPL (ptsname, char *, (int fd));
+# else
+#  if !@HAVE_PTSNAME@
 _GL_FUNCDECL_SYS (ptsname, char *, (int fd));
-# endif
+#  endif
 _GL_CXXALIAS_SYS (ptsname, char *, (int fd));
+# endif
 _GL_CXXALIASWARN (ptsname);
 #elif defined GNULIB_POSIXCHECK
 # undef ptsname
@@ -757,6 +767,22 @@ _GL_WARN_ON_USE (rpmatch, "rpmatch is unportable - "
 # endif
 #endif
 
+#if @GNULIB_SECURE_GETENV@
+/* Look up NAME in the environment, returning 0 in insecure situations.  */
+# if !@HAVE_SECURE_GETENV@
+_GL_FUNCDECL_SYS (secure_getenv, char *,
+                  (char const *name) _GL_ARG_NONNULL ((1)));
+# endif
+_GL_CXXALIAS_SYS (secure_getenv, char *, (char const *name));
+_GL_CXXALIASWARN (secure_getenv);
+#elif defined GNULIB_POSIXCHECK
+# undef secure_getenv
+# if HAVE_RAW_DECL_SECURE_GETENV
+_GL_WARN_ON_USE (secure_getenv, "secure_getenv is unportable - "
+                 "use gnulib module secure_getenv for portability");
+# endif
+#endif
+
 #if @GNULIB_SETENV@
 /* Set NAME to VALUE in the environment.
    If REPLACE is nonzero, overwrite an existing value.  */
index e857abe..8d7dfb0 100644 (file)
@@ -1,5 +1,5 @@
 /* stpcpy.c -- copy a string and return pointer to end of new string
-   Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2012 Free Software
+   Copyright (C) 1992, 1995, 1997-1998, 2006, 2009-2013 Free Software
    Foundation, Inc.
 
    NOTE: The canonical source of this file is maintained with the GNU C Library.
index 1be4249..f6b0722 100644 (file)
@@ -1,5 +1,5 @@
 /* Searching in a string.
-   Copyright (C) 2003, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2007-2013 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
index a3f8c86..5826ab0 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2012 Free Software
+/* Copyright (C) 1991, 1996-1998, 2002-2004, 2006-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of the GNU C Library.
index b312f7f..12c1867 100644 (file)
@@ -1,5 +1,5 @@
 /* Optimized string comparison.
-   Copyright (C) 2001-2002, 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2007, 2009-2013 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
index 9f55cfa..d0ed2fb 100644 (file)
@@ -1,6 +1,6 @@
 /* strerror-override.c --- POSIX compatible system error routine
 
-   Copyright (C) 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 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
@@ -291,6 +291,11 @@ strerror_override (int errnum)
       return "State not recoverable";
 #endif
 
+#if GNULIB_defined_EILSEQ
+    case EILSEQ:
+      return "Invalid or incomplete multibyte or wide character";
+#endif
+
     default:
       return NULL;
     }
index fe1fb2c..3b8f24b 100644 (file)
@@ -1,6 +1,6 @@
 /* strerror-override.h --- POSIX compatible system error routine
 
-   Copyright (C) 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 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
@@ -46,7 +46,8 @@
      || GNULIB_defined_EDQUOT \
      || GNULIB_defined_ECANCELED \
      || GNULIB_defined_EOWNERDEAD \
-     || GNULIB_defined_ENOTRECOVERABLE
+     || GNULIB_defined_ENOTRECOVERABLE \
+     || GNULIB_defined_EILSEQ
 extern const char *strerror_override (int errnum);
 # else
 #  define strerror_override(ignored) NULL
index 587bd21..80a2f2e 100644 (file)
@@ -1,6 +1,6 @@
 /* strerror.c --- POSIX compatible system error routine
 
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 76f6fc6..e86d272 100644 (file)
@@ -1,6 +1,6 @@
 /* strerror_r.c --- POSIX compatible system error routine
 
-   Copyright (C) 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2010-2013 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
index f8d7520..d7a6c9c 100644 (file)
@@ -1,6 +1,6 @@
 /* A GNU-like <string.h>.
 
-   Copyright (C) 1995-1996, 2001-2012 Free Software Foundation, Inc.
+   Copyright (C) 1995-1996, 2001-2013 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
index ef458c6..0e452a9 100644 (file)
@@ -1,6 +1,6 @@
 /* stripslash.c -- remove redundant trailing slashes from a file name
 
-   Copyright (C) 1990, 2001, 2003-2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 1990, 2001, 2003-2006, 2009-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
index 4053871..e60268b 100644 (file)
@@ -1,6 +1,6 @@
 /* A replacement function, for systems that lack strndup.
 
-   Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2012 Free Software
+   Copyright (C) 1996-1998, 2001-2003, 2005-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software; you can redistribute it and/or modify it
index d36180d..57fdfe7 100644 (file)
@@ -1,5 +1,5 @@
 /* Find the length of STRING, but scan at most MAXLEN characters.
-   Copyright (C) 2005-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
    Written by Simon Josefsson.
 
    This program is free software; you can redistribute it and/or modify
index 52dc507..0c22d21 100644 (file)
@@ -1,5 +1,5 @@
 /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 4c4f0c0..7c65e31 100644 (file)
@@ -1,5 +1,5 @@
 /* Find the length of STRING + 1, but scan at most MAXLEN bytes.
-   Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2009-2013 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
index bf992a8..379eda8 100644 (file)
@@ -1,6 +1,6 @@
 /* Convert string representation of a number into an integer value.
 
-   Copyright (C) 1991-1992, 1994-1999, 2003, 2005-2007, 2009-2012 Free Software
+   Copyright (C) 1991-1992, 1994-1999, 2003, 2005-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    NOTE: The canonical source of this file is maintained with the GNU C
index e99da41..a0ca376 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1991, 1997, 2009-2012 Free Software Foundation, Inc.
+/* Copyright (C) 1991, 1997, 2009-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
index 490773d..db4f1ed 100644 (file)
@@ -1,5 +1,5 @@
 /* Compare strings while treating digits characters numerically.
-   Copyright (C) 1997, 2000, 2002, 2004, 2006, 2009-2012 Free Software
+   Copyright (C) 1997, 2000, 2002, 2004, 2006, 2009-2013 Free Software
    Foundation, Inc.
    This file is part of the GNU C Library.
    Contributed by Jean-François Bignolles <bignolle@ecoledoc.ibp.fr>, 1997.
index 2efc1e9..acc3694 100644 (file)
@@ -1,5 +1,5 @@
 /* Provide a more complete sys/stat header file.
-   Copyright (C) 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2013 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
 # endif
 #endif
 
+#ifndef S_ISMPX /* AIX */
+# define S_ISMPX(m) 0
+#endif
+
 #ifndef S_ISNAM /* Xenix */
 # ifdef S_IFNAM
 #  define S_ISNAM(m) (((m) & S_IFMT) == S_IFNAM)
@@ -497,7 +501,7 @@ _GL_CXXALIAS_RPL (mkdir, int, (char const *name, mode_t mode));
 # if (defined _WIN32 || defined __WIN32__) && ! defined __CYGWIN__
 
 #  if !GNULIB_defined_rpl_mkdir
-static inline int
+static int
 rpl_mkdir (char const *name, mode_t mode)
 {
   return _mkdir (name);
index 8139d98..d7da356 100644 (file)
@@ -1,6 +1,6 @@
 /* Provide a more complete sys/types.h.
 
-   Copyright (C) 2011-2012 Free Software Foundation, Inc.
+   Copyright (C) 2011-2013 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
index 9264ebb..bd97d61 100644 (file)
@@ -1,5 +1,5 @@
 /* A POSIX-like <sys/wait.h>.
-   Copyright (C) 2001-2003, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2005-2013 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
index 04cde05..8ced794 100644 (file)
@@ -1,6 +1,6 @@
 /* A more-standard <time.h>.
 
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
index 355ecb5..c257c32 100644 (file)
@@ -1,6 +1,6 @@
 /* Timing variables for measuring compiler performance.
 
-   Copyright (C) 2000, 2002, 2004, 2006, 2009-2012 Free Software
+   Copyright (C) 2000, 2002, 2004, 2006, 2009-2013 Free Software
    Foundation, Inc.
 
    Contributed by Alex Samuel <samuel@codesourcery.com>
index 1143e99..484fe35 100644 (file)
@@ -1,7 +1,7 @@
 /* This file contains the definitions for timing variables used to -*- C -*-
    measure run-time performance of the compiler.
 
-   Copyright (C) 2002, 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2007, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Akim Demaille <akim@freefriends.org>.
 
index a28b4cf..c418090 100644 (file)
@@ -1,6 +1,6 @@
 /* Timing variables for measuring compiler performance.
 
-   Copyright (C) 2000, 2002, 2004, 2009-2012 Free Software Foundation,
+   Copyright (C) 2000, 2002, 2004, 2009-2013 Free Software Foundation,
    Inc.
 
    Contributed by Alex Samuel <samuel@codesourcery.com>
index 78b9e4a..ac2de1c 100644 (file)
@@ -1,6 +1,6 @@
 /* Like unistd.h, but redefine some names to avoid glitches.
 
-   Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005, 2009-2013 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
index 684bf79..5c2b55a 100644 (file)
@@ -1,6 +1,6 @@
 /* Invoke unistd-like functions, but avoid some glitches.
 
-   Copyright (C) 2001, 2003, 2005, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003, 2005, 2009-2013 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
diff --git a/lib/unistd.c b/lib/unistd.c
new file mode 100644 (file)
index 0000000..6c6a8e2
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define _GL_UNISTD_INLINE _GL_EXTERN_INLINE
+#include "unistd.h"
index e904e51..2ea9af4 100644 (file)
@@ -1,5 +1,5 @@
 /* Substitute for and wrapper around <unistd.h>.
-   Copyright (C) 2003-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003-2013 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
    You should have received a copy of the GNU General Public License
    along with this program; if not, see <http://www.gnu.org/licenses/>.  */
 
+#ifndef _@GUARD_PREFIX@_UNISTD_H
+
 #if __GNUC__ >= 3
 @PRAGMA_SYSTEM_HEADER@
 #endif
 @PRAGMA_COLUMNS@
 
-/* Special invocation convention:
-   - On mingw, several headers, including <winsock2.h>, include <unistd.h>,
-     but we need to ensure that both the system <unistd.h> and <winsock2.h>
-     are completely included before we replace gethostname.  */
-#if @GNULIB_GETHOSTNAME@ && @UNISTD_H_HAVE_WINSOCK2_H@ \
-  && !defined _GL_WINSOCK2_H_WITNESS && defined _WINSOCK2_H
-/* <unistd.h> is being indirectly included for the first time from
-   <winsock2.h>; avoid declaring any overrides.  */
-# if @HAVE_UNISTD_H@
-#  @INCLUDE_NEXT@ @NEXT_UNISTD_H@
-# else
-#  error unexpected; report this to bug-gnulib@gnu.org
-# endif
-# define _GL_WINSOCK2_H_WITNESS
-
-/* Normal invocation.  */
-#elif !defined _@GUARD_PREFIX@_UNISTD_H
-
 /* The include_next requires a split double-inclusion guard.  */
 #if @HAVE_UNISTD_H@
 # @INCLUDE_NEXT@ @NEXT_UNISTD_H@
 /* mingw, MSVC, BeOS, Haiku declare environ in <stdlib.h>, not in
    <unistd.h>.  */
 /* Solaris declares getcwd not only in <unistd.h> but also in <stdlib.h>.  */
+/* OSF Tru64 Unix cannot see gnulib rpl_strtod when system <stdlib.h> is
+   included here.  */
 /* But avoid namespace pollution on glibc systems.  */
-#ifndef __GLIBC__
+#if !defined __GLIBC__ && !defined __osf__
+# define __need_system_stdlib_h
 # include <stdlib.h>
+# undef __need_system_stdlib_h
 #endif
 
 /* Native Windows platforms declare chdir, getcwd, rmdir in
 /* Get getopt(), optarg, optind, opterr, optopt.
    But avoid namespace pollution on glibc systems.  */
 #if @GNULIB_UNISTD_H_GETOPT@ && !defined __GLIBC__ && !defined _GL_SYSTEM_GETOPT
+# define __need_getopt
 # include <getopt.h>
 #endif
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_UNISTD_INLINE
+# define _GL_UNISTD_INLINE _GL_INLINE
+#endif
+
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
 /* The definition of _GL_ARG_NONNULL is copied here.  */
@@ -404,7 +398,7 @@ extern char **environ;
 # endif
 #elif defined GNULIB_POSIXCHECK
 # if HAVE_RAW_DECL_ENVIRON
-static inline char ***
+_GL_UNISTD_INLINE char ***
 rpl_environ (void)
 {
   return &environ;
@@ -862,7 +856,7 @@ _GL_CXXALIAS_RPL (getpagesize, int, (void));
 #     define getpagesize() _gl_getpagesize ()
 #    else
 #     if !GNULIB_defined_getpagesize_function
-static inline int
+_GL_UNISTD_INLINE int
 getpagesize ()
 {
   return _gl_getpagesize ();
@@ -1530,6 +1524,7 @@ _GL_CXXALIAS_SYS_CAST (write, ssize_t, (int fd, const void *buf, size_t count));
 _GL_CXXALIASWARN (write);
 #endif
 
+_GL_INLINE_HEADER_END
 
 #endif /* _@GUARD_PREFIX@_UNISTD_H */
 #endif /* _@GUARD_PREFIX@_UNISTD_H */
index e642b7a..06eef05 100644 (file)
@@ -1,5 +1,5 @@
 /* Elementary types and macros for the GNU UniString library.
-   Copyright (C) 2002, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005-2006, 2009-2013 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
index b90ce19..8931cc9 100644 (file)
@@ -1,5 +1,5 @@
 /* Display width functions.
-   Copyright (C) 2001-2002, 2005, 2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2001-2002, 2005, 2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify it
index d75c94f..11b14df 100644 (file)
@@ -1,5 +1,5 @@
 /* Test for CJK encoding.
-   Copyright (C) 2001-2002, 2005-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2005-2007, 2009-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2002.
 
    This program is free software: you can redistribute it and/or modify it
index b6e2c33..173d087 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine display width of Unicode character.
-   Copyright (C) 2001-2002, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2002, 2006-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2002.
 
    This program is free software: you can redistribute it and/or modify it
index 65bfbc4..df3e139 100644 (file)
@@ -1,6 +1,6 @@
 /* Prefer faster, non-thread-safe stdio functions if available.
 
-   Copyright (C) 2001-2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2004, 2009-2013 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
index ddbe9a4..c58c82f 100644 (file)
@@ -1,4 +1,4 @@
-/* Copyright (C) 1992, 1995-2002, 2005-2012 Free Software Foundation, Inc.
+/* Copyright (C) 1992, 1995-2002, 2005-2013 Free Software Foundation, Inc.
    This file is part of the GNU C Library.
 
    This program is free software: you can redistribute it and/or modify
    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>
-
 /* Don't use __attribute__ __nonnull__ in this compilation unit.  Otherwise gcc
    optimizes away the name == NULL test below.  */
 #define _GL_ARG_NONNULL(params)
 
+#include <config.h>
+
 /* Specification.  */
 #include <stdlib.h>
 
index 0261661..8fdab32 100644 (file)
@@ -1,5 +1,5 @@
 /* vsprintf with automatic memory allocation.
-   Copyright (C) 1999, 2002-2012 Free Software Foundation, Inc.
+   Copyright (C) 1999, 2002-2013 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
@@ -1530,7 +1530,7 @@ is_borderline (const char *digits, size_t precision)
 
 /* Returns the number of TCHAR_T units needed as temporary space for the result
    of sprintf or SNPRINTF of a single conversion directive.  */
-static inline size_t
+static size_t
 MAX_ROOM_NEEDED (const arguments *ap, size_t arg_index, FCHAR_T conversion,
                  arg_type type, int flags, size_t width, int has_precision,
                  size_t precision, int pad_ourselves)
index dd86914..7658f50 100644 (file)
@@ -1,5 +1,5 @@
 /* vsprintf with automatic memory allocation.
-   Copyright (C) 2002-2004, 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2004, 2007-2013 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
index fbe6e7c..7d4d920 100644 (file)
@@ -1,6 +1,6 @@
 /* Variable array bitsets.
 
-   Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2006, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 5b3e810..b91019b 100644 (file)
@@ -1,6 +1,6 @@
 /* Functions to support vbitsets.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    Contributed by Michael Hayes (m.hayes@elec.canterbury.ac.nz).
 
index 0c320b1..cb8e90b 100644 (file)
@@ -1,6 +1,6 @@
 /* Compile-time assert-like macros.
 
-   Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2006, 2009-2013 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
index 4117791..635e36e 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to a stream.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 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
index 304b909..339d444 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 Free Software Foundation, Inc.
    Written by Simon Josefsson and Yoann Vandoorselaere <yoann@prelude-ids.org>.
 
    This program is free software; you can redistribute it and/or modify
index 0c0ad3e..759b1f5 100644 (file)
@@ -1,5 +1,5 @@
 /* Formatted output to strings.
-   Copyright (C) 2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2004, 2006-2013 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
index 49a3900..3b5c08a 100644 (file)
@@ -1,5 +1,5 @@
 /* Auxiliary functions for the creation of subprocesses.  Native Windows API.
-   Copyright (C) 2001, 2003-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001, 2003-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <bruno@clisp.org>, 2003.
 
    This program is free software: you can redistribute it and/or modify
index ed47ad7..17a2430 100644 (file)
@@ -1,5 +1,5 @@
 /* Waiting for a subprocess to finish.
-   Copyright (C) 2001-2003, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2005-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
@@ -171,7 +171,7 @@ register_slave_subprocess (pid_t child)
 }
 
 /* Unregister a child from the list of slave subprocesses.  */
-static inline void
+static void
 unregister_slave_subprocess (pid_t child)
 {
   /* The easiest way to remove an entry from a list that can be used by
index bd20431..6d8f0d2 100644 (file)
@@ -1,5 +1,5 @@
 /* Waiting for a subprocess to finish.
-   Copyright (C) 2001-2003, 2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2006, 2008-2013 Free Software Foundation, Inc.
    Written by Bruno Haible <haible@clisp.cons.org>, 2001.
 
    This program is free software: you can redistribute it and/or modify
index 9249d4c..d28a70b 100644 (file)
@@ -1,5 +1,5 @@
 /* Wait for process state change.
-   Copyright (C) 2001-2003, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2003, 2005-2013 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
index f9bc30c..b6e4362 100644 (file)
@@ -1,6 +1,6 @@
 /* A substitute for ISO C99 <wchar.h>, for platforms that have issues.
 
-   Copyright (C) 2007-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007-2013 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
diff --git a/lib/wctype-h.c b/lib/wctype-h.c
new file mode 100644 (file)
index 0000000..bb5f847
--- /dev/null
@@ -0,0 +1,4 @@
+/* Normally this would be wctype.c, but that name's already taken.  */
+#include <config.h>
+#define _GL_WCTYPE_INLINE _GL_EXTERN_INLINE
+#include "wctype.h"
index aa018b1..0cd02d5 100644 (file)
@@ -1,6 +1,6 @@
 /* A substitute for ISO C99 <wctype.h>, for platforms that lack it.
 
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 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
 #ifndef _@GUARD_PREFIX@_WCTYPE_H
 #define _@GUARD_PREFIX@_WCTYPE_H
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef _GL_WCTYPE_INLINE
+# define _GL_WCTYPE_INLINE _GL_INLINE
+#endif
+
 /* The definitions of _GL_FUNCDECL_RPL etc. are copied here.  */
 
 /* The definition of _GL_WARN_ON_USE is copied here.  */
@@ -148,7 +153,7 @@ typedef unsigned int rpl_wint_t;
 #   endif
 #  endif
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswalnum
 #  else
@@ -160,7 +165,7 @@ iswalnum
           || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z'));
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswalpha
 #  else
@@ -171,7 +176,7 @@ iswalpha
   return (wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswblank
 #  else
@@ -182,7 +187,7 @@ iswblank
   return wc == ' ' || wc == '\t';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswcntrl
 #  else
@@ -193,7 +198,7 @@ iswcntrl
   return (wc & ~0x1f) == 0 || wc == 0x7f;
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswdigit
 #  else
@@ -204,7 +209,7 @@ iswdigit
   return wc >= '0' && wc <= '9';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswgraph
 #  else
@@ -215,7 +220,7 @@ iswgraph
   return wc >= '!' && wc <= '~';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswlower
 #  else
@@ -226,7 +231,7 @@ iswlower
   return wc >= 'a' && wc <= 'z';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswprint
 #  else
@@ -237,7 +242,7 @@ iswprint
   return wc >= ' ' && wc <= '~';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswpunct
 #  else
@@ -250,7 +255,7 @@ iswpunct
                || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'Z')));
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswspace
 #  else
@@ -262,7 +267,7 @@ iswspace
           || wc == '\n' || wc == '\v' || wc == '\f' || wc == '\r');
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswupper
 #  else
@@ -273,7 +278,7 @@ iswupper
   return wc >= 'A' && wc <= 'Z';
 }
 
-static inline int
+_GL_WCTYPE_INLINE int
 #  if @REPLACE_ISWCNTRL@
 rpl_iswxdigit
 #  else
@@ -285,7 +290,7 @@ iswxdigit
           || ((wc & ~0x20) >= 'A' && (wc & ~0x20) <= 'F'));
 }
 
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
 #  if @REPLACE_TOWLOWER@
 rpl_towlower
 #  else
@@ -296,7 +301,7 @@ towlower
   return (wc >= 'A' && wc <= 'Z' ? wc - 'A' + 'a' : wc);
 }
 
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
 #  if @REPLACE_TOWLOWER@
 rpl_towupper
 #  else
@@ -336,7 +341,7 @@ _GL_FUNCDECL_SYS (iswblank, int, (wint_t wc));
       result register.  We need to fix this by adding a zero-extend from
       wchar_t to wint_t after the call.  */
 
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
 rpl_towlower (wint_t wc)
 {
   return (wint_t) (wchar_t) towlower (wc);
@@ -345,7 +350,7 @@ rpl_towlower (wint_t wc)
 #   define towlower rpl_towlower
 #  endif
 
-static inline wint_t
+_GL_WCTYPE_INLINE wint_t
 rpl_towupper (wint_t wc)
 {
   return (wint_t) (wchar_t) towupper (wc);
@@ -493,6 +498,7 @@ _GL_WARN_ON_USE (towctrans, "towctrans is unportable - "
 # endif
 #endif
 
+_GL_INLINE_HEADER_END
 
 #endif /* _@GUARD_PREFIX@_WCTYPE_H */
 #endif /* _@GUARD_PREFIX@_WCTYPE_H */
index 44503b0..253fcaa 100644 (file)
@@ -1,5 +1,5 @@
 /* Determine the number of screen columns needed for a character.
-   Copyright (C) 2006-2007, 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2010-2013 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
index e85d6df..daa403b 100644 (file)
@@ -1,6 +1,6 @@
 /* Report a memory allocation failure and exit.
 
-   Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2012 Free Software
+   Copyright (C) 1997-2000, 2002-2004, 2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
index 6779755..a971c78 100644 (file)
@@ -1,6 +1,6 @@
 /* xalloc-oversized.h -- memory allocation size checking
 
-   Copyright (C) 1990-2000, 2003-2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 1990-2000, 2003-2004, 2006-2013 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
@@ -22,7 +22,7 @@
 
 /* Return 1 if an array of N objects, each of size S, cannot exist due
    to size arithmetic overflow.  S must be positive and N must be
-   nonnegative.  This is a macro, not an inline function, so that it
+   nonnegative.  This is a macro, not a function, so that it
    works correctly even when SIZE_MAX < N.
 
    By gnulib convention, SIZE_MAX represents overflow in size
index 6f5b87e..da7c4b6 100644 (file)
@@ -1,6 +1,6 @@
 /* xalloc.h -- malloc with out-of-memory checking
 
-   Copyright (C) 1990-2000, 2003-2004, 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 1990-2000, 2003-2004, 2006-2013 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
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
 #ifndef XALLOC_H_
-# define XALLOC_H_
+#define XALLOC_H_
 
-# include <stddef.h>
+#include <stddef.h>
 
-# include "xalloc-oversized.h"
+#include "xalloc-oversized.h"
 
-# ifdef __cplusplus
+_GL_INLINE_HEADER_BEGIN
+#ifndef XALLOC_INLINE
+# define XALLOC_INLINE _GL_INLINE
+#endif
+
+#ifdef __cplusplus
 extern "C" {
-# endif
+#endif
 
 
-# if __GNUC__ >= 3
-#  define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
-# else
-#  define _GL_ATTRIBUTE_MALLOC
-# endif
+#if __GNUC__ >= 3
+# define _GL_ATTRIBUTE_MALLOC __attribute__ ((__malloc__))
+#else
+# define _GL_ATTRIBUTE_MALLOC
+#endif
 
-# if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
-#  define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
-# else
-#  define _GL_ATTRIBUTE_ALLOC_SIZE(args)
-# endif
+#if __GNUC__ > 4 || (__GNUC__ == 4 && __GNUC_MINOR__ >= 3)
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args) __attribute__ ((__alloc_size__ args))
+#else
+# define _GL_ATTRIBUTE_ALLOC_SIZE(args)
+#endif
 
 /* This function is always triggered when memory is exhausted.
    It must be defined by the application, either explicitly
@@ -67,45 +72,31 @@ char *xstrdup (char const *str)
 
 /* Allocate an object of type T dynamically, with error checking.  */
 /* extern t *XMALLOC (typename t); */
-# define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
+#define XMALLOC(t) ((t *) xmalloc (sizeof (t)))
 
 /* Allocate memory for N elements of type T, with error checking.  */
 /* extern t *XNMALLOC (size_t n, typename t); */
-# define XNMALLOC(n, t) \
-    ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
+#define XNMALLOC(n, t) \
+   ((t *) (sizeof (t) == 1 ? xmalloc (n) : xnmalloc (n, sizeof (t))))
 
 /* Allocate an object of type T dynamically, with error checking,
    and zero it.  */
 /* extern t *XZALLOC (typename t); */
-# define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
+#define XZALLOC(t) ((t *) xzalloc (sizeof (t)))
 
 /* Allocate memory for N elements of type T, with error checking,
    and zero it.  */
 /* extern t *XCALLOC (size_t n, typename t); */
-# define XCALLOC(n, t) \
-    ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
-
-
-# if HAVE_INLINE
-#  define static_inline static inline
-# else
-void *xnmalloc (size_t n, size_t s)
-      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
-void *xnrealloc (void *p, size_t n, size_t s)
-      _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
-void *x2nrealloc (void *p, size_t *pn, size_t s);
-char *xcharalloc (size_t n)
-      _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-# endif
+#define XCALLOC(n, t) \
+   ((t *) (sizeof (t) == 1 ? xzalloc (n) : xcalloc (n, sizeof (t))))
 
-# ifdef static_inline
 
 /* Allocate an array of N objects, each with S bytes of memory,
    dynamically, with error checking.  S must be nonzero.  */
 
-static_inline void *xnmalloc (size_t n, size_t s)
+XALLOC_INLINE void *xnmalloc (size_t n, size_t s)
                     _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1, 2));
-static_inline void *
+XALLOC_INLINE void *
 xnmalloc (size_t n, size_t s)
 {
   if (xalloc_oversized (n, s))
@@ -116,9 +107,9 @@ xnmalloc (size_t n, size_t s)
 /* Change the size of an allocated block of memory P to an array of N
    objects each of S bytes, with error checking.  S must be nonzero.  */
 
-static_inline void *xnrealloc (void *p, size_t n, size_t s)
+XALLOC_INLINE void *xnrealloc (void *p, size_t n, size_t s)
                     _GL_ATTRIBUTE_ALLOC_SIZE ((2, 3));
-static_inline void *
+XALLOC_INLINE void *
 xnrealloc (void *p, size_t n, size_t s)
 {
   if (xalloc_oversized (n, s))
@@ -181,7 +172,7 @@ xnrealloc (void *p, size_t n, size_t s)
 
    */
 
-static_inline void *
+XALLOC_INLINE void *
 x2nrealloc (void *p, size_t *pn, size_t s)
 {
   size_t n = *pn;
@@ -218,17 +209,15 @@ x2nrealloc (void *p, size_t *pn, size_t s)
 /* Return a pointer to a new buffer of N bytes.  This is like xmalloc,
    except it returns char *.  */
 
-static_inline char *xcharalloc (size_t n)
+XALLOC_INLINE char *xcharalloc (size_t n)
                     _GL_ATTRIBUTE_MALLOC _GL_ATTRIBUTE_ALLOC_SIZE ((1));
-static_inline char *
+XALLOC_INLINE char *
 xcharalloc (size_t n)
 {
   return XNMALLOC (n, char);
 }
 
-# endif
-
-# ifdef __cplusplus
+#ifdef __cplusplus
 }
 
 /* C++ does not allow conversions from void * to other pointer types
@@ -265,7 +254,7 @@ xmemdup (T const *p, size_t s)
   return (T *) xmemdup ((void const *) p, s);
 }
 
-# endif
+#endif
 
 
 #endif /* !XALLOC_H_ */
index 3b5f86c..57e34b7 100644 (file)
@@ -1,6 +1,6 @@
 /* xmalloc.c -- malloc with out of memory checking
 
-   Copyright (C) 1990-2000, 2002-2006, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 1990-2000, 2002-2006, 2008-2013 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
 
 #include <config.h>
 
-#if ! HAVE_INLINE
-# define static_inline
-#endif
+#define XALLOC_INLINE _GL_EXTERN_INLINE
+
 #include "xalloc.h"
-#undef static_inline
 
 #include <stdlib.h>
 #include <string.h>
index 8a80563..c070fa6 100644 (file)
@@ -1,6 +1,6 @@
 /* xmemdup0.c -- copy a block of arbitrary bytes, plus a trailing NUL
 
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
index 1883b4d..9ec8271 100644 (file)
@@ -1,6 +1,6 @@
 /* xmemdup0.h -- copy a block of arbitrary bytes, plus a trailing NUL
 
-   Copyright (C) 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2008-2013 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
diff --git a/lib/xsize.c b/lib/xsize.c
new file mode 100644 (file)
index 0000000..4b4914c
--- /dev/null
@@ -0,0 +1,3 @@
+#include <config.h>
+#define XSIZE_INLINE _GL_EXTERN_INLINE
+#include "xsize.h"
index 515327e..2922f35 100644 (file)
@@ -1,6 +1,6 @@
 /* xsize.h -- Checked size_t computations.
 
-   Copyright (C) 2003, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2008-2013 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
 # include <stdint.h>
 #endif
 
+_GL_INLINE_HEADER_BEGIN
+#ifndef XSIZE_INLINE
+# define XSIZE_INLINE _GL_INLINE
+#endif
+
 /* The size of memory objects is often computed through expressions of
    type size_t. Example:
       void* p = malloc (header_size + n * element_size).
@@ -48,7 +53,7 @@
   ((N) <= SIZE_MAX ? (size_t) (N) : SIZE_MAX)
 
 /* Sum of two sizes, with overflow check.  */
-static inline size_t
+XSIZE_INLINE size_t
 #if __GNUC__ >= 3
 __attribute__ ((__pure__))
 #endif
@@ -59,7 +64,7 @@ xsum (size_t size1, size_t size2)
 }
 
 /* Sum of three sizes, with overflow check.  */
-static inline size_t
+XSIZE_INLINE size_t
 #if __GNUC__ >= 3
 __attribute__ ((__pure__))
 #endif
@@ -69,7 +74,7 @@ xsum3 (size_t size1, size_t size2, size_t size3)
 }
 
 /* Sum of four sizes, with overflow check.  */
-static inline size_t
+XSIZE_INLINE size_t
 #if __GNUC__ >= 3
 __attribute__ ((__pure__))
 #endif
@@ -79,7 +84,7 @@ xsum4 (size_t size1, size_t size2, size_t size3, size_t size4)
 }
 
 /* Maximum of two sizes, with overflow check.  */
-static inline size_t
+XSIZE_INLINE size_t
 #if __GNUC__ >= 3
 __attribute__ ((__pure__))
 #endif
@@ -92,7 +97,7 @@ xmax (size_t size1, size_t size2)
 
 /* Multiplication of a count with an element size, with overflow check.
    The count must be >= 0 and the element size must be > 0.
-   This is a macro, not an inline function, so that it works correctly even
+   This is a macro, not a function, so that it works correctly even
    when N is of a wider type and N > SIZE_MAX.  */
 #define xtimes(N, ELSIZE) \
   ((N) <= SIZE_MAX / (ELSIZE) ? (size_t) (N) * (ELSIZE) : SIZE_MAX)
@@ -104,4 +109,6 @@ xmax (size_t size1, size_t size2)
 #define size_in_bounds_p(SIZE) \
   ((SIZE) != SIZE_MAX)
 
+_GL_INLINE_HEADER_END
+
 #endif /* _XSIZE_H */
index 40ffdfe..eae92d0 100644 (file)
@@ -1,6 +1,6 @@
 /* Duplicate a bounded initial segment of a string, with out-of-memory
    checking.
-   Copyright (C) 2003, 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2006-2007, 2009-2013 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
index 765e9cb..59673b0 100644 (file)
@@ -1,6 +1,6 @@
 /* Duplicate a bounded initial segment of a string, with out-of-memory
    checking.
-   Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2003, 2009-2013 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
index c9f492f..3aeb5ce 100644 (file)
@@ -1,6 +1,6 @@
 /* Yacc library error-printing function.
 
-   Copyright (C) 2002, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -17,6 +17,8 @@
    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>
+
 #include <stdio.h>
 
 int yyerror (char const *);
index d978cb8..d4ad759 100644 (file)
@@ -1,5 +1,5 @@
 # 00gnulib.m4 serial 2
-dnl Copyright (C) 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 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.
index 656924b..270abd0 100644 (file)
@@ -1,5 +1,5 @@
 # alloca.m4 serial 14
-dnl Copyright (C) 2002-2004, 2006-2007, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2002-2004, 2006-2007, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 478aa03..b1159d5 100644 (file)
@@ -1,5 +1,5 @@
 # asm-underscore.m4 serial 2
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index b748e5e..013fade 100644 (file)
@@ -1,6 +1,6 @@
 #serial 7
 
-# Copyright (C) 1998-1999, 2001, 2004, 2008-2012 Free Software Foundation, Inc.
+# Copyright (C) 1998-1999, 2001, 2004, 2008-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index 208cb56..55f7425 100644 (file)
@@ -1,6 +1,6 @@
 # bison-i18n.m4 serial 2
 
-dnl Copyright (C) 2005-2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2005-2006, 2009-2013 Free Software Foundation, Inc.
 
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index d563d32..b09d855 100644 (file)
@@ -1,6 +1,6 @@
 # Sanity test a C compiler.
 
-# Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2006, 2009-2013 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
@@ -24,4 +24,56 @@ AC_DEFUN([BISON_TEST_FOR_WORKING_C_COMPILER], [
         int test_array[CHAR_BIT];]])],
     [],
     [AC_MSG_FAILURE([cannot compile a simple C program])])
+   AC_SUBST([BISON_C_WORKS], [:])
+])
+
+# BISON_CHECK_WITH_POSIXLY_CORRECT(CODE)
+# --------------------------------------
+# Run the Autoconf CODE with POSIXLY_CORRECT set to 1, and restored to
+# its initial value afterwards.
+AC_DEFUN([BISON_CHECK_WITH_POSIXLY_CORRECT],
+[gl_awk_probe='BEGIN { if ("POSIXLY_CORRECT" in ENVIRON) print "x" }'
+case ${POSIXLY_CORRECT+x}`$AWK "$gl_awk_probe" </dev/null` in
+  xx) gl_had_POSIXLY_CORRECT=exported ;;
+  x)  gl_had_POSIXLY_CORRECT=yes      ;;
+  *)  gl_had_POSIXLY_CORRECT=         ;;
+esac
+POSIXLY_CORRECT=1
+export POSIXLY_CORRECT
+$1
+case $gl_had_POSIXLY_CORRECT in
+  exported) ;;
+  yes) AS_UNSET([POSIXLY_CORRECT]); POSIXLY_CORRECT=1 ;;
+  *) AS_UNSET([POSIXLY_CORRECT]) ;;
+esac
+])
+
+# BISON_LANG_COMPILER_POSIXLY_CORRECT
+# -----------------------------------
+# Whether the compiler for the current language supports -g in
+# POSIXLY_CORRECT mode.  clang-2.9 on OS X does not, because
+# "clang-mp-2.9 -o test -g test.c" launches "/usr/bin/dsymutil test -o
+# test.dSYM" which fails with "error: unable to open executable '-o'".
+#
+# Sets <LANG>_COMPILER_POSIXLY_CORRECT to true/false.
+AC_DEFUN([BISON_LANG_COMPILER_POSIXLY_CORRECT],
+[AC_CACHE_CHECK([whether $_AC_CC supports POSIXLY_CORRECT=1],
+                [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct],
+[BISON_CHECK_WITH_POSIXLY_CORRECT(
+[AC_LINK_IFELSE([AC_LANG_PROGRAM],
+                [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct=yes],
+                [bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct=no])])])
+case $bison_cv_[]_AC_LANG_ABBREV[]_supports_posixly_correct in
+  yes) AC_SUBST(_AC_LANG_PREFIX[_COMPILER_POSIXLY_CORRECT], [true]) ;;
+  no)  AC_SUBST(_AC_LANG_PREFIX[_COMPILER_POSIXLY_CORRECT], [false]);;
+esac
+])
+
+# BISON_C_COMPILER_POSIXLY_CORRECT
+# --------------------------------
+# Whether the C compiler supports -g in POSIXLY_CORRECT mode.
+AC_DEFUN([BISON_C_COMPILER_POSIXLY_CORRECT],
+[AC_LANG_PUSH([C])
+BISON_LANG_COMPILER_POSIXLY_CORRECT
+AC_LANG_POP([C])
 ])
index 00c5fe4..c1ede8d 100644 (file)
@@ -1,6 +1,6 @@
 # calloc.m4 serial 15
 
-# Copyright (C) 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index be0c8a2..0a80c37 100644 (file)
@@ -1,5 +1,5 @@
 #serial 4
-dnl Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2007, 2009-2013 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.
index 379e70d..bccd981 100644 (file)
@@ -1,5 +1,5 @@
 # close.m4 serial 8
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index 71395c1..759feaa 100644 (file)
@@ -1,5 +1,5 @@
 # closeout.m4 serial 6
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index cf53d24..c2761be 100644 (file)
@@ -1,5 +1,5 @@
 # codeset.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2006, 2008-2013 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.
index b61e22f..9158d66 100644 (file)
@@ -1,6 +1,6 @@
 # Say that -DHAVE_CONFIG_H is not needed.
 
-dnl Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2009-2013 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.
index 8c82371..823ffc0 100644 (file)
@@ -1,5 +1,5 @@
 # configmake.m4 serial 1
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index 7d5cc78..8d3505b 100644 (file)
--- a/m4/cxx.m4
+++ b/m4/cxx.m4
@@ -1,7 +1,7 @@
 # -*- Autoconf -*-
 # Sanity-test a C++ compiler.
 #
-# Copyright (C) 2004, 2006, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2004, 2006, 2009-2013 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
@@ -58,3 +58,12 @@ AC_DEFUN([BISON_TEST_FOR_WORKING_CXX_COMPILER],
  AC_SUBST([BISON_CXX_WORKS])
  AM_CONDITIONAL(BISON_CXX_WORKS, test $bison_cv_cxx_works = yes)
 ])
+
+# BISON_CXX_COMPILER_POSIXLY_CORRECT
+# ----------------------------------
+# Whether the C++ compiler supports -g in POSIXLY_CORRECT mode.
+AC_DEFUN([BISON_CXX_COMPILER_POSIXLY_CORRECT],
+[AC_LANG_PUSH([C++])
+BISON_LANG_COMPILER_POSIXLY_CORRECT
+AC_LANG_POP([C++])
+])
index 65639ec..5897a2a 100644 (file)
@@ -1,5 +1,5 @@
 #serial 10   -*- autoconf -*-
-dnl Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2013 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.
index 1e03751..bd6f867 100644 (file)
@@ -1,5 +1,5 @@
 # double-slash-root.m4 serial 4   -*- Autoconf -*-
-dnl Copyright (C) 2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2008-2013 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.
index fc86e80..269cfdc 100644 (file)
@@ -1,5 +1,5 @@
-#serial 18
-dnl Copyright (C) 2002, 2005, 2007, 2009-2012 Free Software Foundation, Inc.
+#serial 19
+dnl Copyright (C) 2002, 2005, 2007, 2009-2013 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.
@@ -39,6 +39,9 @@ AC_DEFUN([gl_FUNC_DUP2],
             /* Many gnulib modules require POSIX conformance of EBADF.  */
             if (dup2 (2, 1000000) == -1 && errno != EBADF)
               result |= 16;
+            /* Flush out a cygwin core dump.  */
+            if (dup2 (2, -1) != -1 || errno != EBADF)
+              result |= 32;
             return result;
            ])
         ],
index 8eb57c9..593a33e 100644 (file)
@@ -1,5 +1,5 @@
 # environ.m4 serial 6
-dnl Copyright (C) 2001-2004, 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2004, 2006-2013 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.
index 1e76ba2..c813ea5 100644 (file)
@@ -1,5 +1,5 @@
-# errno_h.m4 serial 11
-dnl Copyright (C) 2004, 2006, 2008-2012 Free Software Foundation, Inc.
+# errno_h.m4 serial 12
+dnl Copyright (C) 2004, 2006, 2008-2013 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.
@@ -58,6 +58,9 @@ booboo
 #if !defined ENOTRECOVERABLE
 booboo
 #endif
+#if !defined EILSEQ
+booboo
+#endif
       ],
       [gl_cv_header_errno_h_complete=no],
       [gl_cv_header_errno_h_complete=yes])
index 5d9c70a..29e6fdc 100644 (file)
@@ -1,6 +1,6 @@
 #serial 14
 
-# Copyright (C) 1996-1998, 2001-2004, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 1996-1998, 2001-2004, 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -23,6 +23,5 @@ AC_DEFUN([gl_ERROR],
 AC_DEFUN([gl_PREREQ_ERROR],
 [
   AC_REQUIRE([AC_FUNC_STRERROR_R])
-  AC_REQUIRE([AC_C_INLINE])
   :
 ])
index 0ae4ccf..09df468 100644 (file)
@@ -1,5 +1,5 @@
 # exponentd.m4 serial 3
-dnl Copyright (C) 2007-2008, 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2008, 2010-2013 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.
index 94d1167..55a04e6 100644 (file)
@@ -1,5 +1,5 @@
 # exponentf.m4 serial 2
-dnl Copyright (C) 2007-2008, 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2008, 2010-2013 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.
index a7cd13b..f877cf1 100644 (file)
@@ -1,5 +1,5 @@
 # exponentl.m4 serial 3
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 6d17d8a..07ba376 100644 (file)
@@ -1,14 +1,14 @@
-# serial 12  -*- Autoconf -*-
+# serial 13  -*- Autoconf -*-
 # Enable extensions on systems that normally disable them.
 
-# Copyright (C) 2003, 2006-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003, 2006-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
 # This definition of AC_USE_SYSTEM_EXTENSIONS is stolen from CVS
 # Autoconf.  Perhaps we can remove this once we can assume Autoconf
-# 2.62 or later everywhere, but since CVS Autoconf mutates rapidly
+# 2.70 or later everywhere, but since Autoconf mutates rapidly
 # enough in this area it's likely we'll need to redefine
 # AC_USE_SYSTEM_EXTENSIONS for quite some time.
 
@@ -30,6 +30,7 @@
 # ------------------------
 # Enable extensions on systems that normally disable them,
 # typically due to standards-conformance issues.
+#
 # Remember that #undef in AH_VERBATIM gets replaced with #define by
 # AC_DEFINE.  The goal here is to define all known feature-enabling
 # macros, then, if reports of conflicts are made, disable macros that
@@ -38,8 +39,6 @@ AC_DEFUN_ONCE([AC_USE_SYSTEM_EXTENSIONS],
 [AC_BEFORE([$0], [AC_COMPILE_IFELSE])dnl
 AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
 
-  AC_REQUIRE([AC_CANONICAL_HOST])
-
   AC_CHECK_HEADER([minix/config.h], [MINIX=yes], [MINIX=])
   if test "$MINIX" = yes; then
     AC_DEFINE([_POSIX_SOURCE], [1],
@@ -50,24 +49,18 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
        except with this defined.])
     AC_DEFINE([_MINIX], [1],
       [Define to 1 if on MINIX.])
+    AC_DEFINE([_NETBSD_SOURCE], [1],
+      [Define to 1 to make NetBSD features available.  MINIX 3 needs this.])
   fi
 
-  dnl HP-UX 11.11 defines mbstate_t only if _XOPEN_SOURCE is defined to 500,
-  dnl regardless of whether the flags -Ae or _D_HPUX_SOURCE=1 are already
-  dnl provided.
-  case "$host_os" in
-    hpux*)
-      AC_DEFINE([_XOPEN_SOURCE], [500],
-        [Define to 500 only on HP-UX.])
-      ;;
-  esac
-
-  AH_VERBATIM([__EXTENSIONS__],
+dnl Use a different key than __EXTENSIONS__, as that name broke existing
+dnl configure.ac when using autoheader 2.62.
+  AH_VERBATIM([USE_SYSTEM_EXTENSIONS],
 [/* Enable extensions on AIX 3, Interix.  */
 #ifndef _ALL_SOURCE
 # undef _ALL_SOURCE
 #endif
-/* Enable general extensions on Mac OS X.  */
+/* Enable general extensions on OS X.  */
 #ifndef _DARWIN_C_SOURCE
 # undef _DARWIN_C_SOURCE
 #endif
@@ -83,6 +76,12 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
 #ifndef _TANDEM_SOURCE
 # undef _TANDEM_SOURCE
 #endif
+/* Enable X/Open extensions if necessary.  HP-UX 11.11 defines
+   mbstate_t only if _XOPEN_SOURCE is defined to 500, regardless of
+   whether compiling with -Ae or -D_HPUX_SOURCE=1.  */
+#ifndef _XOPEN_SOURCE
+# undef _XOPEN_SOURCE
+#endif
 /* Enable general extensions on Solaris.  */
 #ifndef __EXTENSIONS__
 # undef __EXTENSIONS__
@@ -103,6 +102,22 @@ AC_BEFORE([$0], [AC_RUN_IFELSE])dnl
   AC_DEFINE([_GNU_SOURCE])
   AC_DEFINE([_POSIX_PTHREAD_SEMANTICS])
   AC_DEFINE([_TANDEM_SOURCE])
+  AC_CACHE_CHECK([whether _XOPEN_SOURCE should be defined],
+    [ac_cv_should_define__xopen_source],
+    [ac_cv_should_define__xopen_source=no
+     AC_COMPILE_IFELSE(
+       [AC_LANG_PROGRAM([[
+          #include <wchar.h>
+          mbstate_t x;]])],
+       [],
+       [AC_COMPILE_IFELSE(
+          [AC_LANG_PROGRAM([[
+             #define _XOPEN_SOURCE 500
+             #include <wchar.h>
+             mbstate_t x;]])],
+          [ac_cv_should_define__xopen_source=yes])])])
+  test $ac_cv_should_define__xopen_source = yes &&
+    AC_DEFINE([_XOPEN_SOURCE], [500])
 ])# AC_USE_SYSTEM_EXTENSIONS
 
 # gl_USE_SYSTEM_EXTENSIONS
diff --git a/m4/extern-inline.m4 b/m4/extern-inline.m4
new file mode 100644 (file)
index 0000000..0152f29
--- /dev/null
@@ -0,0 +1,65 @@
+dnl 'extern inline' a la ISO C99.
+
+dnl Copyright 2012-2013 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.
+
+AC_DEFUN([gl_EXTERN_INLINE],
+[
+  AH_VERBATIM([extern_inline],
+[/* _GL_INLINE is a portable alternative to ISO C99 plain 'inline'.
+   _GL_EXTERN_INLINE is a portable alternative to 'extern inline'.
+   _GL_INLINE_HEADER_BEGIN contains useful stuff to put
+     in an include file, before uses of _GL_INLINE.
+     It suppresses GCC's bogus "no previous prototype for 'FOO'" diagnostic,
+     when FOO is an inline function in the header; see
+     <http://gcc.gnu.org/bugzilla/show_bug.cgi?id=54113>.
+   _GL_INLINE_HEADER_END contains useful stuff to put
+     in the same include file, after uses of _GL_INLINE.
+
+   Suppress extern inline with HP-UX cc, as it appears to be broken; see
+   <http://lists.gnu.org/archive/html/bug-texinfo/2013-02/msg00030.html>.
+
+   Suppress the use of extern inline on Apple's platforms,
+   as Libc-825.25 (2012-09-19) is incompatible with it; see
+   <http://lists.gnu.org/archive/html/bug-gnulib/2012-12/msg00023.html>.
+   Perhaps Apple will fix this some day.  */
+#if ((__GNUC__ \
+      ? defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__ \
+      : 199901L <= __STDC_VERSION__ && !defined __HP_cc) \
+     && !defined __APPLE__)
+# define _GL_INLINE inline
+# define _GL_EXTERN_INLINE extern inline
+#elif 2 < __GNUC__ + (7 <= __GNUC_MINOR__) && !defined __APPLE__
+# if __GNUC_GNU_INLINE__
+   /* __gnu_inline__ suppresses a GCC 4.2 diagnostic.  */
+#  define _GL_INLINE extern inline __attribute__ ((__gnu_inline__))
+# else
+#  define _GL_INLINE extern inline
+# endif
+# define _GL_EXTERN_INLINE extern
+#else
+# define _GL_INLINE static _GL_UNUSED
+# define _GL_EXTERN_INLINE static _GL_UNUSED
+#endif
+
+#if 4 < __GNUC__ + (6 <= __GNUC_MINOR__)
+# if defined __GNUC_STDC_INLINE__ && __GNUC_STDC_INLINE__
+#  define _GL_INLINE_HEADER_CONST_PRAGMA
+# else
+#  define _GL_INLINE_HEADER_CONST_PRAGMA \
+     _Pragma ("GCC diagnostic ignored \"-Wsuggest-attribute=const\"")
+# endif
+# define _GL_INLINE_HEADER_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-prototypes\"") \
+    _Pragma ("GCC diagnostic ignored \"-Wmissing-declarations\"") \
+    _GL_INLINE_HEADER_CONST_PRAGMA
+# define _GL_INLINE_HEADER_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+# define _GL_INLINE_HEADER_BEGIN
+# define _GL_INLINE_HEADER_END
+#endif])
+])
index 9ca5aaf..ae8b65c 100644 (file)
@@ -1,12 +1,11 @@
-# fatal-signal.m4 serial 8
-dnl Copyright (C) 2003-2004, 2006, 2008-2012 Free Software Foundation, Inc.
+# fatal-signal.m4 serial 9
+dnl Copyright (C) 2003-2004, 2006, 2008-2013 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.
 
 AC_DEFUN([gl_FATAL_SIGNAL],
 [
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([gt_TYPE_SIG_ATOMIC_T])
   AC_CHECK_HEADERS_ONCE([unistd.h])
   gl_PREREQ_SIG_HANDLER_H
index 9862741..87cc4bd 100644 (file)
@@ -1,5 +1,5 @@
 # fcntl-o.m4 serial 4
-dnl Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006, 2009-2013 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.
@@ -50,7 +50,18 @@ AC_DEFUN([gl_FCNTL_O_FLAGS],
             #if HAVE_SYMLINK
             {
               static char const sym[] = "conftest.sym";
-              if (symlink (".", sym) != 0)
+              if (symlink ("/dev/null", sym) != 0)
+                result |= 2;
+              else
+                {
+                  int fd = open (sym, O_WRONLY | O_NOFOLLOW | O_CREAT, 0);
+                  if (fd >= 0)
+                    {
+                      close (fd);
+                      result |= 4;
+                    }
+                }
+              if (unlink (sym) != 0 || symlink (".", sym) != 0)
                 result |= 2;
               else
                 {
index 0631bd6..5481cae 100644 (file)
@@ -1,5 +1,5 @@
 # fcntl.m4 serial 5
-dnl Copyright (C) 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 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.
index cac28ae..3cff1fd 100644 (file)
@@ -1,6 +1,6 @@
 # serial 15
 # Configure fcntl.h.
-dnl Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2007, 2009-2013 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.
index 984c514..4907dbc 100644 (file)
@@ -1,5 +1,5 @@
 # flex.m4 serial 2
-# Copyright (C) 2012 Free Software Foundation, Inc.
+# Copyright (C) 2012-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index 51c9c7b..397f2d1 100644 (file)
@@ -1,5 +1,5 @@
 # float_h.m4 serial 9
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index a1cb184..3337cc9 100644 (file)
@@ -1,5 +1,5 @@
-# fopen.m4 serial 8
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# fopen.m4 serial 9
+dnl Copyright (C) 2007-2013 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.
@@ -55,7 +55,4 @@ changequote([,])dnl
 ])
 
 # Prerequisites of lib/fopen.c.
-AC_DEFUN([gl_PREREQ_FOPEN],
-[
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_FOPEN], [:])
index 33a5c94..8f58562 100644 (file)
@@ -1,6 +1,6 @@
 # serial 19
 
-# Copyright (C) 2000-2001, 2004-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2001, 2004-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index 82fd778..97941bb 100644 (file)
@@ -1,5 +1,5 @@
 # fpieee.m4 serial 2
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index d083dab..ea5491f 100644 (file)
@@ -1,5 +1,5 @@
 # fprintf-posix.m4 serial 14
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index fb8db70..2eb98a1 100644 (file)
@@ -1,5 +1,5 @@
-# frexp.m4 serial 14
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# frexp.m4 serial 15
+dnl Copyright (C) 2007-2013 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.
@@ -93,7 +93,7 @@ AC_DEFUN([gl_FUNC_FREXP_WORKS],
 [
   AC_REQUIRE([AC_PROG_CC])
   AC_REQUIRE([AC_CANONICAL_HOST]) dnl for cross-compiles
-  AC_CHECK_FUNCS_ONCE([alarm])
+  AC_CHECK_DECLS_ONCE([alarm])
   AC_CACHE_CHECK([whether frexp works], [gl_cv_func_frexp_works],
     [
       AC_RUN_IFELSE(
@@ -101,7 +101,8 @@ AC_DEFUN([gl_FUNC_FREXP_WORKS],
 #include <float.h>
 #include <math.h>
 #include <string.h>
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
+# include <signal.h>
 # include <unistd.h>
 #endif
 /* HP cc on HP-UX 10.20 has a bug with the constant expression -0.0.
@@ -124,9 +125,10 @@ int main()
   int i;
   volatile double x;
   double zero = 0.0;
-#if HAVE_ALARM
+#if HAVE_DECL_ALARM
   /* NeXTstep 3.3 frexp() runs into an endless loop when called on an infinite
      number.  Let the test fail in this case.  */
+  signal (SIGALRM, SIG_DFL);
   alarm (5);
 #endif
   /* Test on denormalized numbers.  */
index 774d540..3b64c52 100644 (file)
@@ -1,5 +1,5 @@
 # frexpl.m4 serial 20
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 3eb3197..b8e044b 100644 (file)
@@ -1,5 +1,5 @@
 # fseterr.m4 serial 1
-dnl Copyright (C) 2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2013 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.
index 3ab3297..b2cf2ad 100644 (file)
@@ -1,5 +1,5 @@
-# fstat.m4 serial 3
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# fstat.m4 serial 4
+dnl Copyright (C) 2011-2013 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.
@@ -33,7 +33,4 @@ AC_DEFUN([gl_FUNC_FSTAT],
 ])
 
 # Prerequisites of lib/fstat.c.
-AC_DEFUN([gl_PREREQ_FSTAT],
-[
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_FSTAT], [:])
diff --git a/m4/getdelim.m4 b/m4/getdelim.m4
new file mode 100644 (file)
index 0000000..36f66a1
--- /dev/null
@@ -0,0 +1,88 @@
+# getdelim.m4 serial 10
+
+dnl Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
+dnl
+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.
+
+AC_PREREQ([2.59])
+
+AC_DEFUN([gl_FUNC_GETDELIM],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+
+  dnl Persuade glibc <stdio.h> to declare getdelim().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([getdelim])
+
+  AC_CHECK_FUNCS_ONCE([getdelim])
+  if test $ac_cv_func_getdelim = yes; then
+    HAVE_GETDELIM=1
+    dnl Found it in some library.  Verify that it works.
+    AC_CACHE_CHECK([for working getdelim function], [gl_cv_func_working_getdelim],
+    [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
+    AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    {
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+        return 1;
+      {
+        /* Test result for a NULL buffer and a zero size.
+           Based on a test program from Karl Heuer.  */
+        char *line = NULL;
+        size_t siz = 0;
+        int len = getdelim (&line, &siz, '\n', in);
+        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
+          return 2;
+      }
+      {
+        /* Test result for a NULL buffer and a non-zero size.
+           This crashes on FreeBSD 8.0.  */
+        char *line = NULL;
+        size_t siz = (size_t)(~0) / 4;
+        if (getdelim (&line, &siz, '\n', in) == -1)
+          return 3;
+      }
+      return 0;
+    }
+    ]])], [gl_cv_func_working_getdelim=yes] dnl The library version works.
+    , [gl_cv_func_working_getdelim=no] dnl The library version does NOT work.
+    , dnl We're cross compiling. Assume it works on glibc2 systems.
+      [AC_EGREP_CPP([Lucky GNU user],
+         [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+  Lucky GNU user
+ #endif
+#endif
+         ],
+         [gl_cv_func_working_getdelim="guessing yes"],
+         [gl_cv_func_working_getdelim="guessing no"])]
+    )])
+    case "$gl_cv_func_working_getdelim" in
+      *no)
+        REPLACE_GETDELIM=1
+        ;;
+    esac
+  else
+    HAVE_GETDELIM=0
+  fi
+
+  if test $ac_cv_have_decl_getdelim = no; then
+    HAVE_DECL_GETDELIM=0
+  fi
+])
+
+# Prerequisites of lib/getdelim.c.
+AC_DEFUN([gl_PREREQ_GETDELIM],
+[
+  AC_CHECK_FUNCS([flockfile funlockfile])
+  AC_CHECK_DECLS([getc_unlocked])
+])
index 81488ba..8f04b3b 100644 (file)
@@ -1,5 +1,5 @@
-# getdtablesize.m4 serial 3
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# getdtablesize.m4 serial 4
+dnl Copyright (C) 2008-2013 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.
@@ -14,6 +14,4 @@ AC_DEFUN([gl_FUNC_GETDTABLESIZE],
 ])
 
 # Prerequisites of lib/getdtablesize.c.
-AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_GETDTABLESIZE], [:])
diff --git a/m4/getline.m4 b/m4/getline.m4
new file mode 100644 (file)
index 0000000..342bc99
--- /dev/null
@@ -0,0 +1,96 @@
+# getline.m4 serial 26
+
+dnl Copyright (C) 1998-2003, 2005-2007, 2009-2013 Free Software Foundation,
+dnl Inc.
+dnl
+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.
+
+AC_PREREQ([2.59])
+
+dnl See if there's a working, system-supplied version of the getline function.
+dnl We can't just do AC_REPLACE_FUNCS([getline]) because some systems
+dnl have a function by that name in -linet that doesn't have anything
+dnl to do with the function we need.
+AC_DEFUN([gl_FUNC_GETLINE],
+[
+  AC_REQUIRE([gl_STDIO_H_DEFAULTS])
+
+  dnl Persuade glibc <stdio.h> to declare getline().
+  AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
+
+  AC_CHECK_DECLS_ONCE([getline])
+
+  gl_getline_needs_run_time_check=no
+  AC_CHECK_FUNC([getline],
+                [dnl Found it in some library.  Verify that it works.
+                 gl_getline_needs_run_time_check=yes],
+                [am_cv_func_working_getline=no])
+  if test $gl_getline_needs_run_time_check = yes; then
+    AC_CACHE_CHECK([for working getline function], [am_cv_func_working_getline],
+    [echo fooNbarN | tr -d '\012' | tr N '\012' > conftest.data
+    AC_RUN_IFELSE([AC_LANG_SOURCE([[
+#    include <stdio.h>
+#    include <stdlib.h>
+#    include <string.h>
+    int main ()
+    {
+      FILE *in = fopen ("./conftest.data", "r");
+      if (!in)
+        return 1;
+      {
+        /* Test result for a NULL buffer and a zero size.
+           Based on a test program from Karl Heuer.  */
+        char *line = NULL;
+        size_t siz = 0;
+        int len = getline (&line, &siz, in);
+        if (!(len == 4 && line && strcmp (line, "foo\n") == 0))
+          return 2;
+      }
+      {
+        /* Test result for a NULL buffer and a non-zero size.
+           This crashes on FreeBSD 8.0.  */
+        char *line = NULL;
+        size_t siz = (size_t)(~0) / 4;
+        if (getline (&line, &siz, in) == -1)
+          return 3;
+      }
+      return 0;
+    }
+    ]])], [am_cv_func_working_getline=yes] dnl The library version works.
+    , [am_cv_func_working_getline=no] dnl The library version does NOT work.
+    , dnl We're cross compiling. Assume it works on glibc2 systems.
+      [AC_EGREP_CPP([Lucky GNU user],
+         [
+#include <features.h>
+#ifdef __GNU_LIBRARY__
+ #if (__GLIBC__ >= 2) && !defined __UCLIBC__
+  Lucky GNU user
+ #endif
+#endif
+         ],
+         [am_cv_func_working_getline="guessing yes"],
+         [am_cv_func_working_getline="guessing no"])]
+    )])
+  fi
+
+  if test $ac_cv_have_decl_getline = no; then
+    HAVE_DECL_GETLINE=0
+  fi
+
+  case "$am_cv_func_working_getline" in
+    *no)
+      dnl Set REPLACE_GETLINE always: Even if we have not found the broken
+      dnl getline function among $LIBS, it may exist in libinet and the
+      dnl executable may be linked with -linet.
+      REPLACE_GETLINE=1
+      ;;
+  esac
+])
+
+# Prerequisites of lib/getline.c.
+AC_DEFUN([gl_PREREQ_GETLINE],
+[
+  :
+])
index f6902b5..50f4509 100644 (file)
@@ -1,5 +1,5 @@
 # getopt.m4 serial 44
-dnl Copyright (C) 2002-2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2008-2013 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.
index 017d025..8d1f066 100644 (file)
@@ -1,5 +1,5 @@
 # gettext.m4 serial 66 (gettext-0.18.2)
-dnl Copyright (C) 1995-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1995-2013 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.
index c938fb1..613fb2a 100644 (file)
@@ -1,5 +1,5 @@
 # glibc21.m4 serial 5
-dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2012 Free Software Foundation,
+dnl Copyright (C) 2000-2002, 2004, 2008, 2010-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 15d2b2b..0ae5a9e 100644 (file)
@@ -1,5 +1,5 @@
 # gnulib-common.m4 serial 33
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
@@ -294,6 +294,8 @@ Amsterdam
 # for interoperability with automake-1.9.6 from autoconf-2.62.
 # Remove this macro when we can assume autoconf >= 2.62 or
 # autoconf >= 2.60 && automake >= 1.10.
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
+m4_ifndef([AC_AUTOCONF_VERSION],[
 m4_ifdef([AC_PROG_MKDIR_P], [
   dnl For automake-1.9.6 && autoconf < 2.62: Ensure MKDIR_P is AC_SUBSTed.
   m4_define([AC_PROG_MKDIR_P],
@@ -304,13 +306,15 @@ m4_ifdef([AC_PROG_MKDIR_P], [
     [AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
      MKDIR_P='$(mkdir_p)'
      AC_SUBST([MKDIR_P])])])
+])
 
 # AC_C_RESTRICT
 # This definition overrides the AC_C_RESTRICT macro from autoconf 2.60..2.61,
 # so that mixed use of GNU C and GNU C++ and mixed use of Sun C and Sun C++
 # works.
 # This definition can be removed once autoconf >= 2.62 can be assumed.
-m4_if(m4_version_compare(m4_defn([m4_PACKAGE_VERSION]),[2.62]),[-1],[
+# AC_AUTOCONF_VERSION was introduced in 2.62, so use that as the witness.
+m4_ifndef([AC_AUTOCONF_VERSION],[
 AC_DEFUN([AC_C_RESTRICT],
 [AC_CACHE_CHECK([for C/C++ restrict keyword], [ac_cv_c_restrict],
   [ac_cv_c_restrict=no
index de7153b..7613e64 100644 (file)
@@ -1,5 +1,5 @@
 # DO NOT EDIT! GENERATED AUTOMATICALLY!
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 Free Software Foundation, Inc.
 #
 # 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
@@ -67,6 +67,7 @@ AC_DEFUN([gl_EARLY],
   # Code from module exitfail:
   # Code from module extensions:
   AC_REQUIRE([gl_USE_SYSTEM_EXTENSIONS])
+  # Code from module extern-inline:
   # Code from module fatal-signal:
   # Code from module fcntl:
   # Code from module fcntl-h:
@@ -86,7 +87,9 @@ AC_DEFUN([gl_EARLY],
   # Code from module fseterr:
   # Code from module fstat:
   # Code from module gendocs:
+  # Code from module getdelim:
   # Code from module getdtablesize:
+  # Code from module getline:
   # Code from module getopt-gnu:
   # Code from module getopt-posix:
   # Code from module gettext:
@@ -100,7 +103,6 @@ AC_DEFUN([gl_EARLY],
   # Code from module hash:
   # Code from module havelib:
   # Code from module include_next:
-  # Code from module inline:
   # Code from module intprops:
   # Code from module inttypes:
   # Code from module inttypes-incomplete:
@@ -253,496 +255,506 @@ AC_DEFUN([gl_INIT],
   m4_pushdef([gl_LIBSOURCES_DIR], [])
   gl_COMMON
   gl_source_base='lib'
-gl_FUNC_ALLOCA
-gl_ASSERT
-AC_REQUIRE([AC_C_INLINE])
-AC_REQUIRE([AC_C_INLINE])
-gl_FUNC_CALLOC_POSIX
-if test $REPLACE_CALLOC = 1; then
-  AC_LIBOBJ([calloc])
-fi
-gl_STDLIB_MODULE_INDICATOR([calloc-posix])
-gl_MODULE_INDICATOR_FOR_TESTS([cloexec])
-gl_FUNC_CLOSE
-if test $REPLACE_CLOSE = 1; then
-  AC_LIBOBJ([close])
-fi
-gl_UNISTD_MODULE_INDICATOR([close])
-gl_CLOSE_STREAM
-gl_MODULE_INDICATOR([close-stream])
-gl_CLOSEOUT
-gl_CONFIG_H
-gl_CONFIGMAKE_PREP
-gl_DIRNAME
-gl_MODULE_INDICATOR([dirname])
-gl_DIRNAME_LGPL
-gl_DOUBLE_SLASH_ROOT
-gl_FUNC_DUP2
-if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
-  AC_LIBOBJ([dup2])
-  gl_PREREQ_DUP2
-fi
-gl_UNISTD_MODULE_INDICATOR([dup2])
-gl_ENVIRON
-gl_UNISTD_MODULE_INDICATOR([environ])
-gl_HEADER_ERRNO_H
-gl_ERROR
-if test $ac_cv_lib_error_at_line = no; then
-  AC_LIBOBJ([error])
-  gl_PREREQ_ERROR
-fi
-m4_ifdef([AM_XGETTEXT_OPTION],
-  [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
-   AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
-gl_FATAL_SIGNAL
-gl_FUNC_FCNTL
-if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
-  AC_LIBOBJ([fcntl])
-fi
-gl_FCNTL_MODULE_INDICATOR([fcntl])
-gl_FCNTL_H
-gl_MODULE_INDICATOR([fd-safer-flag])
-gl_FLOAT_H
-if test $REPLACE_FLOAT_LDBL = 1; then
-  AC_LIBOBJ([float])
-fi
-if test $REPLACE_ITOLD = 1; then
-  AC_LIBOBJ([itold])
-fi
-gl_FUNC_FOPEN
-if test $REPLACE_FOPEN = 1; then
-  AC_LIBOBJ([fopen])
-  gl_PREREQ_FOPEN
-fi
-gl_STDIO_MODULE_INDICATOR([fopen])
-gl_MODULE_INDICATOR([fopen-safer])
-gl_FUNC_FPENDING
-if test $ac_cv_func___fpending = no; then
-  AC_LIBOBJ([fpending])
-  gl_PREREQ_FPENDING
-fi
-gl_FUNC_FPRINTF_POSIX
-gl_STDIO_MODULE_INDICATOR([fprintf-posix])
-gl_FUNC_FREXP_NO_LIBM
-if test $gl_func_frexp_no_libm != yes; then
-  AC_LIBOBJ([frexp])
-fi
-gl_MATH_MODULE_INDICATOR([frexp])
-gl_FUNC_FREXPL_NO_LIBM
-if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
-  AC_LIBOBJ([frexpl])
-fi
-gl_MATH_MODULE_INDICATOR([frexpl])
-gl_FUNC_FSETERR
-if test $ac_cv_func___fseterr = no; then
-  AC_LIBOBJ([fseterr])
-fi
-gl_FUNC_FSTAT
-if test $REPLACE_FSTAT = 1; then
-  AC_LIBOBJ([fstat])
-  gl_PREREQ_FSTAT
-fi
-gl_SYS_STAT_MODULE_INDICATOR([fstat])
-gl_FUNC_GETDTABLESIZE
-if test $HAVE_GETDTABLESIZE = 0; then
-  AC_LIBOBJ([getdtablesize])
-  gl_PREREQ_GETDTABLESIZE
-fi
-gl_UNISTD_MODULE_INDICATOR([getdtablesize])
-gl_FUNC_GETOPT_GNU
-if test $REPLACE_GETOPT = 1; then
-  AC_LIBOBJ([getopt])
-  AC_LIBOBJ([getopt1])
-  gl_PREREQ_GETOPT
-  dnl Arrange for unistd.h to include getopt.h.
-  GNULIB_GL_UNISTD_H_GETOPT=1
-fi
-AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
-gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
-gl_FUNC_GETOPT_POSIX
-if test $REPLACE_GETOPT = 1; then
-  AC_LIBOBJ([getopt])
-  AC_LIBOBJ([getopt1])
-  gl_PREREQ_GETOPT
-  dnl Arrange for unistd.h to include getopt.h.
-  GNULIB_GL_UNISTD_H_GETOPT=1
-fi
-AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
-dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
-AM_GNU_GETTEXT_VERSION([0.18.1])
-AC_SUBST([LIBINTL])
-AC_SUBST([LTLIBINTL])
-# Autoconf 2.61a.99 and earlier don't support linking a file only
-# in VPATH builds.  But since GNUmakefile is for maintainer use
-# only, it does not matter if we skip the link with older autoconf.
-# Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
-# builds, so use a shell variable to bypass this.
-GNUmakefile=GNUmakefile
-m4_if(m4_version_compare([2.61a.100],
-        m4_defn([m4_PACKAGE_VERSION])), [1], [],
-      [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
-        [GNUmakefile=$GNUmakefile])])
-gl_INLINE
-gl_INTTYPES_H
-gl_INTTYPES_INCOMPLETE
-gl_ISNAN
-gl_MATH_MODULE_INDICATOR([isnan])
-gl_FUNC_ISNAND
-m4_ifdef([gl_ISNAN], [
-  AC_REQUIRE([gl_ISNAN])
-])
-if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then
-  AC_LIBOBJ([isnand])
-  gl_PREREQ_ISNAND
-fi
-gl_MATH_MODULE_INDICATOR([isnand])
-gl_FUNC_ISNAND_NO_LIBM
-if test $gl_func_isnand_no_libm != yes; then
-  AC_LIBOBJ([isnand])
-  gl_PREREQ_ISNAND
-fi
-gl_FUNC_ISNANF
-m4_ifdef([gl_ISNAN], [
-  AC_REQUIRE([gl_ISNAN])
-])
-if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then
-  AC_LIBOBJ([isnanf])
-  gl_PREREQ_ISNANF
-fi
-gl_MATH_MODULE_INDICATOR([isnanf])
-gl_FUNC_ISNANF_NO_LIBM
-if test $gl_func_isnanf_no_libm != yes; then
-  AC_LIBOBJ([isnanf])
-  gl_PREREQ_ISNANF
-fi
-gl_FUNC_ISNANL
-m4_ifdef([gl_ISNAN], [
-  AC_REQUIRE([gl_ISNAN])
-])
-if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then
-  AC_LIBOBJ([isnanl])
-  gl_PREREQ_ISNANL
-fi
-gl_MATH_MODULE_INDICATOR([isnanl])
-gl_FUNC_ISNANL_NO_LIBM
-if test $gl_func_isnanl_no_libm != yes; then
-  AC_LIBOBJ([isnanl])
-  gl_PREREQ_ISNANL
-fi
-gl_FUNC_ISWBLANK
-if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
-  :
-else
-  if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then
-    AC_LIBOBJ([iswblank])
-  fi
-fi
-gl_WCTYPE_MODULE_INDICATOR([iswblank])
-# You need to invoke gt_JAVACOMP yourself, possibly with arguments.
-AC_CONFIG_FILES([javacomp.sh:build-aux/javacomp.sh.in])
-# You need to invoke gt_JAVAEXEC yourself, possibly with arguments.
-AC_CONFIG_FILES([javaexec.sh:build-aux/javaexec.sh.in])
-AC_REQUIRE([gl_LARGEFILE])
-gl_FUNC_LDEXP
-gl_FUNC_LDEXPL
-if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
-  AC_LIBOBJ([ldexpl])
-fi
-gl_MATH_MODULE_INDICATOR([ldexpl])
-gl_LOCALCHARSET
-LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
-AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
-gl_LOCK
-AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
-  [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
-gl_FUNC_MALLOC_GNU
-if test $REPLACE_MALLOC = 1; then
-  AC_LIBOBJ([malloc])
-fi
-gl_MODULE_INDICATOR([malloc-gnu])
-gl_FUNC_MALLOC_POSIX
-if test $REPLACE_MALLOC = 1; then
-  AC_LIBOBJ([malloc])
-fi
-gl_STDLIB_MODULE_INDICATOR([malloc-posix])
-gl_MATH_H
-gl_MBCHAR
-gl_FUNC_MBRTOWC
-if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
-  AC_LIBOBJ([mbrtowc])
-  gl_PREREQ_MBRTOWC
-fi
-gl_WCHAR_MODULE_INDICATOR([mbrtowc])
-gl_STRING_MODULE_INDICATOR([mbschr])
-gl_FUNC_MBSINIT
-if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
-  AC_LIBOBJ([mbsinit])
-  gl_PREREQ_MBSINIT
-fi
-gl_WCHAR_MODULE_INDICATOR([mbsinit])
-gl_STRING_MODULE_INDICATOR([mbsrchr])
-gl_MBSWIDTH
-gl_MBITER
-gl_FUNC_MEMCHR
-if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
-  AC_LIBOBJ([memchr])
-  gl_PREREQ_MEMCHR
-fi
-gl_STRING_MODULE_INDICATOR([memchr])
-gl_MSVC_INVAL
-if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
-  AC_LIBOBJ([msvc-inval])
-fi
-gl_MSVC_NOTHROW
-if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
-  AC_LIBOBJ([msvc-nothrow])
-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])
-  gl_PREREQ_OPEN
-fi
-gl_FCNTL_MODULE_INDICATOR([open])
-gl_PATHMAX
-gl_FUNC_PERROR
-if test $REPLACE_PERROR = 1; then
-  AC_LIBOBJ([perror])
-fi
-gl_STRING_MODULE_INDICATOR([perror])
-gl_FUNC_PIPE2
-gl_UNISTD_MODULE_INDICATOR([pipe2])
-gl_MODULE_INDICATOR([pipe2-safer])
-gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then
-  AC_LIBOBJ([spawn_faction_addclose])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_addclose])
-gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then
-  AC_LIBOBJ([spawn_faction_adddup2])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_adddup2])
-gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then
-  AC_LIBOBJ([spawn_faction_addopen])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_addopen])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawn_faction_destroy])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_destroy])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawn_faction_init])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_init])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawnattr_destroy])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_destroy])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawnattr_init])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_init])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawnattr_setflags])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_setflags])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawnattr_setsigmask])
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_setsigmask])
-gl_POSIX_SPAWN
-if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
-  AC_LIBOBJ([spawnp])
-  AC_LIBOBJ([spawni])
-  gl_PREREQ_POSIX_SPAWN_INTERNAL
-fi
-gl_SPAWN_MODULE_INDICATOR([posix_spawnp])
-gl_FUNC_PRINTF_FREXP
-gl_FUNC_PRINTF_FREXPL
-gl_FUNC_PRINTF_POSIX
-gl_STDIO_MODULE_INDICATOR([printf-posix])
-m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
-AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
-AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
-gl_QUOTE
-gl_QUOTEARG
-gl_FUNC_RAISE
-if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
-  AC_LIBOBJ([raise])
-  gl_PREREQ_RAISE
-fi
-gl_SIGNAL_MODULE_INDICATOR([raise])
-gl_FUNC_RAWMEMCHR
-if test $HAVE_RAWMEMCHR = 0; then
-  AC_LIBOBJ([rawmemchr])
-  gl_PREREQ_RAWMEMCHR
-fi
-gl_STRING_MODULE_INDICATOR([rawmemchr])
-gl_FUNC_REALLOC_POSIX
-if test $REPLACE_REALLOC = 1; then
-  AC_LIBOBJ([realloc])
-fi
-gl_STDLIB_MODULE_INDICATOR([realloc-posix])
-gl_SCHED_H
-gl_SIGACTION
-if test $HAVE_SIGACTION = 0; then
-  AC_LIBOBJ([sigaction])
-  gl_PREREQ_SIGACTION
-fi
-gl_SIGNAL_MODULE_INDICATOR([sigaction])
-gl_SIGNAL_H
-gl_SIGNBIT
-if test $REPLACE_SIGNBIT = 1; then
-  AC_LIBOBJ([signbitf])
-  AC_LIBOBJ([signbitd])
-  AC_LIBOBJ([signbitl])
-fi
-gl_MATH_MODULE_INDICATOR([signbit])
-gl_SIGNALBLOCKING
-if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
-  AC_LIBOBJ([sigprocmask])
-  gl_PREREQ_SIGPROCMASK
-fi
-gl_SIGNAL_MODULE_INDICATOR([sigprocmask])
-gl_SIZE_MAX
-gl_FUNC_SNPRINTF
-gl_STDIO_MODULE_INDICATOR([snprintf])
-gl_MODULE_INDICATOR([snprintf])
-gl_FUNC_SNPRINTF_POSIX
-gl_SPAWN_H
-gl_SPAWN_PIPE
-gl_FUNC_SPRINTF_POSIX
-gl_STDIO_MODULE_INDICATOR([sprintf-posix])
-gt_TYPE_SSIZE_T
-gl_FUNC_STAT
-if test $REPLACE_STAT = 1; then
-  AC_LIBOBJ([stat])
-  gl_PREREQ_STAT
-fi
-gl_SYS_STAT_MODULE_INDICATOR([stat])
-AM_STDBOOL_H
-gl_STDDEF_H
-gl_STDINT_H
-gl_STDIO_H
-gl_STDLIB_H
-gl_FUNC_STPCPY
-if test $HAVE_STPCPY = 0; then
-  AC_LIBOBJ([stpcpy])
-  gl_PREREQ_STPCPY
-fi
-gl_STRING_MODULE_INDICATOR([stpcpy])
-gl_FUNC_STRCHRNUL
-if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
-  AC_LIBOBJ([strchrnul])
-  gl_PREREQ_STRCHRNUL
-fi
-gl_STRING_MODULE_INDICATOR([strchrnul])
-gl_FUNC_STRDUP_POSIX
-if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then
-  AC_LIBOBJ([strdup])
-  gl_PREREQ_STRDUP
-fi
-gl_STRING_MODULE_INDICATOR([strdup])
-gl_FUNC_STRERROR
-if test $REPLACE_STRERROR = 1; then
-  AC_LIBOBJ([strerror])
-fi
-gl_MODULE_INDICATOR([strerror])
-gl_STRING_MODULE_INDICATOR([strerror])
-AC_REQUIRE([gl_HEADER_ERRNO_H])
-AC_REQUIRE([gl_FUNC_STRERROR_0])
-if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
-  AC_LIBOBJ([strerror-override])
-  gl_PREREQ_SYS_H_WINSOCK2
-fi
-gl_FUNC_STRERROR_R
-if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
-  AC_LIBOBJ([strerror_r])
-  gl_PREREQ_STRERROR_R
-fi
-gl_STRING_MODULE_INDICATOR([strerror_r])
-gl_HEADER_STRING_H
-gl_FUNC_STRNDUP
-if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
-  AC_LIBOBJ([strndup])
-fi
-gl_STRING_MODULE_INDICATOR([strndup])
-gl_FUNC_STRNLEN
-if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
-  AC_LIBOBJ([strnlen])
-  gl_PREREQ_STRNLEN
-fi
-gl_STRING_MODULE_INDICATOR([strnlen])
-gl_FUNC_STRTOUL
-if test $ac_cv_func_strtoul = no; then
-  AC_LIBOBJ([strtoul])
-fi
-gl_FUNC_STRVERSCMP
-if test $HAVE_STRVERSCMP = 0; then
-  AC_LIBOBJ([strverscmp])
-  gl_PREREQ_STRVERSCMP
-fi
-gl_STRING_MODULE_INDICATOR([strverscmp])
-gl_HEADER_SYS_STAT_H
-AC_PROG_MKDIR_P
-gl_SYS_TYPES_H
-AC_PROG_MKDIR_P
-gl_SYS_WAIT_H
-AC_PROG_MKDIR_P
-gl_THREADLIB
-gl_HEADER_TIME_H
-gl_UNISTD_H
-gl_UNISTD_SAFER
-gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
-gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
-gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
-gl_FUNC_GLIBC_UNLOCKED_IO
-gl_FUNC_UNSETENV
-if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
-  AC_LIBOBJ([unsetenv])
-  gl_PREREQ_UNSETENV
-fi
-gl_STDLIB_MODULE_INDICATOR([unsetenv])
-gl_FUNC_VASNPRINTF
-gl_FUNC_VFPRINTF_POSIX
-gl_STDIO_MODULE_INDICATOR([vfprintf-posix])
-gl_FUNC_VSNPRINTF
-gl_STDIO_MODULE_INDICATOR([vsnprintf])
-gl_FUNC_VSNPRINTF_POSIX
-gl_FUNC_VSPRINTF_POSIX
-gl_STDIO_MODULE_INDICATOR([vsprintf-posix])
-gl_WAIT_PROCESS
-gl_FUNC_WAITPID
-if test $HAVE_WAITPID = 0; then
-  AC_LIBOBJ([waitpid])
-fi
-gl_SYS_WAIT_MODULE_INDICATOR([waitpid])
-gl_WCHAR_H
-gl_WCTYPE_H
-gl_FUNC_WCWIDTH
-if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
-  AC_LIBOBJ([wcwidth])
-fi
-gl_WCHAR_MODULE_INDICATOR([wcwidth])
-gl_XALLOC
-AC_LIBOBJ([xmemdup0])
-gl_XSIZE
-gl_XSTRNDUP
+  gl_FUNC_ALLOCA
+  gl_ASSERT
+  gl_FUNC_CALLOC_POSIX
+  if test $REPLACE_CALLOC = 1; then
+    AC_LIBOBJ([calloc])
+  fi
+  gl_STDLIB_MODULE_INDICATOR([calloc-posix])
+  gl_MODULE_INDICATOR_FOR_TESTS([cloexec])
+  gl_FUNC_CLOSE
+  if test $REPLACE_CLOSE = 1; then
+    AC_LIBOBJ([close])
+  fi
+  gl_UNISTD_MODULE_INDICATOR([close])
+  gl_CLOSE_STREAM
+  gl_MODULE_INDICATOR([close-stream])
+  gl_CLOSEOUT
+  gl_CONFIG_H
+  gl_CONFIGMAKE_PREP
+  gl_DIRNAME
+  gl_MODULE_INDICATOR([dirname])
+  gl_DIRNAME_LGPL
+  gl_DOUBLE_SLASH_ROOT
+  gl_FUNC_DUP2
+  if test $HAVE_DUP2 = 0 || test $REPLACE_DUP2 = 1; then
+    AC_LIBOBJ([dup2])
+    gl_PREREQ_DUP2
+  fi
+  gl_UNISTD_MODULE_INDICATOR([dup2])
+  gl_ENVIRON
+  gl_UNISTD_MODULE_INDICATOR([environ])
+  gl_HEADER_ERRNO_H
+  gl_ERROR
+  if test $ac_cv_lib_error_at_line = no; then
+    AC_LIBOBJ([error])
+    gl_PREREQ_ERROR
+  fi
+  m4_ifdef([AM_XGETTEXT_OPTION],
+    [AM_][XGETTEXT_OPTION([--flag=error:3:c-format])
+     AM_][XGETTEXT_OPTION([--flag=error_at_line:5:c-format])])
+  AC_REQUIRE([gl_EXTERN_INLINE])
+  gl_FATAL_SIGNAL
+  gl_FUNC_FCNTL
+  if test $HAVE_FCNTL = 0 || test $REPLACE_FCNTL = 1; then
+    AC_LIBOBJ([fcntl])
+  fi
+  gl_FCNTL_MODULE_INDICATOR([fcntl])
+  gl_FCNTL_H
+  gl_MODULE_INDICATOR([fd-safer-flag])
+  gl_FLOAT_H
+  if test $REPLACE_FLOAT_LDBL = 1; then
+    AC_LIBOBJ([float])
+  fi
+  if test $REPLACE_ITOLD = 1; then
+    AC_LIBOBJ([itold])
+  fi
+  gl_FUNC_FOPEN
+  if test $REPLACE_FOPEN = 1; then
+    AC_LIBOBJ([fopen])
+    gl_PREREQ_FOPEN
+  fi
+  gl_STDIO_MODULE_INDICATOR([fopen])
+  gl_MODULE_INDICATOR([fopen-safer])
+  gl_FUNC_FPENDING
+  if test $ac_cv_func___fpending = no; then
+    AC_LIBOBJ([fpending])
+    gl_PREREQ_FPENDING
+  fi
+  gl_FUNC_FPRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([fprintf-posix])
+  gl_FUNC_FREXP_NO_LIBM
+  if test $gl_func_frexp_no_libm != yes; then
+    AC_LIBOBJ([frexp])
+  fi
+  gl_MATH_MODULE_INDICATOR([frexp])
+  gl_FUNC_FREXPL_NO_LIBM
+  if test $HAVE_DECL_FREXPL = 0 || test $gl_func_frexpl_no_libm = no; then
+    AC_LIBOBJ([frexpl])
+  fi
+  gl_MATH_MODULE_INDICATOR([frexpl])
+  gl_FUNC_FSETERR
+  if test $ac_cv_func___fseterr = no; then
+    AC_LIBOBJ([fseterr])
+  fi
+  gl_FUNC_FSTAT
+  if test $REPLACE_FSTAT = 1; then
+    AC_LIBOBJ([fstat])
+    gl_PREREQ_FSTAT
+  fi
+  gl_SYS_STAT_MODULE_INDICATOR([fstat])
+  gl_FUNC_GETDELIM
+  if test $HAVE_GETDELIM = 0 || test $REPLACE_GETDELIM = 1; then
+    AC_LIBOBJ([getdelim])
+    gl_PREREQ_GETDELIM
+  fi
+  gl_STDIO_MODULE_INDICATOR([getdelim])
+  gl_FUNC_GETDTABLESIZE
+  if test $HAVE_GETDTABLESIZE = 0; then
+    AC_LIBOBJ([getdtablesize])
+    gl_PREREQ_GETDTABLESIZE
+  fi
+  gl_UNISTD_MODULE_INDICATOR([getdtablesize])
+  gl_FUNC_GETLINE
+  if test $REPLACE_GETLINE = 1; then
+    AC_LIBOBJ([getline])
+    gl_PREREQ_GETLINE
+  fi
+  gl_STDIO_MODULE_INDICATOR([getline])
+  gl_FUNC_GETOPT_GNU
+  if test $REPLACE_GETOPT = 1; then
+    AC_LIBOBJ([getopt])
+    AC_LIBOBJ([getopt1])
+    gl_PREREQ_GETOPT
+    dnl Arrange for unistd.h to include getopt.h.
+    GNULIB_GL_UNISTD_H_GETOPT=1
+  fi
+  AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
+  gl_MODULE_INDICATOR_FOR_TESTS([getopt-gnu])
+  gl_FUNC_GETOPT_POSIX
+  if test $REPLACE_GETOPT = 1; then
+    AC_LIBOBJ([getopt])
+    AC_LIBOBJ([getopt1])
+    gl_PREREQ_GETOPT
+    dnl Arrange for unistd.h to include getopt.h.
+    GNULIB_GL_UNISTD_H_GETOPT=1
+  fi
+  AC_SUBST([GNULIB_GL_UNISTD_H_GETOPT])
+  dnl you must add AM_GNU_GETTEXT([external]) or similar to configure.ac.
+  AM_GNU_GETTEXT_VERSION([0.18.1])
+  AC_SUBST([LIBINTL])
+  AC_SUBST([LTLIBINTL])
+  # Autoconf 2.61a.99 and earlier don't support linking a file only
+  # in VPATH builds.  But since GNUmakefile is for maintainer use
+  # only, it does not matter if we skip the link with older autoconf.
+  # Automake 1.10.1 and earlier try to remove GNUmakefile in non-VPATH
+  # builds, so use a shell variable to bypass this.
+  GNUmakefile=GNUmakefile
+  m4_if(m4_version_compare([2.61a.100],
+          m4_defn([m4_PACKAGE_VERSION])), [1], [],
+        [AC_CONFIG_LINKS([$GNUmakefile:$GNUmakefile], [],
+          [GNUmakefile=$GNUmakefile])])
+  gl_INTTYPES_H
+  gl_INTTYPES_INCOMPLETE
+  gl_ISNAN
+  gl_MATH_MODULE_INDICATOR([isnan])
+  gl_FUNC_ISNAND
+  m4_ifdef([gl_ISNAN], [
+    AC_REQUIRE([gl_ISNAN])
+  ])
+  if test $HAVE_ISNAND = 0 || test $REPLACE_ISNAN = 1; then
+    AC_LIBOBJ([isnand])
+    gl_PREREQ_ISNAND
+  fi
+  gl_MATH_MODULE_INDICATOR([isnand])
+  gl_FUNC_ISNAND_NO_LIBM
+  if test $gl_func_isnand_no_libm != yes; then
+    AC_LIBOBJ([isnand])
+    gl_PREREQ_ISNAND
+  fi
+  gl_FUNC_ISNANF
+  m4_ifdef([gl_ISNAN], [
+    AC_REQUIRE([gl_ISNAN])
+  ])
+  if test $HAVE_ISNANF = 0 || test $REPLACE_ISNAN = 1; then
+    AC_LIBOBJ([isnanf])
+    gl_PREREQ_ISNANF
+  fi
+  gl_MATH_MODULE_INDICATOR([isnanf])
+  gl_FUNC_ISNANF_NO_LIBM
+  if test $gl_func_isnanf_no_libm != yes; then
+    AC_LIBOBJ([isnanf])
+    gl_PREREQ_ISNANF
+  fi
+  gl_FUNC_ISNANL
+  m4_ifdef([gl_ISNAN], [
+    AC_REQUIRE([gl_ISNAN])
+  ])
+  if test $HAVE_ISNANL = 0 || test $REPLACE_ISNAN = 1; then
+    AC_LIBOBJ([isnanl])
+    gl_PREREQ_ISNANL
+  fi
+  gl_MATH_MODULE_INDICATOR([isnanl])
+  gl_FUNC_ISNANL_NO_LIBM
+  if test $gl_func_isnanl_no_libm != yes; then
+    AC_LIBOBJ([isnanl])
+    gl_PREREQ_ISNANL
+  fi
+  gl_FUNC_ISWBLANK
+  if test $HAVE_ISWCNTRL = 0 || test $REPLACE_ISWCNTRL = 1; then
+    :
+  else
+    if test $HAVE_ISWBLANK = 0 || test $REPLACE_ISWBLANK = 1; then
+      AC_LIBOBJ([iswblank])
+    fi
+  fi
+  gl_WCTYPE_MODULE_INDICATOR([iswblank])
+  # You need to invoke gt_JAVACOMP yourself, possibly with arguments.
+  AC_CONFIG_FILES([javacomp.sh:build-aux/javacomp.sh.in])
+  # You need to invoke gt_JAVAEXEC yourself, possibly with arguments.
+  AC_CONFIG_FILES([javaexec.sh:build-aux/javaexec.sh.in])
+  AC_REQUIRE([gl_LARGEFILE])
+  gl_FUNC_LDEXP
+  gl_FUNC_LDEXPL
+  if test $HAVE_DECL_LDEXPL = 0 || test $gl_func_ldexpl = no; then
+    AC_LIBOBJ([ldexpl])
+  fi
+  gl_MATH_MODULE_INDICATOR([ldexpl])
+  gl_LOCALCHARSET
+  LOCALCHARSET_TESTS_ENVIRONMENT="CHARSETALIASDIR=\"\$(abs_top_builddir)/$gl_source_base\""
+  AC_SUBST([LOCALCHARSET_TESTS_ENVIRONMENT])
+  gl_LOCK
+  AC_CONFIG_COMMANDS_PRE([m4_ifdef([AH_HEADER],
+    [AC_SUBST([CONFIG_INCLUDE], m4_defn([AH_HEADER]))])])
+  gl_FUNC_MALLOC_GNU
+  if test $REPLACE_MALLOC = 1; then
+    AC_LIBOBJ([malloc])
+  fi
+  gl_MODULE_INDICATOR([malloc-gnu])
+  gl_FUNC_MALLOC_POSIX
+  if test $REPLACE_MALLOC = 1; then
+    AC_LIBOBJ([malloc])
+  fi
+  gl_STDLIB_MODULE_INDICATOR([malloc-posix])
+  gl_MATH_H
+  gl_MBCHAR
+  gl_FUNC_MBRTOWC
+  if test $HAVE_MBRTOWC = 0 || test $REPLACE_MBRTOWC = 1; then
+    AC_LIBOBJ([mbrtowc])
+    gl_PREREQ_MBRTOWC
+  fi
+  gl_WCHAR_MODULE_INDICATOR([mbrtowc])
+  gl_STRING_MODULE_INDICATOR([mbschr])
+  gl_FUNC_MBSINIT
+  if test $HAVE_MBSINIT = 0 || test $REPLACE_MBSINIT = 1; then
+    AC_LIBOBJ([mbsinit])
+    gl_PREREQ_MBSINIT
+  fi
+  gl_WCHAR_MODULE_INDICATOR([mbsinit])
+  gl_STRING_MODULE_INDICATOR([mbsrchr])
+  gl_MBSWIDTH
+  gl_MBITER
+  gl_FUNC_MEMCHR
+  if test $HAVE_MEMCHR = 0 || test $REPLACE_MEMCHR = 1; then
+    AC_LIBOBJ([memchr])
+    gl_PREREQ_MEMCHR
+  fi
+  gl_STRING_MODULE_INDICATOR([memchr])
+  gl_MSVC_INVAL
+  if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+    AC_LIBOBJ([msvc-inval])
+  fi
+  gl_MSVC_NOTHROW
+  if test $HAVE_MSVC_INVALID_PARAMETER_HANDLER = 1; then
+    AC_LIBOBJ([msvc-nothrow])
+  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])
+    gl_PREREQ_OPEN
+  fi
+  gl_FCNTL_MODULE_INDICATOR([open])
+  gl_PATHMAX
+  gl_FUNC_PERROR
+  if test $REPLACE_PERROR = 1; then
+    AC_LIBOBJ([perror])
+  fi
+  gl_STRING_MODULE_INDICATOR([perror])
+  gl_FUNC_PIPE2
+  gl_UNISTD_MODULE_INDICATOR([pipe2])
+  gl_MODULE_INDICATOR([pipe2-safer])
+  gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDCLOSE = 1; then
+    AC_LIBOBJ([spawn_faction_addclose])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_addclose])
+  gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDDUP2 = 1; then
+    AC_LIBOBJ([spawn_faction_adddup2])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_adddup2])
+  gl_FUNC_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = 1; then
+    AC_LIBOBJ([spawn_faction_addopen])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_addopen])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawn_faction_destroy])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_destroy])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawn_faction_init])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawn_file_actions_init])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawnattr_destroy])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_destroy])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawnattr_init])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_init])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawnattr_setflags])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_setflags])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawnattr_setsigmask])
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawnattr_setsigmask])
+  gl_POSIX_SPAWN
+  if test $HAVE_POSIX_SPAWN = 0 || test $REPLACE_POSIX_SPAWN = 1; then
+    AC_LIBOBJ([spawnp])
+    AC_LIBOBJ([spawni])
+    gl_PREREQ_POSIX_SPAWN_INTERNAL
+  fi
+  gl_SPAWN_MODULE_INDICATOR([posix_spawnp])
+  gl_FUNC_PRINTF_FREXP
+  gl_FUNC_PRINTF_FREXPL
+  gl_FUNC_PRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([printf-posix])
+  m4_divert_text([INIT_PREPARE], [gl_printf_safe=yes])
+  AC_CHECK_DECLS([program_invocation_name], [], [], [#include <errno.h>])
+  AC_CHECK_DECLS([program_invocation_short_name], [], [], [#include <errno.h>])
+  gl_QUOTE
+  gl_QUOTEARG
+  gl_FUNC_RAISE
+  if test $HAVE_RAISE = 0 || test $REPLACE_RAISE = 1; then
+    AC_LIBOBJ([raise])
+    gl_PREREQ_RAISE
+  fi
+  gl_SIGNAL_MODULE_INDICATOR([raise])
+  gl_FUNC_RAWMEMCHR
+  if test $HAVE_RAWMEMCHR = 0; then
+    AC_LIBOBJ([rawmemchr])
+    gl_PREREQ_RAWMEMCHR
+  fi
+  gl_STRING_MODULE_INDICATOR([rawmemchr])
+  gl_FUNC_REALLOC_POSIX
+  if test $REPLACE_REALLOC = 1; then
+    AC_LIBOBJ([realloc])
+  fi
+  gl_STDLIB_MODULE_INDICATOR([realloc-posix])
+  gl_SCHED_H
+  gl_SIGACTION
+  if test $HAVE_SIGACTION = 0; then
+    AC_LIBOBJ([sigaction])
+    gl_PREREQ_SIGACTION
+  fi
+  gl_SIGNAL_MODULE_INDICATOR([sigaction])
+  gl_SIGNAL_H
+  gl_SIGNBIT
+  if test $REPLACE_SIGNBIT = 1; then
+    AC_LIBOBJ([signbitf])
+    AC_LIBOBJ([signbitd])
+    AC_LIBOBJ([signbitl])
+  fi
+  gl_MATH_MODULE_INDICATOR([signbit])
+  gl_SIGNALBLOCKING
+  if test $HAVE_POSIX_SIGNALBLOCKING = 0; then
+    AC_LIBOBJ([sigprocmask])
+    gl_PREREQ_SIGPROCMASK
+  fi
+  gl_SIGNAL_MODULE_INDICATOR([sigprocmask])
+  gl_SIZE_MAX
+  gl_FUNC_SNPRINTF
+  gl_STDIO_MODULE_INDICATOR([snprintf])
+  gl_MODULE_INDICATOR([snprintf])
+  gl_FUNC_SNPRINTF_POSIX
+  gl_SPAWN_H
+  gl_SPAWN_PIPE
+  gl_FUNC_SPRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([sprintf-posix])
+  gt_TYPE_SSIZE_T
+  gl_FUNC_STAT
+  if test $REPLACE_STAT = 1; then
+    AC_LIBOBJ([stat])
+    gl_PREREQ_STAT
+  fi
+  gl_SYS_STAT_MODULE_INDICATOR([stat])
+  AM_STDBOOL_H
+  gl_STDDEF_H
+  gl_STDINT_H
+  gl_STDIO_H
+  gl_STDLIB_H
+  gl_FUNC_STPCPY
+  if test $HAVE_STPCPY = 0; then
+    AC_LIBOBJ([stpcpy])
+    gl_PREREQ_STPCPY
+  fi
+  gl_STRING_MODULE_INDICATOR([stpcpy])
+  gl_FUNC_STRCHRNUL
+  if test $HAVE_STRCHRNUL = 0 || test $REPLACE_STRCHRNUL = 1; then
+    AC_LIBOBJ([strchrnul])
+    gl_PREREQ_STRCHRNUL
+  fi
+  gl_STRING_MODULE_INDICATOR([strchrnul])
+  gl_FUNC_STRDUP_POSIX
+  if test $ac_cv_func_strdup = no || test $REPLACE_STRDUP = 1; then
+    AC_LIBOBJ([strdup])
+    gl_PREREQ_STRDUP
+  fi
+  gl_STRING_MODULE_INDICATOR([strdup])
+  gl_FUNC_STRERROR
+  if test $REPLACE_STRERROR = 1; then
+    AC_LIBOBJ([strerror])
+  fi
+  gl_MODULE_INDICATOR([strerror])
+  gl_STRING_MODULE_INDICATOR([strerror])
+  AC_REQUIRE([gl_HEADER_ERRNO_H])
+  AC_REQUIRE([gl_FUNC_STRERROR_0])
+  if test -n "$ERRNO_H" || test $REPLACE_STRERROR_0 = 1; then
+    AC_LIBOBJ([strerror-override])
+    gl_PREREQ_SYS_H_WINSOCK2
+  fi
+  gl_FUNC_STRERROR_R
+  if test $HAVE_DECL_STRERROR_R = 0 || test $REPLACE_STRERROR_R = 1; then
+    AC_LIBOBJ([strerror_r])
+    gl_PREREQ_STRERROR_R
+  fi
+  gl_STRING_MODULE_INDICATOR([strerror_r])
+  gl_HEADER_STRING_H
+  gl_FUNC_STRNDUP
+  if test $HAVE_STRNDUP = 0 || test $REPLACE_STRNDUP = 1; then
+    AC_LIBOBJ([strndup])
+  fi
+  gl_STRING_MODULE_INDICATOR([strndup])
+  gl_FUNC_STRNLEN
+  if test $HAVE_DECL_STRNLEN = 0 || test $REPLACE_STRNLEN = 1; then
+    AC_LIBOBJ([strnlen])
+    gl_PREREQ_STRNLEN
+  fi
+  gl_STRING_MODULE_INDICATOR([strnlen])
+  gl_FUNC_STRTOUL
+  if test $ac_cv_func_strtoul = no; then
+    AC_LIBOBJ([strtoul])
+  fi
+  gl_FUNC_STRVERSCMP
+  if test $HAVE_STRVERSCMP = 0; then
+    AC_LIBOBJ([strverscmp])
+    gl_PREREQ_STRVERSCMP
+  fi
+  gl_STRING_MODULE_INDICATOR([strverscmp])
+  gl_HEADER_SYS_STAT_H
+  AC_PROG_MKDIR_P
+  gl_SYS_TYPES_H
+  AC_PROG_MKDIR_P
+  gl_SYS_WAIT_H
+  AC_PROG_MKDIR_P
+  gl_THREADLIB
+  gl_HEADER_TIME_H
+  gl_UNISTD_H
+  gl_UNISTD_SAFER
+  gl_LIBUNISTRING_LIBHEADER([0.9], [unitypes.h])
+  gl_LIBUNISTRING_LIBHEADER([0.9], [uniwidth.h])
+  gl_LIBUNISTRING_MODULE([0.9.4], [uniwidth/width])
+  gl_FUNC_GLIBC_UNLOCKED_IO
+  gl_FUNC_UNSETENV
+  if test $HAVE_UNSETENV = 0 || test $REPLACE_UNSETENV = 1; then
+    AC_LIBOBJ([unsetenv])
+    gl_PREREQ_UNSETENV
+  fi
+  gl_STDLIB_MODULE_INDICATOR([unsetenv])
+  gl_FUNC_VASNPRINTF
+  gl_FUNC_VFPRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([vfprintf-posix])
+  gl_FUNC_VSNPRINTF
+  gl_STDIO_MODULE_INDICATOR([vsnprintf])
+  gl_FUNC_VSNPRINTF_POSIX
+  gl_FUNC_VSPRINTF_POSIX
+  gl_STDIO_MODULE_INDICATOR([vsprintf-posix])
+  gl_WAIT_PROCESS
+  gl_FUNC_WAITPID
+  if test $HAVE_WAITPID = 0; then
+    AC_LIBOBJ([waitpid])
+  fi
+  gl_SYS_WAIT_MODULE_INDICATOR([waitpid])
+  gl_WCHAR_H
+  gl_WCTYPE_H
+  gl_FUNC_WCWIDTH
+  if test $HAVE_WCWIDTH = 0 || test $REPLACE_WCWIDTH = 1; then
+    AC_LIBOBJ([wcwidth])
+  fi
+  gl_WCHAR_MODULE_INDICATOR([wcwidth])
+  gl_XALLOC
+  AC_LIBOBJ([xmemdup0])
+  gl_XSIZE
+  gl_XSTRNDUP
   # End of code from modules
   m4_ifval(gl_LIBSOURCES_LIST, [
     m4_syscmd([test ! -d ]m4_defn([gl_LIBSOURCES_DIR])[ ||
@@ -909,7 +921,9 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/asnprintf.c
   lib/basename-lgpl.c
   lib/basename.c
+  lib/binary-io.c
   lib/binary-io.h
+  lib/bitrotate.c
   lib/bitrotate.h
   lib/c-ctype.c
   lib/c-ctype.h
@@ -960,7 +974,9 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/fseterr.c
   lib/fseterr.h
   lib/fstat.c
+  lib/getdelim.c
   lib/getdtablesize.c
+  lib/getline.c
   lib/getopt.c
   lib/getopt.in.h
   lib/getopt1.c
@@ -986,6 +1002,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/localcharset.c
   lib/localcharset.h
   lib/malloc.c
+  lib/math.c
   lib/math.in.h
   lib/mbchar.c
   lib/mbchar.h
@@ -995,6 +1012,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/mbsrchr.c
   lib/mbswidth.c
   lib/mbswidth.h
+  lib/mbuiter.c
   lib/mbuiter.h
   lib/memchr.c
   lib/memchr.valgrind
@@ -1032,6 +1050,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/ref-add.sin
   lib/ref-del.sin
   lib/sched.in.h
+  lib/sig-handler.c
   lib/sig-handler.h
   lib/sigaction.c
   lib/signal.in.h
@@ -1090,6 +1109,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/time.in.h
   lib/unistd--.h
   lib/unistd-safer.h
+  lib/unistd.c
   lib/unistd.in.h
   lib/unitypes.in.h
   lib/uniwidth.in.h
@@ -1108,6 +1128,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/wait-process.h
   lib/waitpid.c
   lib/wchar.in.h
+  lib/wctype-h.c
   lib/wctype.in.h
   lib/wcwidth.c
   lib/xalloc-die.c
@@ -1116,6 +1137,7 @@ AC_DEFUN([gl_FILE_LIST], [
   lib/xmalloc.c
   lib/xmemdup0.c
   lib/xmemdup0.h
+  lib/xsize.c
   lib/xsize.h
   lib/xstrndup.c
   lib/xstrndup.h
@@ -1140,6 +1162,7 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/exponentf.m4
   m4/exponentl.m4
   m4/extensions.m4
+  m4/extern-inline.m4
   m4/fatal-signal.m4
   m4/fcntl-o.m4
   m4/fcntl.m4
@@ -1153,7 +1176,9 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/frexpl.m4
   m4/fseterr.m4
   m4/fstat.m4
+  m4/getdelim.m4
   m4/getdtablesize.m4
+  m4/getline.m4
   m4/getopt.m4
   m4/gettext.m4
   m4/glibc2.m4
@@ -1161,7 +1186,6 @@ AC_DEFUN([gl_FILE_LIST], [
   m4/gnulib-common.m4
   m4/iconv.m4
   m4/include_next.m4
-  m4/inline.m4
   m4/intdiv0.m4
   m4/intl.m4
   m4/intldir.m4
index 6a47236..a503646 100644 (file)
@@ -1,5 +1,5 @@
 # iconv.m4 serial 18 (gettext-0.18.2)
-dnl Copyright (C) 2000-2002, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2007-2013 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.
index a60a261..108d945 100644 (file)
@@ -1,5 +1,5 @@
 # include_next.m4 serial 23
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2013 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.
diff --git a/m4/inline.m4 b/m4/inline.m4
deleted file mode 100644 (file)
index 6fa9972..0000000
+++ /dev/null
@@ -1,40 +0,0 @@
-# inline.m4 serial 4
-dnl Copyright (C) 2006, 2009-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 Test for the 'inline' keyword or equivalent.
-dnl Define 'inline' to a supported equivalent, or to nothing if not supported,
-dnl like AC_C_INLINE does.  Also, define HAVE_INLINE if 'inline' or an
-dnl equivalent is effectively supported, i.e. if the compiler is likely to
-dnl drop unused 'static inline' functions.
-AC_DEFUN([gl_INLINE],
-[
-  AC_REQUIRE([AC_C_INLINE])
-  AC_CACHE_CHECK([whether the compiler generally respects inline],
-    [gl_cv_c_inline_effective],
-    [if test $ac_cv_c_inline = no; then
-       gl_cv_c_inline_effective=no
-     else
-       dnl GCC defines __NO_INLINE__ if not optimizing or if -fno-inline is
-       dnl specified.
-       dnl Use AC_COMPILE_IFELSE here, not AC_EGREP_CPP, because the result
-       dnl depends on optimization flags, which can be in CFLAGS.
-       dnl (AC_EGREP_CPP looks only at the CPPFLAGS.)
-       AC_COMPILE_IFELSE(
-         [AC_LANG_PROGRAM([[]],
-           [[#ifdef __NO_INLINE__
-               #error "inline is not effective"
-             #endif]])],
-         [gl_cv_c_inline_effective=yes],
-         [gl_cv_c_inline_effective=no])
-     fi
-    ])
-  if test $gl_cv_c_inline_effective = yes; then
-    AC_DEFINE([HAVE_INLINE], [1],
-      [Define to 1 if the compiler supports one of the keywords
-       'inline', '__inline__', '__inline' and effectively inlines
-       functions marked as such.])
-  fi
-])
index d4da190..ab97d39 100644 (file)
@@ -1,5 +1,5 @@
 # intlmacosx.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2004-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2004-2013 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.
index c1a4a75..6ea7053 100644 (file)
@@ -1,5 +1,5 @@
 # intmax_t.m4 serial 8
-dnl Copyright (C) 1997-2004, 2006-2007, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 1997-2004, 2006-2007, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 977206f..e5a1e05 100644 (file)
@@ -1,5 +1,5 @@
 # inttypes-pri.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1997-2002, 2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1997-2002, 2006, 2008-2013 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.
index eec4f41..3b483d3 100644 (file)
@@ -1,5 +1,5 @@
 # inttypes.m4 serial 26
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2013 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.
index 91c7bca..5f05ac5 100644 (file)
@@ -1,5 +1,5 @@
 # inttypes_h.m4 serial 10
-dnl Copyright (C) 1997-2004, 2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1997-2004, 2006, 2008-2013 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.
index 7ad7127..ababb25 100644 (file)
@@ -1,5 +1,5 @@
 # isnan.m4 serial 5
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 54b64a4..ee05e0f 100644 (file)
@@ -1,5 +1,5 @@
 # isnand.m4 serial 11
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 97f638a..f01886a 100644 (file)
@@ -1,5 +1,5 @@
 # isnanf.m4 serial 14
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 81469ab..ed5bbf8 100644 (file)
@@ -1,5 +1,5 @@
 # isnanl.m4 serial 17
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 8e63a03..b736497 100644 (file)
@@ -1,5 +1,5 @@
 # iswblank.m4 serial 4
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2013 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.
index 8213c9f..6ddb69b 100644 (file)
@@ -1,5 +1,5 @@
 # javacomp.m4 serial 12
-dnl Copyright (C) 2001-2003, 2006-2007, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2001-2003, 2006-2007, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 18947ad..0a18172 100644 (file)
@@ -1,5 +1,5 @@
 # javaexec.m4 serial 5
-dnl Copyright (C) 2001-2003, 2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2003, 2006, 2009-2013 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.
index a88850a..1e605e3 100644 (file)
@@ -1,13 +1,14 @@
 # Enable large files on systems where this is not the default.
 
-# Copyright 1992-1996, 1998-2012 Free Software Foundation, Inc.
+# Copyright 1992-1996, 1998-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
 
-# The following implementation works around a problem in autoconf <= 2.68;
-# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5.
-m4_version_prereq([2.69], [] ,[
+# The following implementation works around a problem in autoconf <= 2.69;
+# AC_SYS_LARGEFILE does not configure for large inodes on Mac OS X 10.5,
+# or configures them incorrectly in some cases.
+m4_version_prereq([2.70], [] ,[
 
 # _AC_SYS_LARGEFILE_TEST_INCLUDES
 # -------------------------------
@@ -25,9 +26,9 @@ m4_define([_AC_SYS_LARGEFILE_TEST_INCLUDES],
 
 
 # _AC_SYS_LARGEFILE_MACRO_VALUE(C-MACRO, VALUE,
-#                              CACHE-VAR,
-#                              DESCRIPTION,
-#                              PROLOGUE, [FUNCTION-BODY])
+#                               CACHE-VAR,
+#                               DESCRIPTION,
+#                               PROLOGUE, [FUNCTION-BODY])
 # --------------------------------------------------------
 m4_define([_AC_SYS_LARGEFILE_MACRO_VALUE],
 [AC_CACHE_CHECK([for $1 value needed for large files], [$3],
@@ -93,15 +94,11 @@ if test "$enable_largefile" != no; then
       [_AC_SYS_LARGEFILE_TEST_INCLUDES])
   fi
 
-  AH_VERBATIM([_DARWIN_USE_64_BIT_INODE],
-[/* Enable large inode numbers on Mac OS X.  */
-#ifndef _DARWIN_USE_64_BIT_INODE
-# define _DARWIN_USE_64_BIT_INODE 1
-#endif])
+  AC_DEFINE([_DARWIN_USE_64_BIT_INODE], [1],
+    [Enable large inode numbers on Mac OS X 10.5.])
 fi
 ])# AC_SYS_LARGEFILE
-
-])# m4_version_prereq 2.69
+])# m4_version_prereq 2.70
 
 # Enable large files on systems where this is implemented by Gnulib, not by the
 # system headers.
index 6d26b56..7a75b1b 100644 (file)
@@ -1,5 +1,5 @@
 # ldexp.m4 serial 1
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index 6ecdd4f..1223711 100644 (file)
@@ -1,5 +1,5 @@
 # ldexpl.m4 serial 16
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 4e1374d..c145e47 100644 (file)
@@ -1,33 +1,39 @@
-# lib-ld.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 1996-2003, 2009-2012 Free Software Foundation, Inc.
+# lib-ld.m4 serial 6
+dnl Copyright (C) 1996-2003, 2009-2013 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 Subroutines of libtool.m4,
-dnl with replacements s/AC_/AC_LIB/ and s/lt_cv/acl_cv/ to avoid collision
-dnl with libtool.m4.
+dnl with replacements s/_*LT_PATH/AC_LIB_PROG/ and s/lt_/acl_/ to avoid
+dnl collision with libtool.m4.
 
-dnl From libtool-1.4. Sets the variable with_gnu_ld to yes or no.
+dnl From libtool-2.4. Sets the variable with_gnu_ld to yes or no.
 AC_DEFUN([AC_LIB_PROG_LD_GNU],
 [AC_CACHE_CHECK([if the linker ($LD) is GNU ld], [acl_cv_prog_gnu_ld],
-[# I'd rather use --version here, but apparently some GNU ld's only accept -v.
+[# I'd rather use --version here, but apparently some GNU lds only accept -v.
 case `$LD -v 2>&1 </dev/null` in
 *GNU* | *'with BFD'*)
-  acl_cv_prog_gnu_ld=yes ;;
+  acl_cv_prog_gnu_ld=yes
+  ;;
 *)
-  acl_cv_prog_gnu_ld=no ;;
+  acl_cv_prog_gnu_ld=no
+  ;;
 esac])
 with_gnu_ld=$acl_cv_prog_gnu_ld
 ])
 
-dnl From libtool-1.4. Sets the variable LD.
+dnl From libtool-2.4. Sets the variable LD.
 AC_DEFUN([AC_LIB_PROG_LD],
-[AC_ARG_WITH([gnu-ld],
-[  --with-gnu-ld           assume the C compiler uses GNU ld [default=no]],
-test "$withval" = no || with_gnu_ld=yes, with_gnu_ld=no)
-AC_REQUIRE([AC_PROG_CC])dnl
+[AC_REQUIRE([AC_PROG_CC])dnl
 AC_REQUIRE([AC_CANONICAL_HOST])dnl
+
+AC_ARG_WITH([gnu-ld],
+    [AS_HELP_STRING([--with-gnu-ld],
+        [assume the C compiler uses GNU ld [default=no]])],
+    [test "$withval" = no || with_gnu_ld=yes],
+    [with_gnu_ld=no])dnl
+
 # Prepare PATH_SEPARATOR.
 # The user is always right.
 if test "${PATH_SEPARATOR+set}" != set; then
@@ -40,10 +46,11 @@ if test "${PATH_SEPARATOR+set}" != set; then
            || PATH_SEPARATOR=';'
        }
 fi
+
 ac_prog=ld
 if test "$GCC" = yes; then
   # Check if gcc -print-prog-name=ld gives a path.
-  AC_MSG_CHECKING([for ld used by GCC])
+  AC_MSG_CHECKING([for ld used by $CC])
   case $host in
   *-*-mingw*)
     # gcc leaves a trailing carriage return which upsets mingw
@@ -53,11 +60,11 @@ if test "$GCC" = yes; then
   esac
   case $ac_prog in
     # Accept absolute paths.
-    [[\\/]* | [A-Za-z]:[\\/]*)]
-      [re_direlt='/[^/][^/]*/\.\./']
-      # Canonicalize the path of ld
-      ac_prog=`echo $ac_prog| sed 's%\\\\%/%g'`
-      while echo $ac_prog | grep "$re_direlt" > /dev/null 2>&1; do
+    [[\\/]]* | ?:[[\\/]]*)
+      re_direlt='/[[^/]][[^/]]*/\.\./'
+      # Canonicalize the pathname of ld
+      ac_prog=`echo "$ac_prog"| sed 's%\\\\%/%g'`
+      while echo "$ac_prog" | grep "$re_direlt" > /dev/null 2>&1; do
         ac_prog=`echo $ac_prog| sed "s%$re_direlt%/%"`
       done
       test -z "$LD" && LD="$ac_prog"
@@ -78,23 +85,26 @@ else
 fi
 AC_CACHE_VAL([acl_cv_path_LD],
 [if test -z "$LD"; then
-  IFS="${IFS=  }"; ac_save_ifs="$IFS"; IFS="${IFS}${PATH_SEPARATOR-:}"
+  acl_save_ifs="$IFS"; IFS=$PATH_SEPARATOR
   for ac_dir in $PATH; do
+    IFS="$acl_save_ifs"
     test -z "$ac_dir" && ac_dir=.
     if test -f "$ac_dir/$ac_prog" || test -f "$ac_dir/$ac_prog$ac_exeext"; then
       acl_cv_path_LD="$ac_dir/$ac_prog"
       # Check to see if the program is GNU ld.  I'd rather use --version,
-      # but apparently some GNU ld's only accept -v.
+      # but apparently some variants of GNU ld only accept -v.
       # Break only if it was the GNU/non-GNU ld that we prefer.
-      case `"$acl_cv_path_LD" -v 2>&1 < /dev/null` in
+      case `"$acl_cv_path_LD" -v 2>&1 </dev/null` in
       *GNU* | *'with BFD'*)
-        test "$with_gnu_ld" != no && break ;;
+        test "$with_gnu_ld" != no && break
+        ;;
       *)
-        test "$with_gnu_ld" != yes && break ;;
+        test "$with_gnu_ld" != yes && break
+        ;;
       esac
     fi
   done
-  IFS="$ac_save_ifs"
+  IFS="$acl_save_ifs"
 else
   acl_cv_path_LD="$LD" # Let the user override the test with a path.
 fi])
index d11b4b4..073f040 100644 (file)
@@ -1,5 +1,5 @@
 # lib-link.m4 serial 26 (gettext-0.18.2)
-dnl Copyright (C) 2001-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2013 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.
index 007aa05..60908e8 100644 (file)
@@ -1,5 +1,5 @@
 # lib-prefix.m4 serial 7 (gettext-0.18)
-dnl Copyright (C) 2001-2005, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2005, 2008-2013 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.
index d91c42b..d105c72 100644 (file)
@@ -1,5 +1,5 @@
 # libunistring-base.m4 serial 5
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index 8010379..2e93e58 100644 (file)
@@ -1,5 +1,5 @@
 # localcharset.m4 serial 7
-dnl Copyright (C) 2002, 2004, 2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004, 2006, 2009-2013 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.
index 71b6847..ef199e3 100644 (file)
@@ -1,5 +1,5 @@
 # locale-fr.m4 serial 17
-dnl Copyright (C) 2003, 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2013 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.
index 5ba0e43..132a3e7 100644 (file)
@@ -1,5 +1,5 @@
 # locale-ja.m4 serial 12
-dnl Copyright (C) 2003, 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2013 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.
index e5502b2..4eed73f 100644 (file)
@@ -1,5 +1,5 @@
 # locale-zh.m4 serial 12
-dnl Copyright (C) 2003, 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2013 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.
index 19c6d45..d3fc1ef 100644 (file)
@@ -1,5 +1,5 @@
-# lock.m4 serial 12 (gettext-0.18.2)
-dnl Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# lock.m4 serial 13 (gettext-0.18.2)
+dnl Copyright (C) 2005-2013 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.
@@ -35,7 +35,5 @@ return !x;
   gl_PREREQ_LOCK
 ])
 
-# Prerequisites of lib/lock.c.
-AC_DEFUN([gl_PREREQ_LOCK], [
-  AC_REQUIRE([AC_C_INLINE])
-])
+# Prerequisites of lib/glthread/lock.c.
+AC_DEFUN([gl_PREREQ_LOCK], [:])
index b9c65c7..3af6ab5 100644 (file)
@@ -1,5 +1,5 @@
 # longlong.m4 serial 17
-dnl Copyright (C) 1999-2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1999-2007, 2009-2013 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.
index a19af67..7657458 100644 (file)
--- a/m4/m4.m4
+++ b/m4/m4.m4
@@ -18,7 +18,7 @@
 # Also avoid versions of m4 that trigger strstr bugs.
 AC_DEFUN([AC_PROG_GNU_M4],
   [AC_ARG_VAR([M4], [Location of GNU M4 1.4.6 or later.  Defaults to the first
-    program of `m4', `gm4', or `gnum4' on PATH that meets Autoconf needs.])
+    program of 'm4', 'gm4', or 'gnum4' on PATH that meets Autoconf needs.])
   AC_CACHE_CHECK([for GNU M4 that supports accurate traces], [ac_cv_path_M4],
     [rm -f conftest.m4f
 ac_had_posixly_correct=${POSIXLY_CORRECT:+yes}
index 8fa48e9..4b24a0b 100644 (file)
@@ -1,5 +1,5 @@
 # malloc.m4 serial 14
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index 90d248a..bf0845f 100644 (file)
@@ -1,5 +1,5 @@
-# math_h.m4 serial 113
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# math_h.m4 serial 114
+dnl Copyright (C) 2007-2013 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.
@@ -8,7 +8,6 @@ AC_DEFUN([gl_MATH_H],
 [
   AC_REQUIRE([gl_MATH_H_DEFAULTS])
   gl_CHECK_NEXT_HEADERS([math.h])
-  AC_REQUIRE([AC_C_INLINE])
 
   AC_CACHE_CHECK([whether NAN macro works], [gl_cv_header_math_nan_works],
     [AC_COMPILE_IFELSE([AC_LANG_PROGRAM([[@%:@include <math.h>]],
index 77af4b4..b18ecef 100644 (file)
@@ -1,5 +1,5 @@
-# mbchar.m4 serial 8
-dnl Copyright (C) 2005-2007, 2009-2012 Free Software Foundation, Inc.
+# mbchar.m4 serial 9
+dnl Copyright (C) 2005-2007, 2009-2013 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.
@@ -10,5 +10,4 @@ dnl From Bruno Haible.
 AC_DEFUN([gl_MBCHAR],
 [
   AC_REQUIRE([AC_USE_SYSTEM_EXTENSIONS])
-  AC_REQUIRE([AC_C_INLINE])
 ])
index 42e05b8..9b5fced 100644 (file)
@@ -1,5 +1,5 @@
-# mbiter.m4 serial 6
-dnl Copyright (C) 2005, 2008-2012 Free Software Foundation, Inc.
+# mbiter.m4 serial 7
+dnl Copyright (C) 2005, 2008-2013 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.
@@ -9,7 +9,6 @@ dnl From Bruno Haible.
 
 AC_DEFUN([gl_MBITER],
 [
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_TYPE_MBSTATE_T])
   :
 ])
index 8f829c8..4c9f388 100644 (file)
@@ -1,5 +1,5 @@
 # mbrtowc.m4 serial 25
-dnl Copyright (C) 2001-2002, 2004-2005, 2008-2012 Free Software Foundation,
+dnl Copyright (C) 2001-2002, 2004-2005, 2008-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index da56c3d..2e6d092 100644 (file)
@@ -1,5 +1,5 @@
 # mbsinit.m4 serial 8
-dnl Copyright (C) 2008, 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008, 2010-2013 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.
index 61a8190..ed00117 100644 (file)
@@ -1,5 +1,5 @@
 # mbstate_t.m4 serial 13
-dnl Copyright (C) 2000-2002, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2008-2013 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.
index e5d0457..39760fc 100644 (file)
@@ -1,5 +1,5 @@
 # mbswidth.m4 serial 18
-dnl Copyright (C) 2000-2002, 2004, 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2000-2002, 2004, 2006-2013 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.
index 0040294..2d8abe7 100644 (file)
@@ -1,5 +1,5 @@
 # memchr.m4 serial 12
-dnl Copyright (C) 2002-2004, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2004, 2009-2013 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.
index 748b17d..9b60ddf 100644 (file)
@@ -1,5 +1,5 @@
 # mmap-anon.m4 serial 10
-dnl Copyright (C) 2005, 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2007, 2009-2013 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.
index 40f612a..d5b66d4 100644 (file)
@@ -1,5 +1,5 @@
 # mode_t.m4 serial 2
-dnl Copyright (C) 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 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.
index 8db4617..9a6a47a 100644 (file)
@@ -1,5 +1,5 @@
 # msvc-inval.m4 serial 1
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2013 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.
index 0125050..a39618a 100644 (file)
@@ -1,5 +1,5 @@
 # msvc-nothrow.m4 serial 1
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2011-2013 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.
index 0c288b8..552ec7e 100644 (file)
@@ -1,5 +1,5 @@
 # multiarch.m4 serial 7
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index 0866677..8f8a147 100644 (file)
--- a/m4/nls.m4
+++ b/m4/nls.m4
@@ -1,5 +1,5 @@
 # nls.m4 serial 5 (gettext-0.18)
-dnl Copyright (C) 1995-2003, 2005-2006, 2008-2012 Free Software Foundation,
+dnl Copyright (C) 1995-2003, 2005-2006, 2008-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index c2638df..105b884 100644 (file)
@@ -1,5 +1,5 @@
 # nocrash.m4 serial 4
-dnl Copyright (C) 2005, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2005, 2009-2013 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.
index a57513e..80c1593 100644 (file)
@@ -1,5 +1,5 @@
 # obstack-printf.m4 serial 4
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index dfca2df..d355d01 100644 (file)
@@ -1,5 +1,5 @@
 # off_t.m4 serial 1
-dnl Copyright (C) 2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2012-2013 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.
index c85971d..a6cb101 100644 (file)
@@ -1,5 +1,5 @@
-# open.m4 serial 13
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# open.m4 serial 14
+dnl Copyright (C) 2007-2013 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.
@@ -86,7 +86,6 @@ changequote([,])dnl
 # Prerequisites of lib/open.c.
 AC_DEFUN([gl_PREREQ_OPEN],
 [
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([gl_PROMOTED_TYPE_MODE_T])
   :
 ])
index 0117861..e11bf57 100644 (file)
@@ -1,5 +1,5 @@
 # pathmax.m4 serial 10
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 369a824..42549ba 100644 (file)
@@ -1,5 +1,5 @@
 # perror.m4 serial 6
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index 00ad82b..6ccee10 100644 (file)
@@ -1,5 +1,5 @@
 # pipe2.m4 serial 2
-dnl Copyright (C) 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 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.
index 05d8f7b..f395723 100644 (file)
--- a/m4/po.m4
+++ b/m4/po.m4
@@ -1,5 +1,5 @@
-# po.m4 serial 17b
-dnl Copyright (C) 1995-2012 Free Software Foundation, Inc.
+# po.m4 serial 20 (gettext-0.18.2)
+dnl Copyright (C) 1995-2013 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.
@@ -17,14 +17,14 @@ dnl Authors:
 dnl   Ulrich Drepper <drepper@cygnus.com>, 1995-2000.
 dnl   Bruno Haible <haible@clisp.cons.org>, 2000-2003.
 
-AC_PREREQ([2.50])
+AC_PREREQ([2.60])
 
 dnl Checks for all prerequisites of the po subdirectory.
 AC_DEFUN([AM_PO_SUBDIRS],
 [
   AC_REQUIRE([AC_PROG_MAKE_SET])dnl
   AC_REQUIRE([AC_PROG_INSTALL])dnl
-  AC_REQUIRE([AM_PROG_MKDIR_P])dnl defined by automake
+  AC_REQUIRE([AC_PROG_MKDIR_P])dnl
   AC_REQUIRE([AM_NLS])dnl
 
   dnl Release version of the gettext macros. This is used to ensure that
@@ -102,7 +102,7 @@ changequote([,])dnl
       case "$ac_file" in */Makefile.in)
         # Adjust a relative srcdir.
         ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-        ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+        ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
         ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
         # In autoconf-2.13 it is called $ac_given_srcdir.
         # In autoconf-2.50 it is called $srcdir.
@@ -227,7 +227,7 @@ AC_DEFUN([AM_POSTPROCESS_PO_MAKEFILE],
 changequote(,)dnl
   # Adjust a relative srcdir.
   ac_dir=`echo "$ac_file"|sed 's%/[^/][^/]*$%%'`
-  ac_dir_suffix="/`echo "$ac_dir"|sed 's%^\./%%'`"
+  ac_dir_suffix=/`echo "$ac_dir"|sed 's%^\./%%'`
   ac_dots=`echo "$ac_dir_suffix"|sed 's%/[^/]*%../%g'`
   # In autoconf-2.13 it is called $ac_given_srcdir.
   # In autoconf-2.50 it is called $srcdir.
index 57928eb..69eaf63 100644 (file)
@@ -1,5 +1,5 @@
 # posix_spawn.m4 serial 11
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index de5d641..8b373b1 100644 (file)
@@ -1,5 +1,5 @@
 # printf-frexp.m4 serial 5
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index c960a49..f1ce4c8 100644 (file)
@@ -1,5 +1,5 @@
 # printf-frexpl.m4 serial 10
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index 5bac077..4e64ea8 100644 (file)
@@ -1,5 +1,5 @@
 # printf-posix-rpl.m4 serial 4
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 751e896..ef44f78 100644 (file)
@@ -1,5 +1,5 @@
 # printf.m4 serial 50
-dnl Copyright (C) 2003, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007-2013 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.
index ce3abbc..7b39123 100644 (file)
@@ -1,5 +1,5 @@
 # progtest.m4 serial 7 (gettext-0.18.2)
-dnl Copyright (C) 1996-2003, 2005, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1996-2003, 2005, 2008-2013 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.
index 7b05584..ac49236 100644 (file)
@@ -1,5 +1,5 @@
 # quote.m4 serial 6
-dnl Copyright (C) 2002-2003, 2005-2006, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2006, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 09c36bb..bc0ef0c 100644 (file)
@@ -1,5 +1,5 @@
 # quotearg.m4 serial 9
-dnl Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2004-2013 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.
index 18eb8b9..7df3317 100644 (file)
@@ -1,5 +1,5 @@
-# raise.m4 serial 2
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# raise.m4 serial 3
+dnl Copyright (C) 2011-2013 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.
@@ -31,6 +31,4 @@ AC_DEFUN([gl_FUNC_RAISE],
 ])
 
 # Prerequisites of lib/raise.c.
-AC_DEFUN([gl_PREREQ_RAISE], [
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_RAISE], [:])
index 1930164..8c50054 100644 (file)
@@ -1,5 +1,5 @@
 # rawmemchr.m4 serial 2
-dnl Copyright (C) 2003, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007-2013 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.
index 954c2f0..d477fb4 100644 (file)
@@ -1,5 +1,5 @@
 # realloc.m4 serial 13
-dnl Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007, 2009-2013 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.
index 5346146..931358f 100644 (file)
@@ -1,5 +1,5 @@
 # sched_h.m4 serial 6
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index e1931e7..cb5351a 100644 (file)
@@ -1,5 +1,5 @@
 # setenv.m4 serial 26
-dnl Copyright (C) 2001-2004, 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2004, 2006-2013 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.
index acda356..f2dfd59 100644 (file)
@@ -1,5 +1,5 @@
 # sig_atomic_t.m4 serial 3
-dnl Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2009-2013 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.
index 171d3a4..116b068 100644 (file)
@@ -1,5 +1,5 @@
-# sigaction.m4 serial 6
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+# sigaction.m4 serial 7
+dnl Copyright (C) 2008-2013 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.
@@ -37,7 +37,4 @@ AC_DEFUN([gl_PREREQ_SIGACTION],
 ])
 
 # Prerequisites of lib/sig-handler.h.
-AC_DEFUN([gl_PREREQ_SIG_HANDLER_H],
-[
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_SIG_HANDLER_H], [:])
index ed4d730..3de9f27 100644 (file)
@@ -1,5 +1,5 @@
 # signal_h.m4 serial 18
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index ab8035e..a00e704 100644 (file)
@@ -1,5 +1,5 @@
-# signalblocking.m4 serial 13
-dnl Copyright (C) 2001-2002, 2006-2012 Free Software Foundation, Inc.
+# signalblocking.m4 serial 14
+dnl Copyright (C) 2001-2002, 2006-2013 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.
@@ -22,6 +22,4 @@ AC_DEFUN([gl_SIGNALBLOCKING],
 ])
 
 # Prerequisites of lib/sigprocmask.c.
-AC_DEFUN([gl_PREREQ_SIGPROCMASK], [
-  AC_REQUIRE([AC_C_INLINE])
-])
+AC_DEFUN([gl_PREREQ_SIGPROCMASK], [:])
index fb707c9..d58caaf 100644 (file)
@@ -1,5 +1,5 @@
 # signbit.m4 serial 13
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 5a8162b..4b247ab 100644 (file)
@@ -1,5 +1,5 @@
 # size_max.m4 serial 10
-dnl Copyright (C) 2003, 2005-2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2005-2006, 2008-2013 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.
index fc6c24b..b321984 100644 (file)
@@ -1,5 +1,5 @@
 # snprintf-posix.m4 serial 14
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index de94edd..3698e84 100644 (file)
@@ -1,5 +1,5 @@
 # snprintf.m4 serial 6
-dnl Copyright (C) 2002-2004, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2004, 2007-2013 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.
index 564132a..d272935 100644 (file)
@@ -1,5 +1,5 @@
-# spawn-pipe.m4 serial 1
-dnl Copyright (C) 2004, 2008-2012 Free Software Foundation, Inc.
+# spawn-pipe.m4 serial 2
+dnl Copyright (C) 2004, 2008-2013 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.
@@ -7,6 +7,5 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_SPAWN_PIPE],
 [
   dnl Prerequisites of lib/spawn-pipe.c.
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_TYPE_MODE_T])
 ])
index 26fec8e..ba08c5d 100644 (file)
@@ -1,5 +1,5 @@
 # spawn_h.m4 serial 16
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index 2ef5222..d21ca55 100644 (file)
@@ -1,5 +1,5 @@
 # sprintf-posix.m4 serial 12
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 209d64c..6338134 100644 (file)
@@ -1,5 +1,5 @@
 # ssize_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2001-2003, 2006, 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2003, 2006, 2010-2013 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.
index a8b79f5..2456297 100644 (file)
@@ -1,6 +1,6 @@
-# serial 10
+# serial 11
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
@@ -68,8 +68,4 @@ AC_DEFUN([gl_FUNC_STAT],
 ])
 
 # Prerequisites of lib/stat.c.
-AC_DEFUN([gl_PREREQ_STAT],
-[
-  AC_REQUIRE([AC_C_INLINE])
-  :
-])
+AC_DEFUN([gl_PREREQ_STAT], [:])
index eabfa64..80d5559 100644 (file)
@@ -1,6 +1,6 @@
 # Check for stdbool.h that conforms to C99.
 
-dnl Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2006, 2009-2013 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.
index cc11609..5da8ab1 100644 (file)
@@ -1,6 +1,6 @@
 dnl A placeholder for POSIX 2008 <stddef.h>, for platforms that have issues.
 # stddef_h.m4 serial 4
-dnl Copyright (C) 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2009-2013 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.
index 28d342e..27cdcdb 100644 (file)
@@ -1,5 +1,5 @@
 # stdint.m4 serial 43
-dnl Copyright (C) 2001-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2001-2013 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.
index 581de96..511ab4e 100644 (file)
@@ -1,5 +1,5 @@
 # stdint_h.m4 serial 9
-dnl Copyright (C) 1997-2004, 2006, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 1997-2004, 2006, 2008-2013 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.
index 5298dd6..ebade06 100644 (file)
@@ -1,5 +1,5 @@
-# stdio_h.m4 serial 42
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# stdio_h.m4 serial 43
+dnl Copyright (C) 2007-2013 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.
@@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_STDIO_H],
 [
   AC_REQUIRE([gl_STDIO_H_DEFAULTS])
-  AC_REQUIRE([AC_C_INLINE])
   gl_NEXT_HEADERS([stdio.h])
 
   dnl No need to create extra modules for these functions. Everyone who uses
index ab43728..2027ab3 100644 (file)
@@ -1,5 +1,5 @@
-# stdlib_h.m4 serial 41
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# stdlib_h.m4 serial 42
+dnl Copyright (C) 2007-2013 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.
@@ -22,7 +22,7 @@ AC_DEFUN([gl_STDLIB_H],
     ]], [_Exit atoll canonicalize_file_name getloadavg getsubopt grantpt
     initstate initstate_r mkdtemp mkostemp mkostemps mkstemp mkstemps
     posix_openpt ptsname ptsname_r random random_r realpath rpmatch
-    setenv setstate setstate_r srandom srandom_r
+    secure_getenv setenv setstate setstate_r srandom srandom_r
     strtod strtoll strtoull unlockpt unsetenv])
 ])
 
@@ -60,6 +60,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   GNULIB_REALLOC_POSIX=0; AC_SUBST([GNULIB_REALLOC_POSIX])
   GNULIB_REALPATH=0;      AC_SUBST([GNULIB_REALPATH])
   GNULIB_RPMATCH=0;       AC_SUBST([GNULIB_RPMATCH])
+  GNULIB_SECURE_GETENV=0; AC_SUBST([GNULIB_SECURE_GETENV])
   GNULIB_SETENV=0;        AC_SUBST([GNULIB_SETENV])
   GNULIB_STRTOD=0;        AC_SUBST([GNULIB_STRTOD])
   GNULIB_STRTOLL=0;       AC_SUBST([GNULIB_STRTOLL])
@@ -88,6 +89,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   HAVE_RANDOM_R=1;           AC_SUBST([HAVE_RANDOM_R])
   HAVE_REALPATH=1;           AC_SUBST([HAVE_REALPATH])
   HAVE_RPMATCH=1;            AC_SUBST([HAVE_RPMATCH])
+  HAVE_SECURE_GETENV=1;      AC_SUBST([HAVE_SECURE_GETENV])
   HAVE_SETENV=1;             AC_SUBST([HAVE_SETENV])
   HAVE_DECL_SETENV=1;        AC_SUBST([HAVE_DECL_SETENV])
   HAVE_STRTOD=1;             AC_SUBST([HAVE_STRTOD])
@@ -102,6 +104,7 @@ AC_DEFUN([gl_STDLIB_H_DEFAULTS],
   REPLACE_MALLOC=0;          AC_SUBST([REPLACE_MALLOC])
   REPLACE_MBTOWC=0;          AC_SUBST([REPLACE_MBTOWC])
   REPLACE_MKSTEMP=0;         AC_SUBST([REPLACE_MKSTEMP])
+  REPLACE_PTSNAME=0;         AC_SUBST([REPLACE_PTSNAME])
   REPLACE_PTSNAME_R=0;       AC_SUBST([REPLACE_PTSNAME_R])
   REPLACE_PUTENV=0;          AC_SUBST([REPLACE_PUTENV])
   REPLACE_RANDOM_R=0;        AC_SUBST([REPLACE_RANDOM_R])
index 8e95457..41fcb0e 100644 (file)
@@ -1,5 +1,5 @@
 # stpcpy.m4 serial 8
-dnl Copyright (C) 2002, 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2007, 2009-2013 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.
index d3dfb9a..b59eda9 100644 (file)
@@ -1,5 +1,5 @@
 # strchrnul.m4 serial 9
-dnl Copyright (C) 2003, 2007, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007, 2009-2013 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.
index db0c8c1..efe2d57 100644 (file)
@@ -1,6 +1,6 @@
 # strdup.m4 serial 13
 
-dnl Copyright (C) 2002-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 1c96e52..3989844 100644 (file)
@@ -1,5 +1,5 @@
 # strerror.m4 serial 17
-dnl Copyright (C) 2002, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2007-2013 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.
index bb035eb..341f983 100644 (file)
@@ -1,5 +1,5 @@
 # strerror_r.m4 serial 15
-dnl Copyright (C) 2002, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2007-2013 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.
index 5677e09..cc5fbbb 100644 (file)
@@ -1,6 +1,6 @@
 # Configure a GNU-like replacement for <string.h>.
 
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007-2013 Free Software Foundation, Inc.
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
 # with or without modifications, as long as this notice is preserved.
index cef6889..a1f8274 100644 (file)
@@ -1,5 +1,5 @@
 # strndup.m4 serial 21
-dnl Copyright (C) 2002-2003, 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2005-2013 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.
index d97e307..eae82b7 100644 (file)
@@ -1,5 +1,5 @@
 # strnlen.m4 serial 13
-dnl Copyright (C) 2002-2003, 2005-2007, 2009-2012 Free Software Foundation,
+dnl Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software Foundation,
 dnl Inc.
 dnl This file is free software; the Free Software Foundation
 dnl gives unlimited permission to copy and/or distribute it,
index 93e2248..00934ef 100644 (file)
@@ -1,5 +1,5 @@
 # strtoul.m4 serial 5
-dnl Copyright (C) 2002, 2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2006, 2009-2013 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.
index d744647..110daf2 100644 (file)
@@ -1,5 +1,5 @@
 # strverscmp.m4 serial 8
-dnl Copyright (C) 2002, 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2005-2013 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.
index 8d4e7e1..9486377 100644 (file)
@@ -1,5 +1,5 @@
-# sys_socket_h.m4 serial 22
-dnl Copyright (C) 2005-2012 Free Software Foundation, Inc.
+# sys_socket_h.m4 serial 23
+dnl Copyright (C) 2005-2013 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.
@@ -10,7 +10,6 @@ AC_DEFUN([gl_HEADER_SYS_SOCKET],
 [
   AC_REQUIRE([gl_SYS_SOCKET_H_DEFAULTS])
   AC_REQUIRE([AC_CANONICAL_HOST])
-  AC_REQUIRE([AC_C_INLINE])
 
   dnl On OSF/1, the functions recv(), send(), recvfrom(), sendto() have
   dnl old-style declarations (with return type 'int' instead of 'ssize_t')
index f45dee1..6dd3d99 100644 (file)
@@ -1,5 +1,5 @@
-# sys_stat_h.m4 serial 27   -*- Autoconf -*-
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# sys_stat_h.m4 serial 28   -*- Autoconf -*-
+dnl Copyright (C) 2006-2013 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.
@@ -11,9 +11,6 @@ AC_DEFUN([gl_HEADER_SYS_STAT_H],
 [
   AC_REQUIRE([gl_SYS_STAT_H_DEFAULTS])
 
-  dnl For the mkdir substitute.
-  AC_REQUIRE([AC_C_INLINE])
-
   dnl Check for broken stat macros.
   AC_REQUIRE([AC_HEADER_STAT])
 
index f11eef2..d15c1b3 100644 (file)
@@ -1,10 +1,10 @@
-# sys_types_h.m4 serial 4
-dnl Copyright (C) 2011-2012 Free Software Foundation, Inc.
+# sys_types_h.m4 serial 5
+dnl Copyright (C) 2011-2013 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.
 
-AC_DEFUN([gl_SYS_TYPES_H],
+AC_DEFUN_ONCE([gl_SYS_TYPES_H],
 [
   AC_REQUIRE([gl_SYS_TYPES_H_DEFAULTS])
   gl_NEXT_HEADERS([sys/types.h])
index c0bba86..a6c59d6 100644 (file)
@@ -1,5 +1,5 @@
 # sys_wait_h.m4 serial 6
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index cb93391..26bdeb5 100644 (file)
@@ -1,5 +1,5 @@
 # threadlib.m4 serial 10 (gettext-0.18.2)
-dnl Copyright (C) 2005-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2005-2013 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.
index 6415bfb..3b83900 100644 (file)
@@ -1,6 +1,6 @@
 # Configure a more-standard replacement for <time.h>.
 
-# Copyright (C) 2000-2001, 2003-2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2001, 2003-2007, 2009-2013 Free Software Foundation, Inc.
 
 # serial 7
 
index f8d3606..74a7be7 100644 (file)
@@ -1,7 +1,7 @@
 # -*- Autoconf -*-
 # Checks required to run `timevar', a time tracker.
 #
-# Copyright (C) 2002-2003, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2003, 2009-2013 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
index 62e295b..e65c3c9 100644 (file)
@@ -1,5 +1,5 @@
 #serial 9
-dnl Copyright (C) 2002, 2005-2006, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002, 2005-2006, 2009-2013 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.
index 7e7651b..32dcfa5 100644 (file)
@@ -1,5 +1,5 @@
-# unistd_h.m4 serial 65
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+# unistd_h.m4 serial 66
+dnl Copyright (C) 2006-2013 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.
@@ -11,7 +11,6 @@ AC_DEFUN([gl_UNISTD_H],
   dnl Use AC_REQUIRE here, so that the default behavior below is expanded
   dnl once only, before all statements that occur in other macros.
   AC_REQUIRE([gl_UNISTD_H_DEFAULTS])
-  AC_REQUIRE([AC_C_INLINE])
 
   gl_CHECK_NEXT_HEADERS([unistd.h])
   if test $ac_cv_header_unistd_h = yes; then
index c44adae..f146206 100644 (file)
@@ -1,6 +1,6 @@
 # unlocked-io.m4 serial 15
 
-# Copyright (C) 1998-2006, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 1998-2006, 2009-2013 Free Software Foundation, Inc.
 #
 # This file is free software; the Free Software Foundation
 # gives unlimited permission to copy and/or distribute it,
index 0ce11da..d730e43 100644 (file)
@@ -1,5 +1,5 @@
-# vasnprintf.m4 serial 35
-dnl Copyright (C) 2002-2004, 2006-2012 Free Software Foundation, Inc.
+# vasnprintf.m4 serial 36
+dnl Copyright (C) 2002-2004, 2006-2013 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.
@@ -55,7 +55,6 @@ AC_DEFUN([gl_PREREQ_PRINTF_PARSE],
 # Prerequisites of lib/vasnprintf.c.
 AC_DEFUN_ONCE([gl_PREREQ_VASNPRINTF],
 [
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([AC_FUNC_ALLOCA])
   AC_REQUIRE([AC_TYPE_LONG_LONG_INT])
   AC_REQUIRE([gt_TYPE_WCHAR_T])
index 441bd57..47a4645 100644 (file)
@@ -1,5 +1,5 @@
 # vfprintf-posix.m4 serial 14
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 3e99e5a..c8e1d72 100644 (file)
@@ -1,5 +1,5 @@
 # vsnprintf-posix.m4 serial 15
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 22ec57b..4900764 100644 (file)
@@ -1,5 +1,5 @@
 # vsnprintf.m4 serial 6
-dnl Copyright (C) 2002-2004, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2004, 2007-2013 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.
index a6a8692..fb859cf 100644 (file)
@@ -1,5 +1,5 @@
 # vsprintf-posix.m4 serial 12
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 86c817c..693bebf 100644 (file)
@@ -1,5 +1,5 @@
-# wait-process.m4 serial 5
-dnl Copyright (C) 2003, 2008-2012 Free Software Foundation, Inc.
+# wait-process.m4 serial 6
+dnl Copyright (C) 2003, 2008-2013 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.
@@ -7,7 +7,6 @@ dnl with or without modifications, as long as this notice is preserved.
 AC_DEFUN([gl_WAIT_PROCESS],
 [
   dnl Prerequisites of lib/wait-process.c.
-  AC_REQUIRE([AC_C_INLINE])
   AC_REQUIRE([gt_TYPE_SIG_ATOMIC_T])
   AC_CHECK_FUNCS([waitid])
 ])
index 42a83bb..26ce890 100644 (file)
@@ -1,5 +1,5 @@
 # waitpid.m4 serial 2
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index a77802e..e43beeb 100644 (file)
@@ -1,5 +1,5 @@
 # warn-on-use.m4 serial 5
-dnl Copyright (C) 2010-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2010-2013 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.
index 28b8294..4b2ac38 100644 (file)
@@ -1,5 +1,5 @@
 # warnings.m4 serial 7
-dnl Copyright (C) 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2008-2013 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.
index c7a8b2d..bedb15a 100644 (file)
@@ -1,6 +1,6 @@
 dnl A placeholder for ISO C99 <wchar.h>, for platforms that have issues.
 
-dnl Copyright (C) 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2007-2013 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.
index 534735d..e1e1e69 100644 (file)
@@ -1,5 +1,5 @@
 # wchar_t.m4 serial 4 (gettext-0.18.2)
-dnl Copyright (C) 2002-2003, 2008-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2002-2003, 2008-2013 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.
index 4b19f64..82ada0e 100644 (file)
@@ -1,8 +1,8 @@
-# wctype_h.m4 serial 17
+# wctype_h.m4 serial 18
 
 dnl A placeholder for ISO C99 <wctype.h>, for platforms that lack it.
 
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2013 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.
@@ -22,8 +22,6 @@ AC_DEFUN([gl_WCTYPE_H],
   fi
   AC_SUBST([HAVE_ISWCNTRL])
 
-  AC_REQUIRE([AC_C_INLINE])
-
   AC_REQUIRE([gt_TYPE_WINT_T])
   if test $gt_cv_c_wint_t = yes; then
     HAVE_WINT_T=1
index 5f40bcc..740f81e 100644 (file)
@@ -1,5 +1,5 @@
 # wcwidth.m4 serial 23
-dnl Copyright (C) 2006-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2006-2013 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.
index 3260cce..d7cd3db 100644 (file)
@@ -1,5 +1,5 @@
 # wint_t.m4 serial 5 (gettext-0.18.2)
-dnl Copyright (C) 2003, 2007-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2007-2013 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.
index f47b649..64ca701 100644 (file)
@@ -1,22 +1,7 @@
-# xalloc.m4 serial 17
-dnl Copyright (C) 2002-2006, 2009-2012 Free Software Foundation, Inc.
+# xalloc.m4 serial 18
+dnl Copyright (C) 2002-2006, 2009-2013 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.
 
-AC_DEFUN([gl_XALLOC],
-[
-  gl_PREREQ_XALLOC
-  gl_PREREQ_XMALLOC
-])
-
-# Prerequisites of lib/xalloc.h.
-AC_DEFUN([gl_PREREQ_XALLOC], [
-  AC_REQUIRE([gl_INLINE])
-  :
-])
-
-# Prerequisites of lib/xmalloc.c.
-AC_DEFUN([gl_PREREQ_XMALLOC], [
-  :
-])
+AC_DEFUN([gl_XALLOC], [:])
index b3b7fee..8ea9f2c 100644 (file)
@@ -1,5 +1,5 @@
-# xsize.m4 serial 4
-dnl Copyright (C) 2003-2004, 2008-2012 Free Software Foundation, Inc.
+# xsize.m4 serial 5
+dnl Copyright (C) 2003-2004, 2008-2013 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.
@@ -8,6 +8,5 @@ AC_DEFUN([gl_XSIZE],
 [
   dnl Prerequisites of lib/xsize.h.
   AC_REQUIRE([gl_SIZE_MAX])
-  AC_REQUIRE([AC_C_INLINE])
   AC_CHECK_HEADERS([stdint.h])
 ])
index 1642ca5..4a9330b 100644 (file)
@@ -1,5 +1,5 @@
 # xstrndup.m4 serial 2
-dnl Copyright (C) 2003, 2009-2012 Free Software Foundation, Inc.
+dnl Copyright (C) 2003, 2009-2013 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.
index bdc4502..2b454a1 100644 (file)
--- a/maint.mk
+++ b/maint.mk
@@ -2,7 +2,7 @@
 # This Makefile fragment tries to be general-purpose enough to be
 # used by many projects via the gnulib maintainer-makefile module.
 
-## Copyright (C) 2001-2012 Free Software Foundation, Inc.
+## Copyright (C) 2001-2013 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
@@ -28,6 +28,28 @@ ifneq ($(build_aux),)
 set $$(_build-aux) relative to $$(srcdir) instead of $$(build_aux)")
 endif
 
+# Helper variables.
+_empty =
+_sp = $(_empty) $(_empty)
+
+# _equal,S1,S2
+# ------------
+# If S1 == S2, return S1, otherwise the empty string.
+_equal = $(and $(findstring $(1),$(2)),$(findstring $(2),$(1)))
+
+# member-check,VARIABLE,VALID-VALUES
+# ----------------------------------
+# Check that $(VARIABLE) is in the space-separated list of VALID-VALUES, and
+# return it.  Die otherwise.
+member-check =                                                         \
+  $(strip                                                              \
+    $(if $($(1)),                                                      \
+      $(if $(findstring $(_sp),$($(1))),                               \
+          $(error invalid $(1): '$($(1))', expected $(2)),             \
+          $(or $(findstring $(_sp)$($(1))$(_sp),$(_sp)$(2)$(_sp)),     \
+            $(error invalid $(1): '$($(1))', expected $(2)))),         \
+      $(error $(1) undefined)))
+
 # Do not save the original name or timestamp in the .tar.gz file.
 # Use --rsyncable if available.
 gzip_rsyncable := \
@@ -52,9 +74,9 @@ _dot_escaped_srcdir = $(subst .,\.,$(srcdir))
 # Post-process $(VC_LIST) output, prepending $(srcdir)/, but only
 # when $(srcdir) is not ".".
 ifeq ($(srcdir),.)
-_prepend_srcdir_prefix =
+  _prepend_srcdir_prefix =
 else
-_prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|'
+  _prepend_srcdir_prefix = | sed 's|^|$(srcdir)/|'
 endif
 
 # In order to be able to consistently filter "."-relative names,
@@ -78,32 +100,41 @@ VERSION_REGEXP = $(subst .,\.,$(VERSION))
 PREV_VERSION_REGEXP = $(subst .,\.,$(PREV_VERSION))
 
 ifeq ($(VC),$(GIT))
-this-vc-tag = v$(VERSION)
-this-vc-tag-regexp = v$(VERSION_REGEXP)
+  this-vc-tag = v$(VERSION)
+  this-vc-tag-regexp = v$(VERSION_REGEXP)
 else
-tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
-tag-this-version = $(subst .,_,$(VERSION))
-this-vc-tag = $(tag-package)-$(tag-this-version)
-this-vc-tag-regexp = $(this-vc-tag)
+  tag-package = $(shell echo "$(PACKAGE)" | tr '[:lower:]' '[:upper:]')
+  tag-this-version = $(subst .,_,$(VERSION))
+  this-vc-tag = $(tag-package)-$(tag-this-version)
+  this-vc-tag-regexp = $(this-vc-tag)
 endif
 my_distdir = $(PACKAGE)-$(VERSION)
 
 # Old releases are stored here.
 release_archive_dir ?= ../release
 
+# If RELEASE_TYPE is undefined, but RELEASE is, use its second word.
+# But overwrite VERSION.
+ifdef RELEASE
+  VERSION := $(word 1, $(RELEASE))
+  RELEASE_TYPE ?= $(word 2, $(RELEASE))
+endif
+
+# Validate and return $(RELEASE_TYPE), or die.
+RELEASE_TYPES = alpha beta stable
+release-type = $(call member-check,RELEASE_TYPE,$(RELEASE_TYPES))
+
 # Override gnu_rel_host and url_dir_list in cfg.mk if these are not right.
 # Use alpha.gnu.org for alpha and beta releases.
 # Use ftp.gnu.org for stable releases.
 gnu_ftp_host-alpha = alpha.gnu.org
 gnu_ftp_host-beta = alpha.gnu.org
 gnu_ftp_host-stable = ftp.gnu.org
-gnu_rel_host ?= $(gnu_ftp_host-$(RELEASE_TYPE))
+gnu_rel_host ?= $(gnu_ftp_host-$(release-type))
 
-ifeq ($(gnu_rel_host),ftp.gnu.org)
-url_dir_list ?= http://ftpmirror.gnu.org/$(PACKAGE)
-else
-url_dir_list ?= ftp://$(gnu_rel_host)/gnu/$(PACKAGE)
-endif
+url_dir_list ?= $(if $(call _equal,$(gnu_rel_host),ftp.gnu.org),       \
+                     http://ftpmirror.gnu.org/$(PACKAGE),              \
+                     ftp://$(gnu_rel_host)/gnu/$(PACKAGE))
 
 # Override this in cfg.mk if you are using a different format in your
 # NEWS file.
@@ -124,7 +155,7 @@ export LC_ALL = C
 ## Sanity checks.  ##
 ## --------------- ##
 
-_cfg_mk := $(shell test -f $(srcdir)/cfg.mk && echo '$(srcdir)/cfg.mk')
+_cfg_mk := $(wildcard $(srcdir)/cfg.mk)
 
 # Collect the names of rules starting with 'sc_'.
 syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
@@ -132,9 +163,9 @@ syntax-check-rules := $(sort $(shell sed -n 's/^\(sc_[a-zA-Z0-9_-]*\):.*/\1/p' \
 .PHONY: $(syntax-check-rules)
 
 ifeq ($(shell $(VC_LIST) >/dev/null 2>&1; echo $$?),0)
-local-checks-available += $(syntax-check-rules)
+  local-checks-available += $(syntax-check-rules)
 else
-local-checks-available += no-vc-detected
+  local-checks-available += no-vc-detected
 no-vc-detected:
        @echo "No version control files detected; skipping syntax check"
 endif
@@ -330,8 +361,8 @@ sc_prohibit_atoi_atof:
 sp_ = strcmp *\(.+\)
 sc_prohibit_strcmp:
        @prohibit='! *strcmp *\(|\<$(sp_) *[!=]=|[!=]= *$(sp_)'         \
-       exclude=':# *define STRN?EQ\('                                  \
-       halt='$(ME): replace strcmp calls above with STREQ/STRNEQ'      \
+       exclude='# *define STRN?EQ\('                                   \
+       halt='replace strcmp calls above with STREQ/STRNEQ'             \
          $(_sc_search_regexp)
 
 # Really.  You don't want to use this function.
@@ -354,7 +385,7 @@ sc_prohibit_strncpy:
 #      perl -pi -e 's/(^|[^.])\b(exit ?)\(0\)/$1$2(EXIT_SUCCESS)/'
 sc_prohibit_magic_number_exit:
        @prohibit='(^|[^.])\<(usage|exit|error) ?\(-?[0-9]+[,)]'        \
-       exclude='error ?\(0,'                                           \
+       exclude='exit \(77\)|error ?\(((0|77),|[^,]*)'                  \
        halt='use EXIT_* values rather than magic number'               \
          $(_sc_search_regexp)
 
@@ -570,8 +601,6 @@ sc_prohibit_c_ctype_without_use:
        @h='c-ctype.h' re='\<c_($(ctype_re)) *\(' \
          $(_sc_header_without_use)
 
-_empty =
-_sp = $(_empty) $(_empty)
 # The following list was generated by running:
 # man signal.h|col -b|perl -ne '/bsd_signal.*;/.../sigwaitinfo.*;/ and print' \
 #   | perl -lne '/^\s+(?:int|void).*?(\w+).*/ and print $1' | fmt
@@ -724,6 +753,7 @@ sc_require_test_exit_idiom:
 sc_trailing_blank:
        @prohibit='[     ]$$'                                           \
        halt='found trailing blank(s)'                                  \
+       exclude='^Binary file .* matches$$'                             \
          $(_sc_search_regexp)
 
 # Match lines like the following, but where there is only one space
@@ -744,7 +774,7 @@ _gl_translatable_diag_func_re ?= error
 sc_unmarked_diagnostics:
        @prohibit='\<$(_gl_translatable_diag_func_re) *\([^"]*"[^"]*[a-z]{3}' \
        exclude='(_|ngettext ?)\('                                      \
-       halt='$(ME): found unmarked diagnostic(s)'                      \
+       halt='found unmarked diagnostic(s)'                             \
          $(_sc_search_regexp)
 
 # Avoid useless parentheses like those in this example:
@@ -780,7 +810,7 @@ sc_prohibit_always_true_header_tests:
 
 sc_prohibit_defined_have_decl_tests:
        @prohibit='#[    ]*if(n?def|.*\<defined)\>[      (]+HAVE_DECL_' \
-       halt='$(ME): HAVE_DECL macros are always defined'               \
+       halt='HAVE_DECL macros are always defined'                      \
          $(_sc_search_regexp)
 
 # ==================================================================
@@ -1020,7 +1050,7 @@ sc_redundant_const:
 sc_const_long_option:
        @prohibit='^ *static.*struct option '                           \
        exclude='const struct option|struct option const'               \
-       halt='$(ME): add "const" to the above declarations'             \
+       halt='add "const" to the above declarations'                    \
          $(_sc_search_regexp)
 
 NEWS_hash =                                                            \
@@ -1091,9 +1121,11 @@ fix_po_file_diag = \
 'you have changed the set of files with translatable diagnostics;\n\
 apply the above patch\n'
 
-# Verify that all source files using _() are listed in po/POTFILES.in.
+# Verify that all source files using _() (more specifically, files that
+# match $(_gl_translatable_string_re)) are listed in po/POTFILES.in.
 po_file ?= $(srcdir)/po/POTFILES.in
 generated_files ?= $(srcdir)/lib/*.[ch]
+_gl_translatable_string_re ?= \b(N?_|gettext *)\([^)"]*("|$$)
 sc_po_check:
        @if test -f $(po_file); then                                    \
          grep -E -v '^(#|$$)' $(po_file)                               \
@@ -1113,7 +1145,7 @@ sc_po_check:
            esac;                                                       \
            files="$$files $$file";                                     \
          done;                                                         \
-         grep -E -l '\b(N?_|gettext *)\([^)"]*("|$$)' $$files          \
+         grep -E -l '$(_gl_translatable_string_re)' $$files            \
            | sed 's|^$(_dot_escaped_srcdir)/||' | sort -u > $@-2;      \
          diff -u -L $(po_file) -L $(po_file) $@-1 $@-2                 \
            || { printf '$(ME): '$(fix_po_file_diag) 1>&2; exit 1; };   \
@@ -1123,7 +1155,7 @@ sc_po_check:
 # Sometimes it is useful to change the PATH environment variable
 # in Makefiles.  When doing so, it's better not to use the Unix-centric
 # path separator of ':', but rather the automake-provided '$(PATH_SEPARATOR)'.
-msg = '$(ME): Do not use ":" above; use $$(PATH_SEPARATOR) instead'
+msg = 'Do not use ":" above; use $$(PATH_SEPARATOR) instead'
 sc_makefile_path_separator_check:
        @prohibit='PATH[=].*:'                                          \
        in_vc_files='akefile|\.mk$$'                                    \
@@ -1134,7 +1166,7 @@ sc_makefile_path_separator_check:
 # i.e., when pkg-M.N.tar.xz already exists (either in "." or in ../release)
 # and is read-only.
 writable-files:
-       if test -d $(release_archive_dir); then                         \
+       $(AM_V_GEN)if test -d $(release_archive_dir); then              \
          for file in $(DIST_ARCHIVES); do                              \
            for p in ./ $(release_archive_dir)/; do                     \
              test -e $$p$$file || continue;                            \
@@ -1216,13 +1248,13 @@ sc_Wundef_boolean:
 # not be constant, or might overflow a stack.  In general, use PATH_MAX as
 # a limit, not an array or alloca size.
 sc_prohibit_path_max_allocation:
-       @prohibit='(\balloca *\([^)]*|\[[^]]*)PATH_MAX'                 \
+       @prohibit='(\balloca *\([^)]*|\[[^]]*)\bPATH_MAX'               \
        halt='Avoid stack allocations of size PATH_MAX'                 \
          $(_sc_search_regexp)
 
 sc_vulnerable_makefile_CVE-2009-4029:
        @prohibit='perm -777 -exec chmod a\+rwx|chmod 777 \$$\(distdir\)' \
-       in_files=(^\|/)Makefile\\.in$$                                  \
+       in_files='(^|/)Makefile\.in$$'                                  \
        halt=$$(printf '%s\n'                                           \
          'the above files are vulnerable; beware of running'           \
          '  "make dist*" rules, and upgrade to fixed automake'         \
@@ -1231,7 +1263,7 @@ sc_vulnerable_makefile_CVE-2009-4029:
 
 sc_vulnerable_makefile_CVE-2012-3386:
        @prohibit='chmod a\+w \$$\(distdir\)'                           \
-       in_files=(^\|/)Makefile\\.in$$                                  \
+       in_files='(^|/)Makefile\.in$$'                                  \
        halt=$$(printf '%s\n'                                           \
          'the above files are vulnerable; beware of running'           \
          '  "make distcheck", and upgrade to fixed automake'           \
@@ -1265,23 +1297,28 @@ gpg_key_ID ?=                                                           \
 translation_project_ ?= coordinator@translationproject.org
 
 # Make info-gnu the default only for a stable release.
-ifeq ($(RELEASE_TYPE),stable)
-  announcement_Cc_ ?= $(translation_project_), $(PACKAGE_BUGREPORT)
-  announcement_mail_headers_ ?=                                                \
-    To: info-gnu@gnu.org                                               \
-    Cc: $(announcement_Cc_)                                            \
-    Mail-Followup-To: $(PACKAGE_BUGREPORT)
-else
-  announcement_Cc_ ?= $(translation_project_)
-  announcement_mail_headers_ ?=                                                \
-    To: $(PACKAGE_BUGREPORT)                                           \
-    Cc: $(announcement_Cc_)
-endif
-
+announcement_Cc_stable = $(translation_project_), $(PACKAGE_BUGREPORT)
+announcement_mail_headers_stable =             \
+  To: info-gnu@gnu.org                         \
+  Cc: $(announcement_Cc_)                      \
+  Mail-Followup-To: $(PACKAGE_BUGREPORT)
+
+announcement_Cc_alpha = $(translation_project_)
+announcement_mail_headers_alpha =              \
+  To: $(PACKAGE_BUGREPORT)                     \
+  Cc: $(announcement_Cc_)
+
+announcement_mail_Cc_beta = $(announcement_mail_Cc_alpha)
+announcement_mail_headers_beta = $(announcement_mail_headers_alpha)
+
+announcement_mail_Cc_ ?= $(announcement_mail_Cc_$(release-type))
+announcement_mail_headers_ ?= $(announcement_mail_headers_$(release-type))
 announcement: NEWS ChangeLog $(rel-files)
-       $(AM_V_GEN)$(srcdir)/$(_build-aux)/announce-gen                 \
+# Not $(AM_V_GEN) since the output of this command serves as
+# announcement message: it would start with " GEN announcement".
+       $(AM_V_at)$(srcdir)/$(_build-aux)/announce-gen                  \
            --mail-headers='$(announcement_mail_headers_)'              \
-           --release-type=$(RELEASE_TYPE)                              \
+           --release-type=$(release-type)                              \
            --package=$(PACKAGE)                                        \
            --prev=$(PREV_VERSION)                                      \
            --curr=$(VERSION)                                           \
@@ -1308,16 +1345,22 @@ ftp-gnu = ftp://ftp.gnu.org/gnu
 www-gnu = http://www.gnu.org
 
 upload_dest_dir_ ?= $(PACKAGE)
+upload_command =                                               \
+  $(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS)            \
+  --to $(gnu_rel_host):$(upload_dest_dir_)                     \
+  $(rel-files)
 emit_upload_commands:
        @echo =====================================
        @echo =====================================
-       @echo "$(srcdir)/$(_build-aux)/gnupload $(GNUPLOADFLAGS) \\"
-       @echo "    --to $(gnu_rel_host):$(upload_dest_dir_) \\"
-       @echo "  $(rel-files)"
+       @echo '$(upload_command)'
        @echo '# send the ~/announce-$(my_distdir) e-mail'
        @echo =====================================
        @echo =====================================
 
+.PHONY: upload
+upload:
+       $(AM_V_GEN)$(upload_command)
+
 define emit-commit-log
   printf '%s\n' 'maint: post-release administrivia' ''                 \
     '* NEWS: Add header line for next release.'                                \
@@ -1327,7 +1370,8 @@ endef
 
 .PHONY: no-submodule-changes
 no-submodule-changes:
-       $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
+       $(AM_V_GEN)if test -d $(srcdir)/.git                            \
+               && git --version >/dev/null 2>&1; then                  \
          diff=$$(cd $(srcdir) && git submodule -q foreach              \
                  git diff-index --name-only HEAD)                      \
            || exit 1;                                                  \
@@ -1345,10 +1389,12 @@ submodule-checks ?= no-submodule-changes public-submodule-commit
 # cannot be built from a fresh clone.
 .PHONY: public-submodule-commit
 public-submodule-commit:
-       $(AM_V_GEN)if test -d $(srcdir)/.git; then                      \
+       $(AM_V_GEN)if test -d $(srcdir)/.git                            \
+               && git --version >/dev/null 2>&1; then                  \
          cd $(srcdir) &&                                               \
-         git submodule --quiet foreach test '$$(git rev-parse $$sha1)' \
-             = '$$(git merge-base origin $$sha1)'                      \
+         git submodule --quiet foreach                                 \
+             test '"$$(git rev-parse "$$sha1")"'                       \
+             = '"$$(git merge-base origin "$$sha1")"'                  \
            || { echo '$(ME): found non-public submodule commit' >&2;   \
                 exit 1; };                                             \
        else                                                            \
@@ -1363,7 +1409,7 @@ public-submodule-commit:
 gl_public_submodule_commit ?= public-submodule-commit
 check: $(gl_public_submodule_commit)
 
-.PHONY: alpha beta stable
+.PHONY: alpha beta stable release
 ALL_RECURSIVE_TARGETS += alpha beta stable
 alpha beta stable: $(local-check) writable-files $(submodule-checks)
        $(AM_V_GEN)test $@ = stable                                     \
@@ -1377,15 +1423,16 @@ alpha beta stable: $(local-check) writable-files $(submodule-checks)
        $(AM_V_at)$(MAKE) $(release-prep-hook) RELEASE_TYPE=$@
        $(AM_V_at)$(MAKE) -s emit_upload_commands RELEASE_TYPE=$@
 
+release:
+       $(AM_V_GEN)$(MAKE) $(release-type)
+
 # Override this in cfg.mk if you follow different procedures.
 release-prep-hook ?= release-prep
 
 gl_noteworthy_news_ = * Noteworthy changes in release ?.? (????-??-??) [?]
 .PHONY: release-prep
 release-prep:
-       $(AM_V_GEN)case $$RELEASE_TYPE in alpha|beta|stable) ;; \
-         *) echo "invalid RELEASE_TYPE: $$RELEASE_TYPE" 1>&2; exit 1;; esac
-       $(AM_V_at)$(MAKE) --no-print-directory -s announcement \
+       $(AM_V_GEN)$(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);               \
@@ -1575,6 +1622,7 @@ _gl_TS_obj_files ?= *.$(OBJEXT)
 # Files in which to search for the one-line style extern declarations.
 # $(_gl_TS_dir)-relative.
 _gl_TS_headers ?= $(noinst_HEADERS)
+_gl_TS_other_headers ?= *.h
 
 .PHONY: _gl_tight_scope
 _gl_tight_scope: $(bin_PROGRAMS)
@@ -1597,7 +1645,8 @@ _gl_tight_scope: $(bin_PROGRAMS)
          && { echo the above functions should have static scope >&2;   \
               exit 1; } || : ;                                         \
        ( printf '^%s$$\n' '__.*' $(_gl_TS_unmarked_extern_vars);       \
-         perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"' $$hdr *.h \
+         perl -lne '$(_gl_TS_var_match) and print "^$$1\$$"'           \
+               $$hdr $(_gl_TS_other_headers)                           \
        ) | sort -u > $$t;                                              \
        nm -e $(_gl_TS_obj_files) | sed -n 's/.* [BCDGRS] //p'          \
             | sort -u | grep -Ev -f $$t                                        \
index fbe799b..d3a9d62 100644 (file)
@@ -19,6 +19,7 @@ pt
 pt_BR
 ro
 ru
+sr
 sv
 tr
 uk
index 2a71983..32753a0 100644 (file)
@@ -32,13 +32,16 @@ gettextsrcdir = $(datadir)/gettext/po
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 
-# We use $(mkdir_p).
+# Define $(MKDIR_P).
 # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
 # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
 # @install_sh@ does not start with $(SHELL), so we add it.
 # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
 # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
 # versions, $(mkinstalldirs) and $(install_sh) are unused.
+# Gnulib provides a backport of autoconf 2.60's AC_PROG_MKDIR_P,
+# with a fix from autoconf 2.62 for interoperability with automake 1.9.6,
+# so use $(MKDIR_P) in the rest of this makefile.
 mkinstalldirs = $(SHELL) @install_sh@ -d
 install_sh = $(SHELL) @install_sh@
 MKDIR_P = @MKDIR_P@
@@ -212,7 +215,7 @@ install: install-exec install-data
 install-exec:
 install-data: install-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
          for file in $(DISTFILES.common) Makevars.template; do \
            $(INSTALL_DATA) $(srcdir)/$$file \
                            $(DESTDIR)$(gettextsrcdir)/$$file; \
@@ -230,7 +233,7 @@ install-data-yes: all
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
+         $(MKDIR_P) $(DESTDIR)$$dir; \
          if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
          $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
          echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
@@ -271,7 +274,7 @@ installdirs: installdirs-exec installdirs-data
 installdirs-exec:
 installdirs-data: installdirs-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
        else \
          : ; \
        fi
@@ -282,7 +285,7 @@ installdirs-data-yes:
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
+         $(MKDIR_P) $(DESTDIR)$$dir; \
          for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
            if test -n "$$lc"; then \
              if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
index 0908f50..ee34879 100644 (file)
@@ -9,6 +9,7 @@ src/main.c
 src/muscle-tab.c
 src/parse-gram.y
 src/print.c
+src/print_graph.c
 src/reader.c
 src/reduce.c
 src/scan-code.l
index 29d8a49..8b6161c 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.6.2\n"
+"Project-Id-Version: bison 2.7.12-4996\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,12 +18,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=INTEGER; plural=EXPRESSION;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr ""
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr ""
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr ""
 
@@ -106,17 +110,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr ""
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr ""
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr ""
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -124,16 +128,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -144,15 +148,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -162,10 +166,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -179,25 +182,24 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -208,53 +210,82 @@ msgid ""
 "  `none'         disable the report\n"
 msgstr ""
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr ""
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr ""
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr ""
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr ""
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr ""
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr ""
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr ""
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr ""
@@ -267,7 +298,7 @@ msgstr ""
 msgid "Grammar"
 msgstr ""
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -276,7 +307,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -290,38 +321,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr ""
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr ""
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr ""
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr ""
@@ -359,9 +389,9 @@ msgstr ""
 msgid "$default"
 msgstr ""
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
+msgid "State %d"
 msgstr ""
 
 #: src/print.c:409
@@ -391,72 +421,71 @@ msgstr ""
 msgid "multiple %s declarations"
 msgstr ""
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr ""
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr ""
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr ""
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr ""
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr ""
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr ""
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr ""
@@ -506,97 +535,95 @@ msgstr ""
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr ""
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr ""
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr ""
@@ -616,57 +643,59 @@ msgstr ""
 msgid "invalid identifier: %s"
 msgstr ""
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr ""
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr ""
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] ""
+msgstr[1] ""
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr ""
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr ""
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr ""
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr ""
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr ""
@@ -701,82 +730,82 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr ""
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr ""
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr ""
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr ""
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr ""
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr ""
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr ""
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr ""
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr ""
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr ""
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -988,13 +1017,13 @@ msgstr ""
 msgid "memory exhausted"
 msgstr ""
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr ""
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
index 16a676c..9f2c1de 100644 (file)
Binary files a/po/da.gmo and b/po/da.gmo differ
index e858397..246aa95 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,12 +17,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "advarsel"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Fejl ved ind- eller udlæsning"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "fatal fejl: "
@@ -106,17 +111,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "konfliktende uddata til filen %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Prøv med \"%s --help\" for mere information.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Brug: %s [FLAG]... FIL\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -124,16 +129,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -144,15 +149,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -162,7 +167,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Fortolker:\n"
 "  -S, --skeleton=FIL         angiv skeletfilen som skal bruges\n"
@@ -173,7 +177,7 @@ msgstr ""
 "  -n, --no-parser            generér kun tabellerne\n"
 "  -k, --token-table          inkludér en tabel over elementnavne\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -188,7 +192,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Uddata:\n"
 "  -d, --defines              lav også en hovedfil\n"
@@ -198,22 +201,22 @@ msgstr ""
 "  -o, --output=FIL           læg uddata i FIL\n"
 "  -g, --graph                lav også en VCG-beskrivelse af automaten\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -232,30 +235,59 @@ msgstr ""
 "  \"all\"          inkludér al ovenstående information\n"
 "  \"none\"         deaktivér rapporten\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "Rapportér fejl til <bug-bison@gnu.org>.\n"
 "Rapportér synpunkter om oversættelsen til <dansk@klid.dk>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Skrevet af Robert Corbett og Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -264,27 +296,27 @@ msgstr ""
 "gives INGEN garanti, endog ikke for SALGBARHED eller EGNETHED FOR NOGET\n"
 "BESTEMT FORMÅL.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "flere %s-deklarationer"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "fejlagtig værdi: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "flere %s-deklarationer"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "manglende operand efter \"%s\""
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "overtallig operand \"%s\""
@@ -297,7 +329,7 @@ msgstr "tom"
 msgid "Grammar"
 msgstr "Grammatik"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -306,7 +338,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -321,38 +353,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regel aldrig reduceret på grund af konflikter"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "symbol %s redefineret"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "fejlagtig værdi: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "manglende identifikator i parameterdeklaration"
@@ -390,10 +421,10 @@ msgstr "accept
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "tilstand %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Tilstand %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -423,72 +454,72 @@ msgstr "regel aldrig reduceret p
 msgid "multiple %s declarations"
 msgstr "flere %s-deklarationer"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "resultattypekonflikt ved sammenfletningsfunktion %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "flere %s-deklarationer"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regel givet for %s som er et element"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "typekonflikt for standardhandling: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "tom regel for typet ikke-terminal, og ingen handling"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "fejlagtig værdi: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "kun en %s tilladt per regel"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s påvirker kun GLR-fortolkere"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s skal følges af et positivt tal"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "ingen regler i inddatagrammatikken"
@@ -542,97 +573,95 @@ msgstr "startsymbolet %s genererer ingen s
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "heltal uden for gyldigshedsområdet: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ugyldigt direktiv: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinition af præcedens for %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "flertydigt argument %s til %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ for \"%s\" har ingen erklæret type"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d for \"%s\" har ingen erklæret type"
@@ -652,57 +681,61 @@ msgstr "ugyldigt direktiv: %s"
 msgid "invalid identifier: %s"
 msgstr "ugyldigt direktiv: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ugyldigt tegn: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ugyldigt tegn: %s"
+msgstr[1] "ugyldigt tegn: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ugyldigt tegn: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ugyldigt tegn: %s"
+msgstr[1] "ugyldigt tegn: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ugyldigt NUL-tegn"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "ugyldigt NUL-tegn: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "ugyldigt tegn: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "manglende \"%s\" ved slutningen af filen"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "manglende \"%s\" ved slutningen af linjen"
@@ -737,83 +770,83 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr ""
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "gentagen %s-erklæring for %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "gentagen %s-erklæring for %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbol %s redefineret"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "symbol %s redefineret"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redefinition af elementnummer for %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "symbol %s bruges, men er ikke defineret som et element og har ingen regler"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbol \"%s\" bruges mere end en gang som en bogstavelig streng"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symbol \"%s\" har fået mere end én bogstavelig streng"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "gentagen typeerklæring for %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "gentagen typeerklæring for %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "startsymbolet %s er udefineret"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "startsymbolet %s er et element"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1031,13 +1064,13 @@ msgstr "%s: flaget \"%s\" beh
 msgid "memory exhausted"
 msgstr "hukommelsen opbrugt"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "kan ikke lukke fil"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1112,8 +1145,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "Fejl ved ind- eller udlæsning"
+#~ msgid "state %d"
+#~ msgstr "tilstand %d"
 
 #~ msgid "warning: "
 #~ msgstr "advarsel: "
index 282be89..a652848 100644 (file)
Binary files a/po/de.gmo and b/po/de.gmo differ
index 5186c98..6da4d27 100644 (file)
--- a/po/de.po
+++ b/po/de.po
@@ -6,10 +6,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-07 12:35+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-11 20:05+0100\n"
 "Last-Translator: Michael Piefel <piefel@informatik.hu-berlin.de>\n"
 "Language-Team: German <translation-team-de@lists.sourceforge.net>\n"
 "Language: de\n"
@@ -18,12 +18,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "Warnung"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "Fehler"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "fataler Fehler"
 
@@ -109,17 +113,17 @@ msgstr "werde die Eingabedatei %s nicht überschreiben"
 msgid "conflicting outputs to file %s"
 msgstr "widersprüchliche Ausgaben in Datei %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "„%s --help“ gibt weitere Informationen.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Aufruf: %s [OPTION]... DATEI\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -131,18 +135,18 @@ msgstr ""
 "unter Zuhilfenahme von LALR(1)-, IELR(1)- oder kanonischen LR(1)-Tabellen.\n"
 "Unterstützung für IELR(1) und kanonische LR(1) is experimentell.\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Erforderliche Argumente für lange Optionen sind auch für Kurzformen "
 "erforderlich.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Das gleiche gilt für optionale Argumente.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -153,6 +157,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -164,13 +169,13 @@ msgstr ""
 "      --print-datadir        Verzeichnis mit Skeletten und XSLT anzeigen\n"
 "  -y, --yacc                 POSIX’ Yacc emulieren\n"
 "  -W, --warnings[=KATEGORIE]  Warnungen, die in KATEGORIE fallen, anzeigen\n"
+"  -f, --feature[=FEATURE]    verschiedene Features aktivieren\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -180,11 +185,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -L, --language=SPRACHE     die Ausgabesprache bestimmen\n"
-"                               (eine experimentelle Funktion)\n"
 "  -S, --skeleton=DATEI       zu benutzende Skelettdatei angeben\n"
 "  -t, --debug                den Parser auf Debugging-Unterstützung "
 "vorbereiten\n"
@@ -195,9 +198,8 @@ msgstr ""
 "                             veraltet, durch „-Dapi.prefix=PREFIX“ ersetzt\n"
 "  -l, --no-lines             keine „#line“-Direktiven erzeugen\n"
 "  -k, --token-table          eine Tabelle der Token-Namen mit einschließen\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -211,7 +213,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Ausgabe:\n"
 "      --defines[=DATEI]      auch eine Header-Datei herstellen\n"
@@ -225,21 +226,20 @@ msgstr ""
 "  -g, --graph[=DATEI]        auch einen Graphen des Automaten herstellen\n"
 "  -x, --xml[=DATEI]          auch einen XML-Report des Automaten herstellen\n"
 "                               (das XML-Schema ist experimentell)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Die Warnungs-Kategorien schließen ein:\n"
 "  „midrule-values“  nicht gesetzte oder nicht benutzte Werte inmitten einer "
@@ -247,14 +247,14 @@ msgstr ""
 "  „yacc“            Inkompatibilitäten mit POSIX’ YACC\n"
 "  „conflicts-sr“    S/R-Konflikte (standardmäßig an)\n"
 "  „conflicts-rr“    R/R-Konflikte (standardmäßig an)\n"
+"  „deprecated“      veraltete Konstrukte\n"
 "  „other“           alle anderen Warnungen (standardmäßig an)\n"
 "  „all“             alle Warnungen\n"
 "  „no-KATEGORIE“    Warnungen in KATEGORIE abschalten\n"
 "  „none“            alle Warnungen abschalten\n"
 "  „error“           Warnungen als Fehler behandeln\n"
-"\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -272,30 +272,66 @@ msgstr ""
 "  „all“          alle oben genannten Informationen\n"
 "  „none“         den Report abschalten\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Berichten Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n"
+"FEATURE is eine Liste kommaseparierter Wörter, die einschließen können:\n"
+"  „caret“        Fehler mit Zirkumflexen („^“) markieren\n"
+"  „all“          alle oben genannten\n"
+"  „none“         keins der oben genannten\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Berichten Sie Fehler (auf Englisch, mit LC_ALL=C) an <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "Home-Page von %s: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Allgemeine Hilfe zur Nutzung von GNU-Software: <http://www.gnu.org/gethelp/"
+">.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Berichten Sie Übersetzungsfehler an <http://translationproject.org/team/de."
+"html>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Für die vollständige Dokumentation rufen Sie „info bison“ auf.\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Geschrieben von Robert Corbett und Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -304,26 +340,26 @@ msgstr ""
 "gibt keine Garantie; auch nicht für VERKAUFBARKEIT oder FÜR SPEZIELLE "
 "ZWECKE.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "mehrfache Skelett-Deklarationen sind ungültig"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: unzulässige Sprache"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "mehrfache Sprach-Deklarationen sind ungültig"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: fehlender Operand"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "zusätzlicher Operand %s"
@@ -336,7 +372,7 @@ msgstr "leer"
 msgid "Grammar"
 msgstr "Grammatik"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -349,7 +385,7 @@ msgstr ""
 "// Homepage: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "Überlauf bei den Zeilennummern"
@@ -363,38 +399,37 @@ msgstr "Überlauf bei den Spaltennummern"
 msgid "rule useless in parser due to conflicts"
 msgstr "Regel nutzlos im Parser wegen Konflikten"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-Variable %s noch einmal definiert"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "vorhergehende Definition"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: undefinierte %%define-Variable %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, 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:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "ungültiger Wert für %%define-Variable %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "akzeptierte Werte: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "fehlender Bezeichner in Parameterdeklaration"
@@ -432,9 +467,9 @@ msgstr "annehmen"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
+msgid "State %d"
 msgstr "Zustand %d"
 
 #: src/print.c:409
@@ -464,72 +499,71 @@ msgstr "Regeln nutzlos im Parser wegen Konflikten"
 msgid "multiple %s declarations"
 msgstr "mehr als eine %s-Deklaration"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "Rückgabetyp-Konflikt in merge-Funktion %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "vorhergehende Deklaration"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "doppelter Symbolname für %s ignoriert"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "Regel für %s vorhanden, welches aber ein Token ist"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "Typkonflikt bei Default-Aktion: <%s> != <%s>) "
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "leere Regel für Nicht-Terminal mit Typ und keine Aktion"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
-msgstr "unzulässiger Wert: $%d"
+msgstr "unbenutzter Wert: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nicht gesetzter Wert: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "Token für %%prec ist nicht definiert: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "nur ein %s pro Regel erlaubt"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s betrifft nur GLR-Parser"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s muss von positiver Zahl gefolgt sein"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "Regel ist zu lang"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "Eingabegrammatik enthält keine Regeln"
@@ -575,103 +609,101 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "es lassen sich keine Sätze vom Startsymbol %s ableiten"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "herumstreunendes ‚$‘"
+msgstr "herumstreunendes ‚%s‘"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 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:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "zukünftige Versionen von Bison werden das ‚;‘ nicht hinzufügen"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "verweist auf: %c%s bei %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "meinte möglicherweise: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", versteckt dabei %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " bei %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "Ganzzahl außerhalb des Wertebereichs: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "ungültiger Verweis: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr "Syntaxfehler nach ‚%c‘, erwarte Ganzzahl, Buchstabe, ‚_‘, ‚[‘ oder ‚$‘"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "Symbol nicht in Produktion gefunden vor $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "Symbol nicht in Produktion gefunden: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "irreführender Verweis: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "mehrdeutiger Verweis: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "expliziter Typ angegeben und ungetypter Grammatik"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ von %s hat keinen deklarierten Typ"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s von %s hat keinen deklarierten Typ"
@@ -691,57 +723,59 @@ msgstr "ungültige Direktive: %s"
 msgid "invalid identifier: %s"
 msgstr "ungültiger Bezeichner: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ungültiges Zeichen: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ungültiges Zeichen"
+msgstr[1] "ungültige Zeichen"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "unerwarteter Bezeichner im geklammerten Namen: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "Bezeichner erwartet"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ungültiges Zeichen im geklammerten Namen: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ungültiges Zeichen im geklammerten Namen"
+msgstr[1] "ungültige Zeichen im geklammerten Namen"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "leeres Zeichenliteral"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "zusätzliche Zeichen in Zeichenliteral"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ungültiges Null-Zeichen"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "ungültige Zahl hinter \\-Flucht: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "ungültiges Zeichen hinter \\-Flucht: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "fehlendes %s am Ende der Datei"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "fehlendes %s am Ende der Zeile"
@@ -776,84 +810,84 @@ msgstr "POSIX-Yacc verbietet Bindestriche in Symbolnamen: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "zu viele Symbole in Eingabegrammatik (Maximum ist %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s erneute Deklaration für %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s erneute Deklaration für <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "Symbol %s noch einmal definiert"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "Symbol %s noch einmal deklariert"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "definiere Nutzertokennummer von %s erneut"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "Symbol %s wird benutzt, ist aber nicht als Token definiert und hat keine "
 "Regel"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "Symbol %s wird mehr als einmal als literale Zeichenkette benutzt"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "Symbol %s wird mehr als eine literale Zeichenkette gegeben"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "Tokennummer %d erneut deklariert für %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "vorhergehende Deklaration für %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "das Startsymbol %s ist undefiniert"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "das Startsymbol %s ist ein Token"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "erneute Deklaration für voreingestellten markierten %%destructor"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "erneute Deklaration für voreingestellten nicht-markierten %%destructor"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "erneute Deklaration für voreingestellten markierten %%printer"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "erneute Deklaration für voreingestellten nicht-markierten %%printer"
@@ -1072,13 +1106,13 @@ msgstr "%s: Option „-W %s“ erfordert ein Argument\n"
 msgid "memory exhausted"
 msgstr "Speicher ausgeschöpft"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "kann Datei nicht schließen"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1150,6 +1184,9 @@ msgstr "Unterprozess %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "Unterprozess %s erhielt tödliches Signal %d"
 
+#~ msgid "state %d"
+#~ msgstr "Zustand %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "herumstreunendes ‚@‘"
 
index 534acc6..546ff51 100644 (file)
Binary files a/po/el.gmo and b/po/el.gmo differ
index 302c051..39fbd13 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,12 +18,17 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=( n !=1);\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "προειδοποίηση"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "σφάλμα I/O"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "μοιραίο σφάλμα"
 
@@ -112,17 +117,17 @@ msgstr "άρνηση γραψίματος πάνω στο αρχείο εισό
 msgid "conflicting outputs to file %s"
 msgstr "αντικρουόμενες έξοδοι στο αρχείο %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Δοκίμασε «%s --help» για περισσότερες πληροφορίες.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Χρήση: %s [ΕΠΛΟΓΕΣ]... ΑΡΧΕΙΟ\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -130,18 +135,18 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Υποχρεωτικά ορίσματα σε μακρές επιλογές είναι υποχρεωτικά επίσης και στις "
 "κοντές.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Το ίδιο ισχύει και για τα μη υποχρεωτικά ορίσματα.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 #, fuzzy
 msgid ""
 "\n"
@@ -153,6 +158,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -166,12 +172,11 @@ msgstr ""
 "στη ΚΑΤΗΓΟΡΙΑ\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -181,7 +186,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Αναλυτής:\n"
 "  -L, --language=ΓΛΩΣΣΑ    προσδιορίζει τη γλώσσα προγραμματισμού στην "
@@ -197,7 +201,8 @@ msgstr ""
 "μονάδων\n"
 "\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -211,7 +216,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Έξοδος:\n"
 "      --defines[=ΑΡΧΕΙΟ]       παράγει επίσης ένα αρχείο επικεφαλίδας\n"
@@ -226,7 +230,7 @@ msgstr ""
 "                             (η μορφή XML είναι σε πειραματικό στάδιο)\n"
 "\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 #, fuzzy
 msgid ""
 "Warning categories include:\n"
@@ -234,12 +238,12 @@ msgid ""
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Κατηγορίες προειδοποίησης περιλαμβάνουν:\n"
 "  `midrule-values'  μη ενεργοποιημένες ή μη χρησιμοποιούμενες τιμές midrule\n"
@@ -250,7 +254,7 @@ msgstr ""
 "  `error'           θεώρησε όλες τις προειδοποιήσεις ως σφάλματα\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -269,30 +273,59 @@ msgstr ""
 "  `all'          περιλαμβάνει όλες τις παραπάνω πληροφορίες\n"
 "  `none'         απενεργοποίηση αναφοράς\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Αναφορά σφαλμάτων σε <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Γράφτηκε από τους Robert Corbett και Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -300,26 +333,26 @@ msgstr ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "πολλαπλές δηλώσεις σκελετού είναι μη έγκυρες"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "μη έγκυρη γλώσσα `%s'"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "πολλαπλές δηλώσεις γλώσσας είναι μη έγκυρες"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "λείπει τελεστέος μετά από «%s»"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "επί πλέον τελεστέος «%s»"
@@ -332,7 +365,7 @@ msgstr "κενό"
 msgid "Grammar"
 msgstr "Γραμματική"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -341,7 +374,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "υπερχείλιση αριθμού γραμμών"
@@ -355,38 +388,38 @@ msgstr "υπερχείλιση αριθμού στηλών"
 msgid "rule useless in parser due to conflicts"
 msgstr "ο κανόνας είναι άχρηστος στον αναλυτή λόγω συγκρούσεων"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "το σύμβολο %s ανακαθορίστηκε"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
+#, fuzzy
 msgid "previous definition"
 msgstr "προηγούμενη δήλωση"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "μη χρησιμοποιούμενη τιμή: $%d"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "το όνομα λείπει στη δήλωση παραμέτρου"
@@ -424,10 +457,10 @@ msgstr "αποδοχή"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "καÏ\84άÏ\83Ï\84αÏ\83η %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Î\9aαÏ\84άÏ\83Ï\84αÏ\83η %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -456,73 +489,72 @@ msgstr "Κανόνες άχρηστοι στον αναλυτή λόγω συγ
 msgid "multiple %s declarations"
 msgstr "πολλαπλές δηλώσεις του %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 "σύγκρουση παραγόμενου τύπου στη συνάρτηση συγχώνευσης «%s»: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "προηγούμενη δήλωση"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "κανόνας δοσμένος για %s, που είναι λεκτική μονάδα"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "σύγκρουση τύπων στην προεπιλεγμένη ενέργεια: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "κενός κανόνας για μη τερματικό σύμβολο με τύπο, και ουδεμία ενέργεια"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "μη χρησιμοποιούμενη τιμή: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "μη καθορισμένη τιμή: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "μόνο ένα %s ανά κανόνα έχει επιτραπεί"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s επηρεάζει μόνο αναλυτές GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s πρέπει να ακολουθείται από θετικό αριθμό"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "κανόνας πολύ επιμήκης"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "γραμματική εισόδου χωρίς κανόνες"
@@ -572,97 +604,95 @@ msgstr "το αρχικό σύμβολο %s δεν παράγει καμιά π
 msgid "stray '%s'"
 msgstr "μοναχικό «$»"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "ακέραιος εκτός ορίων: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "μη έγκυρη οδηγία: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "ασαφές όρισμα %s για %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "ρητή δήλωση τύπου δόθηκε σε γραμματική χωρίς τύπους"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ για την midrule στο $%d του «%s» δεν έχει δηλωμένο τύπο"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ του «%s» δεν έχει δηλωμένο τύπο"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d του «%s» δεν έχει δηλωμένο τύπο"
@@ -682,57 +712,61 @@ msgstr "μη έγκυρη οδηγία: %s"
 msgid "invalid identifier: %s"
 msgstr "μη έγκυρη οδηγία: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "μη έγκυρος χαρακτήρας: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "μη έγκυρος χαρακτήρας: %s"
+msgstr[1] "μη έγκυρος χαρακτήρας: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "μη έγκυρος χαρακτήρας: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "μη έγκυρος χαρακτήρας: %s"
+msgstr[1] "μη έγκυρος χαρακτήρας: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "μη έγκυρος μηδενικός χαρακτήρας"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "μη έγκυρος μηδενικός χαρακτήρας: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "μη έγκυρος χαρακτήρας: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "στο τέλος του αρχείου λείπει «%s»"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "στο τέλος της γραμμής λείπει «%s»"
@@ -767,86 +801,86 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "πάρα πολλά σύμβολα στη γραμματική εισόδου (το όριο είναι %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "δήλωση ξανά του %s για %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "δήλωση ξανά του %s για <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "το σύμβολο %s ανακαθορίστηκε"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "το σύμβολο %s ξαναδηλώθηκε"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "ορισμός ξανά του αριθμού λεκτικής μονάδας του %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "το σύμβολο %s χρησιμοποιείται, αλλά δεν καθορίζεται ως λεκτική μονάδα και "
 "δεν διαθέτει κανόνες"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr ""
 "το σύμβολο «%s» χρησιμοποιήθηκε περισσότερες από μια φορές ως κυριολεκτικό "
 "αλφαριθμητικό"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr " το σύμβολο «%s» έδωσε περισσότερα του ενός κυριολεκτικά αλφαριθμητικά"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "δήλωση ξανά του %s για %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "προηγούμενη δήλωση"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "το σύμβολο εκκίνησης %s δεν είναι καθορισμένο"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "το σύμβολο εκκίνησης  %s είναι λεκτική μονάδα"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "δήλωση ξανά του προεπιλεγμένου καταστροφέα %%"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "δήλωση ξανά του προεπιλεγμένου καταστροφέα %%"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "δήλωση ξανά του προεπιλεγμένου εκτυπωτή %%"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "δήλωση ξανά του προεπιλεγμένου εκτυπωτή %%"
@@ -1064,13 +1098,13 @@ msgstr "%s: η επιλογή «%s» απαιτεί όρισμα\n"
 msgid "memory exhausted"
 msgstr "εξαντλημένη μνήμη"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "δεν μπορώ να κλείσω το αρχείο"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1142,13 +1176,13 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#~ msgid "state %d"
+#~ msgstr "κατάσταση %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "μοναχικό «@»"
 
-#~ msgid "I/O error"
-#~ msgstr "σφάλμα I/O"
-
 #~ msgid ""
 #~ "Generate LALR(1) and GLR parsers.\n"
 #~ "\n"
index a24e9f5..bfc0cce 100644 (file)
Binary files a/po/eo.gmo and b/po/eo.gmo differ
index 831c2af..7bb9a92 100644 (file)
--- a/po/eo.po
+++ b/po/eo.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-05 20:47-0300\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 15:40-0300\n"
 "Last-Translator: Felipe Castro <fefcas@gmail.com>\n"
 "Language-Team: Esperanto <translation-team-eo@lists.sourceforge.net>\n"
 "Language: eo\n"
@@ -17,12 +17,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "averto"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "eraro"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "neriparebla eraro"
 
@@ -105,17 +109,17 @@ msgstr "ni rifuzas anstataŭigi la enigan dosieron %s"
 msgid "conflicting outputs to file %s"
 msgstr "konfliktantaj eligoj al dosiero %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Provu '%s --help' por pli da informo.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
-msgstr "Uzado: %s [ELEKTILO]... DOSIERO\n"
+msgstr "Uzado: %s [MODIFILO]... DOSIERO\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -126,17 +130,17 @@ msgstr ""
 "analiz-tabelojn LALR(1), IELR(1), aŭ kanonan LR(1).  Subteno al IELR(1)\n"
 "kaj kanona LR(1) estas eksperimenta.\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
-"Nepraj argumentoj por longaj elektiloj ankaŭ nepras por la mallongaj.\n"
+"Nepraj argumentoj por longaj modifiloj ankaŭ nepras por la mallongaj.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "La samo estas vero por malnepraj argumentoj.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -147,6 +151,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -158,14 +163,14 @@ msgstr ""
 "      --print-datadir        eligi dosieron enhavantan skeletojn kaj XSLT\n"
 "  -y, --yacc                 ŝajnigi POSIX Yacc\n"
 "  -W, --warnings[=KATEGORIO] raporti la avertojn apartenantajn al KATEGORIO\n"
+"  -f, --feature[=APARTAĴO]   aktivigi diversajn apartaĵojn\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -175,11 +180,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Analizilo:\n"
 "  -L, --language=LINGVO            indiki la eligan program-lingvon\n"
-"                                   (tio ĉi estas eksperimenta trajto)\n"
 "  -S, --skeleton=DOSIERO           indiki la skeleton uzotan\n"
 "  -t, --debug                      ekipigi la analizilon por rafinado\n"
 "      --locations                  eligi subtenon al lokigojn\n"
@@ -191,9 +194,8 @@ msgstr ""
 "prefix=PREFIKSO'\n"
 "  -l, --no-lines                   ne generi instrukciojn '#line'\n"
 "  -k, --token-table                inkluzivigi tabelon de ĵetono-nomoj\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -207,7 +209,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Eligo:\n"
 "      --defines[=DOSIERO]    aldone produkti kap-dosieron\n"
@@ -221,35 +222,34 @@ msgstr ""
 "  -g, --graph[=DOSIERO]      aldone eligi grafeon pri la roboto\n"
 "  -x, --xml[=DOSIERO]        aldone eligi raporton XML pri la roboto\n"
 "                             (la XML-skemo estas eksperimenta)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Avertaj kategorioj inkluzivas:\n"
 "  `midrule-values'  nedifinitaj aŭ neuzitaj mezregulaj valoroj\n"
 "  `yacc'            malkongruoj kun POSIX Yacc\n"
 "  `conflicts-sr'    konfliktoj Ŝ/R (eblegitaj apriore)\n"
 "  `conflicts-rr'    konfliktoj R/R (ebligitaj apriore)\n"
+"  `deprecated'      malrekomendindaj aranĝoj\n"
 "  `other'           ĉiuj aliaj avertoj (ebligitaj apriore)\n"
 "  `all'             ĉiuj avertoj\n"
 "  `no-KATEGORIO'    malebligi avertojn en KATEGORIO\n"
 "  `none'            malebligi ĉiujn avertojn\n"
 "  `error'           trakti avertojn kiel erarojn\n"
-"\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -267,30 +267,63 @@ msgstr ""
 "  `all'          inkluzivigi la tutan informaron supre\n"
 "  `none'         malebligi la raporton\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Raportu misojn al <%s>.\n"
+"APARTAĴO estas listo da kom-apartitaj vortoj, kiuj povas inkluzivigi:\n"
+"  `caret'        montri erarojn per tajp-montriloj\n"
+"  `all'          ĉio el supre\n"
+"  `none'         malebligi ĉion el supre\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Raportu misojn al <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s hejmpaĝo: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Ĝenerala helpo por uzi programaron GNU: <http://www.gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr "Raportu mistradukojn al <http://translationproject.org/team/>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Por la tuta dokumentaro, lanĉu: info bison.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU-a Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Verkita de Robert Corbett kaj Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Kopirajto (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -299,26 +332,26 @@ msgstr ""
 "Ekzistas NENIU\n"
 "garantio; eĉ ne por MERKATIGO aŭ TAŬGO POR PRIVATA CELO.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "multoblaj deklaroj de skeleto ne estas valide"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: malvalida lingvo"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "multoblaj deklaroj de lingvo ne estas valide"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: mankas argumento"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "kroma argumento %s"
@@ -331,7 +364,7 @@ msgstr "malplena"
 msgid "Grammar"
 msgstr "Gramatiko"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -341,10 +374,10 @@ msgid ""
 msgstr ""
 "// Generita de %s.\n"
 "// Raportu misojn al <%s>.\n"
-"// Hejm-paĝo: <%s>.\n"
+"// Hejmpaĝo: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "troa lini-numero"
@@ -358,38 +391,37 @@ msgstr "troa kolumn-numero"
 msgid "rule useless in parser due to conflicts"
 msgstr "regulo neutila en analizilo pro konfliktoj"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "'%%define'-variablo %s estis redifinata"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "antaŭa difino"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: nedifinita '%%define'-variablo %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "malvalida valoro por bulea '%%define'-variablo %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "malvalida valoro por '%%define'-variablo %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "akceptita valoro: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "mankas identigilon en deklaro de parametro"
@@ -427,10 +459,10 @@ msgstr "akcepti"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "stato %d"
+msgid "State %d"
+msgstr "Stato %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -459,72 +491,71 @@ msgstr "Reguloj neutilaj en analizilo pro konfliktoj"
 msgid "multiple %s declarations"
 msgstr "multoblaj deklaroj %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "kolizio de rezulto-tipo je la kunmiksa funkcio %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "antaŭa deklaro"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "duobligita simbol-nomo por %s estas preteratentita"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regulo celanta %s, kio estas ĵetono"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "kolizio de tipo je la apriora ago: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "malplena regulo por tipigita neterminalo, kaj neniu ago"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "neuzita valoro: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nedifinita valoro"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "ĵetono por %%prec ne estas difinita: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "nur po unu %s permesate por regulo"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s influas nur analizilojn GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s devas estis sekvata de pozitiva numero"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "regulo tro longas"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "neniu regulo en eniga gramatiko"
@@ -570,102 +601,100 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "ekiga simbolo %s ne derivas iun ajn frazon"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "perdita '$'"
+msgstr "perdita '%s'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 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:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "estontaj versioj de Bison ne aldonos la ';'"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "referencas al: %c%s ĉe %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "eble signifis: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", kaŝanta %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " ĉe %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entjero for de limo: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "malvalida referenco: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "simbolo ne trovita en produktado antaŭ $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "simbolo ne trovita en produktado: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "trompiga referenco: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "plursenca referenco: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "malimplicita tipo liverita en netipigita gramatiko"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de %s havas neniun deklaritan tipon"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s de %s havas neniun deklaritan tipon"
@@ -685,57 +714,59 @@ msgstr "malvalida instrukcio: %s"
 msgid "invalid identifier: %s"
 msgstr "malvalida identigilo: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "malvalida signo: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "malvalida signo"
+msgstr[1] "malvalidaj signoj"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "neatendata identigilo en rekt-krampigita nomo: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "identigilo estas atendata"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "malvalida signo en rekt-krampigita nomo: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "malvalida signo en rekt-krampigita nomo"
+msgstr[1] "malvalidaj signoj en rekt-krampigita nomo"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "malplena signo-litero"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "kromaj signoj en signo-litero"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "malvalida nul-signo"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "malvalida numero post \\-eskapo: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "malvalida signo post \\-eskapo: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "mankas %s ĉe la dosierfino"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "mankas %s ĉe la linifino"
@@ -770,84 +801,84 @@ msgstr "POSIX Yacc malpermesas strekojn en simbol-nomoj: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "tro multaj simbolojn en eniga gramatiko (limo estas %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "redeklaro de %s por %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "redeklaro de %s por <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbolo %s estas redifinita"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "simbolo %s estas redeklarita"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redifinado de uzant-ĵetona nombro da %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "simbolo %s estas uzata, sed ne estas difinita kiel ĵetonon kaj havas neniun "
 "regulon"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simbolo %s estas uzata pli ol unufoje kiel literan ĉenon"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "al la simbolo %s estis donata pli ol unu litera ĉeno"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redeklaro de uzant-ĵetono numero %d por %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "antaŭa deklaro por %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "la ekiga simbolo %s estas nedifinita"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "la ekiga simbolo %s estas ĵetono"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "redeklaro por apriore markita '%%destructor'"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "redeklaro por apriore senmarka '%%destructor'"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "redeklaro por apriore markita '%%printer'"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "redeklaro por apriore senmarka '%%printer'"
@@ -1005,69 +1036,69 @@ msgstr "Nekonata sistem-eraro"
 #: lib/getopt.c:547 lib/getopt.c:576
 #, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: elektilo '%s' estas plursenca; eblecoj:"
+msgstr "%s: modifilo '%s' estas plursenca; eblecoj:"
 
 #: lib/getopt.c:624 lib/getopt.c:628
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: elektilo '--%s' ne permesas argumenton\n"
+msgstr "%s: modifilo '--%s' ne permesas argumenton\n"
 
 #: lib/getopt.c:637 lib/getopt.c:642
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: elektilo '%c%s' ne permesas argumenton\n"
+msgstr "%s: modifilo '%c%s' ne permesas argumenton\n"
 
 #: lib/getopt.c:685 lib/getopt.c:704
 #, c-format
 msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: elektilo '--%s' postulas argumenton\n"
+msgstr "%s: modifilo '--%s' postulas argumenton\n"
 
 #: lib/getopt.c:742 lib/getopt.c:745
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: nerekonita elektilo '--%s'\n"
+msgstr "%s: nerekonita modifilo '--%s'\n"
 
 #: lib/getopt.c:753 lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: nerekonita elektilo '%c%s'\n"
+msgstr "%s: nerekonita modifilo '%c%s'\n"
 
 #: lib/getopt.c:805 lib/getopt.c:808
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: malvalida elektilo -- '%c'\n"
+msgstr "%s: malvalida modifilo -- '%c'\n"
 
 #: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: la elektilo postulas argumenton -- '%c'\n"
+msgstr "%s: la modifilo postulas argumenton -- '%c'\n"
 
 #: lib/getopt.c:934 lib/getopt.c:950
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: elektilo '-W %s' estas plursenca\n"
+msgstr "%s: modifilo '-W %s' estas plursenca\n"
 
 #: lib/getopt.c:974 lib/getopt.c:992
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: elektilo '-W %s' ne permesas argumenton\n"
+msgstr "%s: modifilo '-W %s' ne permesas argumenton\n"
 
 #: lib/getopt.c:1013 lib/getopt.c:1031
 #, c-format
 msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: elektilo '-W %s' postulas argumenton\n"
+msgstr "%s: modifilo '-W %s' postulas argumenton\n"
 
 #: lib/obstack.c:413 lib/obstack.c:415 lib/xalloc-die.c:34
 msgid "memory exhausted"
 msgstr "memoro estas plenigita"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "ne eblas krei dukton"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1139,12 +1170,12 @@ msgstr "subprocezo %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "subprocezo %s ricevis neripareblan signalon %d"
 
+#~ msgid "state %d"
+#~ msgstr "stato %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "perdita '@'"
 
-#~ msgid "I/O error"
-#~ msgstr "En/Eliga eraro"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index deba014..00e9c99 100644 (file)
Binary files a/po/es.gmo and b/po/es.gmo differ
index ba67e5e..0382b5d 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -40,11 +40,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "aviso"
 
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Error de E/S"
+
 # Duda: desconozco cuál será el convenio en la lista de correo a
 # propósito de "fatal". Por favor, comprueba que "error grave" es
 # preferido por todos los miembros a "error fatal" - cll
@@ -52,7 +57,7 @@ msgstr "aviso"
 # La verdad es que a mi lo de error fatal me suena fatal
 # ngp
 #
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "error grave: "
@@ -166,17 +171,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "salidas en conflicto al fichero %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pruebe `%s --help' para más información.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Utilización: %s [OPCIÓN]... FICHERO\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -184,16 +189,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 #, fuzzy
 msgid ""
 "\n"
@@ -205,6 +210,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "Modos de operación:\n"
@@ -215,12 +221,11 @@ msgstr ""
 "                                dependiente de la configuración local\n"
 "  -y, --yacc                    emula POSIX yacc\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -230,7 +235,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Analizador:\n"
 "  -S, --skeleton=FICHERO     especifica el skeleton a utilizar\n"
@@ -241,7 +245,7 @@ msgstr ""
 "  -n, --no-parser            solamente genera las tablas\n"
 " --k, --token-table          incluye una tabla de nombres de terminales\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -256,7 +260,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Salida:\n"
 "  -d, --defines              también produce un fichero de cabecera\n"
@@ -268,22 +271,22 @@ msgstr ""
 "  -g, --graph                también produce una descripción en VCG del "
 "automaton\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -303,28 +306,57 @@ msgstr ""
 "  `all'          incluye toda la información anterior\n"
 "  `none'         disable the report\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr "Informe de los errores a <bug-bison@gnu.org>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Escrito por Robert Corbett y Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -334,27 +366,27 @@ msgstr ""
 "NINGUNA garantía; ni siquiera para COMERCIALIZACIÓN o ADAPTACIÓN PARA UN\n"
 "USO PARTICULAR\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "múltiples declaraciones de %s"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "valor no válido: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "múltiples declaraciones de %s"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "falta un operando después de `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "operando extra `%s'"
@@ -367,7 +399,7 @@ msgstr "vac
 msgid "Grammar"
 msgstr "Gramática"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -376,7 +408,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "desbordamiento del número de línea"
@@ -391,38 +423,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "redefinido el símbolo %s"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valor no válido: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "falta el identificador el la declaración del parámetro"
@@ -460,10 +491,10 @@ msgstr "aceptar"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "estado %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Estado %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -493,72 +524,72 @@ msgstr "la regla nunca se redujo debido a los conflictos"
 msgid "multiple %s declarations"
 msgstr "múltiples declaraciones de %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "tipo resultado incompatible en la función combinada %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "primera declaración"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "se ha dado una regla para %s, que es un terminal"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "incompatibilidad de tipos en la acción por defecto: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "regla vacía para un no terminal con tipo y no hay ninguna acción"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "valor no usado: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "valor no fijado: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "sólo se permite un %s por regla"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s afecta sólo a los analizadores GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s debe estar seguido por un número positivo"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "la regla es demasiado larga"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "no hay reglas en la gramática de entrada"
@@ -612,97 +643,95 @@ msgstr "El s
 msgid "stray '%s'"
 msgstr "`$ extraviado"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entero fuera de rango: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directiva no válida: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinición de la precedencia de %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumento %s ambigüo para %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' no tiene tipo declarado"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' no tiene tipo declarado"
@@ -722,61 +751,65 @@ msgstr "directiva no v
 msgid "invalid identifier: %s"
 msgstr "directiva no válida: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "carácter no válido: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "carácter no válido: %s"
+msgstr[1] "carácter no válido: %s"
 
 # En unas ocasiones, has traducido `unexpected' como `no esperado' y, en
 # otras, como `inesperado'. Cualquiera es correcta, por supuesto y, en
 # este caso, la segunda me parece más apropiada - cll
 # ok - ngp
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, fuzzy, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "ítem inesperado: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "carácter no válido: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "carácter no válido: %s"
+msgstr[1] "carácter no válido: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "carácter nulo no válido"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "carácter nulo no válido: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "carácter no válido: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "falta cadena `%s' al final del fichero"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "falta cadena `%s' al final del fichero"
@@ -811,27 +844,27 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "demasiados símbolos en la gramática de entrada (el límite es %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s redeclaración de %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s redeclaración de %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "redefinido el símbolo %s"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "redefinido el símbolo %s"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redefinición del número del terminal del usuario de %s"
@@ -839,58 +872,58 @@ msgstr "redefinici
 # `token' se debe traducir como `literal' - cll
 # en terminología de compiladores token es más un terminal - ngp
 #
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "se usa el símbolo %s, pero no está definido como terminal y no tiene reglas"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "símbolo `%s' utilizado más de una vez como cadena literal"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "al símbolo `%s' se le ha dado más de una cadena literal"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redeclaración del tipo de %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "redeclaración del tipo de %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "el símbolo de inicio (axioma) %s no está definido"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "el símbolo de inicio (axioma) %s es un terminal"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1120,13 +1153,13 @@ msgstr "%s: la opci
 msgid "memory exhausted"
 msgstr "memoria agotada"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "no se puede cerrar el fichero"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1198,13 +1231,13 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#~ msgid "state %d"
+#~ msgstr "estado %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "`@ extraviado"
 
-#~ msgid "I/O error"
-#~ msgstr "Error de E/S"
-
 #~ msgid "warning: "
 #~ msgstr "aviso: "
 
index c1fac72..591e164 100644 (file)
Binary files a/po/et.gmo and b/po/et.gmo differ
index 3d25d19..c248bc4 100644 (file)
--- a/po/et.po
+++ b/po/et.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-05 21:46+0300\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-08 19:20+0200\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
 "Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
 "Language: et\n"
@@ -17,12 +17,16 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "hoiatus"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "viga"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "fataalne viga"
 
@@ -106,17 +110,17 @@ msgstr "keeldun sisendfaili %s 
 msgid "conflicting outputs to file %s"
 msgstr "konfliktsed väljundid faili %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Lisainfo saamiseks proovige `%s --help'.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Kasuta: %s [VÕTI]...FAIL\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -128,18 +132,18 @@ msgstr ""
 "kanoonilise LR(1) tugi on eksperimentaalne.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Kohustuslikud argumendid pikkadele võtmetele on kohustuslikus ka "
 "lühikestele.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Sama ka mittekohustuslike argumentide korral.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -150,6 +154,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -160,14 +165,13 @@ msgstr ""
 "      --print-datadir        esita skelettide ja XSLT kataloogi nimi\n"
 "  -y, --yacc                 emuleeri POSIX yacc\n"
 "  -W, --warnings[=KATEGOORIA] raporteeri antud kategooria hoiatusi\n"
-"\n"
+"  -f, --feature[=OMADUS]     aktiveeri muid omadusi\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -177,11 +181,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -L, --language=KEEL        määra väljudi programmeerimise keel\n"
-"                             (see on ekperimentaalne funktsioon)\n"
 "  -S, --skeleton=FAIL        kasutatava skeleti kirjeldus\n"
 "  -t, --debug                varusta parser silumisinfoga\n"
 "      --locations            luba asukohtade arvestamine\n"
@@ -189,11 +191,12 @@ msgstr ""
 "  -F, --force-define=NIMI[=VÄÄRTUS] kirjuta '%define NIMI \\\"VÄÄRTUS\\\"' "
 "üle\n"
 "  -p, --name-prefix=PREFIKS  lisa välissümbolite nimedele PREFIKS\n"
+"                             kasutage selle asemel '-Dapi.prefix=PREFIKS'\n"
 "  -l, --no-lines             ära genereeri '#line' direktiive\n"
 "  -n, --no-parser            genereeri ainult tabelid\n"
 "  -k, --token-table          lisa ka sümbolite nimede tabel\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -207,7 +210,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Väljund:\n"
 "      --defines[=FAIL]       loo ka päisfail\n"
@@ -222,25 +224,26 @@ msgstr ""
 "  -x, --xml[=FAIL]           loo automaadi XML raport\n"
 "                             (XML skeem on eksperimentaalne)\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Hoiatuste kategooriad on järgnevad:\n"
 "  `midrule-values'  seadmata või kasutamata vahereeglite väärtused\n"
 "  `yacc'            mitteühilduvused POSIX Yacc suhtes\n"
 "  `conflicts-sr'    S/R konfliktid (vaikimisi)\n"
 "  `conflicts-rr'    R/R konfliktid (vaikimisi)\n"
+"  `deprecated'      aegunud konstruktsioonid\n"
 "  `other'           kõik muud hoiatused (vaikimisi)\n"
 "  `all'             kõik hoiatused\n"
 "  `no-CATEGORY'     keela antud kategooria hoiatused\n"
@@ -248,7 +251,7 @@ msgstr ""
 "  `error'           käsitle hoiatusi vigadena\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -266,30 +269,64 @@ msgstr ""
 "  `all'          kogu ülaltoodud info\n"
 "  `none'         blokeeri raport\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Teatage palun vigadest aadressil <%s>.\n"
+"OMADUS on komadega eraldatud järgnevate sõnade loend:\n"
+"  `caret'        märgi vead sümboliga ^\n"
+"  `all'          kõik ülaltoodud\n"
+"  `none'         blokeeri kõik ülaltoodud\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Teatage palun vigadest aadressil <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s koduleht: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Üldine abiinfo GNU tarkvara kohta: <http://www.gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Tõlkevigadest teatage palun aadressil <http://translationproject.org/team/"
+">.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Täieliku dokumentatsiooni lugemiseks käivitage: info bison.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Kirjutanud Robert Corbett ja Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Autoriõigus © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -297,26 +334,26 @@ msgstr ""
 "See on vaba tarkvara; kopeerimistingimused leiate lähtetekstidest. Garantii\n"
 "PUUDUB; ka müügiks või mingil eesmärgil kasutamiseks.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "korduvad skeleti deklaratsioonid ei ole lubatud"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: vigane keel"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "korduvad keele deklaratsioonid ei ole lubatud"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: puudub operand"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "liigne operand %s"
@@ -329,7 +366,7 @@ msgstr "t
 msgid "Grammar"
 msgstr "Grammatika"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -342,7 +379,7 @@ msgstr ""
 "// Koduleht: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "rea numbri ületäitumine"
@@ -356,38 +393,37 @@ msgstr "veeru numbri 
 msgid "rule useless in parser due to conflicts"
 msgstr "reegel on konfliktide tõttu kasutu"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define muutuja %s deklareeriti uuesti"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "eelmine deklaratsioon"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: defineerimata %%define muutuja %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "vigane %%define tõeväärtus muutuja %s väärtus"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "vigane väärtus %%define muutujale %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "lubatud väärtus: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "parameetri deklaratsioonis puudub identifikaator"
@@ -425,10 +461,10 @@ msgstr "n
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "olek %d"
+msgid "State %d"
+msgstr "Olek %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -457,72 +493,71 @@ msgstr "Reeglid on parseris konfliktide t
 msgid "multiple %s declarations"
 msgstr "korduvad %s deklaratsioonid"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "tulemuse tüübikonflikt mestimise funktsioonis %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "eelmine deklaratsioon"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "ignoreerin dubleeritud sümboli nime %s"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "%s jaoks on antud reegel, aga see on märk"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "vaikimisi tegevuse tüübikonflikt: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "tüübiga mitteterminalil on tühi reegel ja puudub tegevus"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "kasutamata väärtus: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "seadmata väärtus: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "%%prec märgend ei ole defineeritud: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "reeglis on lubatud ainult üks %s"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s puudutab ainult GLR parsereid"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s järel peab olema positiivne number"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "reegel on liiga pikk"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "sisendgrammatikas pole reegleid"
@@ -568,101 +603,99 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "stardisümbolist %s ei tuletata ühtegi lauset"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "liigne '$'"
+msgstr "liigne '%s'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr "tegevuse koodi lõpus võib olla vaja ';'"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "Bisoni uuemad versioonid ei lisa ';'"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "viitab: %c%s kohal %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "arvatavasti mõeldi: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", peidab %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " kohal %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "number piiridest väljas: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "vigane viide: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "sümbol puudub produktsioonis $%d ees: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "sümbol puudub produktsioonis: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "segadust tekitav viide: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "segane viide: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "tüüpimata grammatikas kasutati konkreetset tüüpi"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ märgil '%s' ei oma deklareeritud tüüpi"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s märgil '%s' ei oma deklareeritud tüüpi"
@@ -682,57 +715,59 @@ msgstr "vigane juhus: %s"
 msgid "invalid identifier: %s"
 msgstr "vigane identifikaator: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "vigased sümbolid: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "vigane sümbol"
+msgstr[1] "vigased sümbolid"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "nurksulgudes nimes on eeotamatu identifikaator: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "oodati identifikaatorit"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "vigane sümbol sulgudega nimes: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "vigane sümbol sulgudega nimes"
+msgstr[1] "vigased sümbolid sulgudega nimes"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "tühi sümbol literaal"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "liigsed sümbolid sümbol literaalis"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "vigane null sümbol"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "vigane number peale \\-jada: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "vigane sümbol peale \\-jada: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "faili lõpus puudub %s"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "rea lõpus puudub %s"
@@ -767,84 +802,84 @@ msgstr "POSIX Yacc keelab kriipsud s
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "sisendgrammatikas on liiga palju sümboleid (piirang on %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s uuesti deklareerimine %s jaoks"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s deklareeriti <%s> jaoks uuesti"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "sümbol %s on uuesti defineeritud"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "sümbol %s on uuesti deklareeritud"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "%s kasutaja märgi numbri uuesti defineerimine"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "kasutatakse sümbolit %s, mis ei ole defineeritud märgina ja millel puuduvad "
 "reeglid"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "sümbolit %s on kasutatud enam kui kord literaal sõnena"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "sümbolile %s on antud enam kui üks literaal sõne"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "kasutaja märgi number %d uuesti deklareerimine %s jaoks"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "%s eelmine deklaratsioon"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "stardisümbol %s ei ole defineeritud"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "stardisümbol %s on märk"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "vaikimisi märgitud %%destructor uuesti deklareerimine"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "vaikimisi märkimata %%destructor uuesti deklareerimine"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "vaikimisi märgitud %%printer uuesti deklareerimine"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "vaikimisi märkimata %%printer uuesti deklareerimine"
@@ -1058,13 +1093,13 @@ msgstr "%s: v
 msgid "memory exhausted"
 msgstr "mälu on otsas"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "toru ei õnnestu luua"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1135,6 +1170,3 @@ msgstr "%s alamprotsess"
 #, c-format
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s alamprotsess sai fataalse signaali %d"
-
-#~ msgid "stray '@'"
-#~ msgstr "liigne '@'"
index 76717d3..e9b2352 100644 (file)
Binary files a/po/fi.gmo and b/po/fi.gmo differ
index e349b8d..3d11278 100644 (file)
--- a/po/fi.po
+++ b/po/fi.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-05 23:03+0300\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 18:49+0200\n"
 "Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
 "Language: fi\n"
@@ -18,12 +18,16 @@ msgstr ""
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 "X-Poedit-Bookmarks: 136,-1,-1,-1,-1,-1,-1,-1,-1,-1\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "varoitus"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "virhe"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "vakava virhe"
 
@@ -90,7 +94,7 @@ msgstr[1] "odotettiin %d siirto/supistaminen -ristiriitaa"
 #: src/files.c:114
 #, c-format
 msgid "%s: cannot open"
-msgstr "%s: ei voi avata tiedostoa"
+msgstr "%s: tiedoston avaus epäonnistui"
 
 #: src/files.c:130
 #, c-format
@@ -100,7 +104,7 @@ msgstr "syöttö/tulostevirhe"
 #: src/files.c:133
 #, c-format
 msgid "cannot close file"
-msgstr "tiedostoa ei voi sulkea"
+msgstr "tiedoston sulkeminen epäonnistui"
 
 #: src/files.c:352
 #, c-format
@@ -112,17 +116,17 @@ msgstr "kieltäydytään korvaamasta syötetiedostoa %s"
 msgid "conflicting outputs to file %s"
 msgstr "keskenään ristiriitaisia tulosteita tiedostoon %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pyydä lisätietoja komennolla ”%s --help”.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Käyttö: %s [VALITSIN]... TIEDOSTO\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -134,18 +138,18 @@ msgstr ""
 "kanoninen LR(1) -tuki on kokeellinen.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Pakolliset argumentit pitkille valitsimille ovat pakollisia myös lyhyille "
 "valitsimille.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Sama pätee valinnaisille argumenteille.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -156,6 +160,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -169,14 +174,14 @@ msgstr ""
 "  -y, --yacc                 matki POSIX Yacc -ohjelmaa\n"
 "  -W, --warnings=[KATEGORIA] raportoi tähän KATEGORIAan kuuluvat "
 "varoitukset\n"
+"  -f, --feature[=OMINAISUUS] aktivoi sekalaiset ominaisuudet\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -186,11 +191,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Jäsennin:\n"
 "  -L, --language=KIELI           määrittele tulosteohjelmointikieli\n"
-"                                 (tämä on kokeellinen ominaisuus)\n"
 "  -S, --skeleton=TIEDOSTO        määrittele käytettävä runko\n"
 "  -t, --debug                    lisää jäsennin vianjäljitykseen\n"
 "      --locations                ota käyttöön paikkojen laskenta\n"
@@ -204,7 +207,7 @@ msgstr ""
 "  -k, --token-table              sisällytä merkkisymbolinimien taulu\n"
 "\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -218,12 +221,11 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Tuloste:\n"
 "      --defines[=TIEDOSTO]   tuota myös otsaketiedosto\n"
-"  -d                         samoin, mutta ei voi määritellä TIEDOSTOa "
-"(POSIX Yacc -yhteensopivuus)\n"
+"  -d                         samoin, mutta TIEDOSTOn (POSIX \n"
+"                                Yacc-yhteensopivuus)määrittely epäonnistui\n"
 "  -r, --report=THINGS        tuota myös yksityiskohdat automaatissa\n"
 "      --report-file=TIEDOSTO kirjoita raportti TIEDOSTOon\n"
 "  -v, --verbose              sama kuin ”--report=state”\n"
@@ -235,25 +237,26 @@ msgstr ""
 "\n"
 
 #  Koodissa midrule on keskellä oleva lohko, jota edeltää toprule ja jonka alla on bottomrule.
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Varoituskategoriat sisältävät:\n"
 "  `midrule-values'  asettaa ja poistaa midrule-arvoja\n"
 "  `yacc'            yhteensopimattomuudet POSIX YACC -ohjelman kanssa\n"
 "  `conflicts-sr'    S/R-ristiriidat (oletuksena otettu käyttöön)\n"
 "  `conflicts-rr'    R/R-ristiriidat (oletuksena otettu käyttöön)\n"
+"  `deprecated'      vanhentuneet rakenteet\n"
 "  `other'           kaikki muut varoitukset (oletuksena otettu käyttöön)\n"
 "  `all'             kaikki varoitukset\n"
 "  `no-CATEGORY'     käännä pois päältä kaikki varoitukset kategoriassa "
@@ -262,7 +265,7 @@ msgstr ""
 "  `error'           käsittele varoituksia virheinä\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -281,32 +284,66 @@ msgstr ""
 "  `all'          sisältää kaikki yllä mainitut tiedot\n"
 "  `none'         poistaa raportoinnin\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+"OMINAISUUS on pilkulla eroteltujen sanojen luettelo, joka voi sisältää:\n"
+"  `caret'        näytä virheet sirkumfleksilla\n"
+"  `all'          kaikki yllä\n"
+"  `none'         ota kaikki yllä olevat pois käytöstä\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Ilmoita virheistä (englanniksi) osoitteeseen <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s kotisivu: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Yleinen opaste GNU-ohjelmistojen käyttämisestä: <http://www.gnu.org/gethelp/"
+">.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
 msgstr ""
-"\n"
-"Ilmoita virheistä (englanniksi) osoitteeseen <%s>.\n"
 "Ilmoita käännösvirheistä osoitteeseen <translation-team-fi@lists.sourceforge."
 "net>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Täydellisen dokumentaation saat suorittamalla komennon: info bison.\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Kirjoittajat: Robert Corbett ja Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -315,26 +352,26 @@ msgstr ""
 "OLE MITÄÄN TAKUUTA; ei edes KAUPPAKELPOISUUDELLE tai SOPIVUUDELLE TIETTYYN "
 "TARKOITUKSEEN.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "monirunkoesittelyt ovat virheellisiä"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: virheellinen kieli"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "monikieliesittelyt ovat virheellisiä"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: puuttuva operandi"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "ylimääräinen operandi %s"
@@ -347,7 +384,7 @@ msgstr "tyhjä"
 msgid "Grammar"
 msgstr "Kielioppi"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -362,7 +399,7 @@ msgstr ""
 "// Kotisivu: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "rivinumeron ylivuoto"
@@ -376,38 +413,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-muuttuja %s on määritelty uudelleen"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "edellinen määrittely"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: määrittelemätön %%define-muuttuja %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
-msgstr "virheellinen arvo kohteelle %%define Boolean muuttuja %s"
+msgstr "virheellinen arvo kohteelle %%define-booleanmuuttuja %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "virheellinen arvo kohteelle %%define-muuttuja %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "hyväksytty arvo: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "puuttuva tunniste parametriesittelyssä"
@@ -445,10 +481,10 @@ msgstr "accept"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "tila %d"
+msgid "State %d"
+msgstr "Tila %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -477,72 +513,71 @@ msgstr "Säännöt ovat hyödyttömiä jäsentimessä ristiriitojen vuoksi"
 msgid "multiple %s declarations"
 msgstr "useita %s esittelyjä"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "tulostyyppien yhteentörmäys merge-funktiossa %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "edellinen esittely"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "kaksoiskappalesymbolinimi kohteelle %s ohitettiin"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "sääntö annettu kohteelle %s, joka on merkkisymboli"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "tyyppien törmäys vastakkain oletustoiminassa: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "tyhjä sääntö tyypitetylle ei-päätteelle, ja ei toimintoa"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "käyttämätön arvo: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "asettamaton arvo: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "merkkisymbolia kohteelle %%prec ei ole määritelty: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "vain yksi %s on sallittu sääntöä kohden"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s vaikuttaa vain GLR-jäsentimiin"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "kohdetta %s on seurattava postiivinen numero"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "sääntö on liian pitkä"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "ei sääntöjä syötekieliopissa"
@@ -588,103 +623,101 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "aloitussymboli %s ei johda lauseeseen"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "yksinäinen ’$’"
+msgstr "yksinäinen ’%s’"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr "merkkiä ’;’ saatetaan tarvita toimintakoodin lopussa"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "tulevat Bison-versiot eivät lisää merkkiä ’;’"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
-msgstr "viittaa kohteeseen: %c%s at %s"
+msgstr "viittaa kohteeseen: %c%s osoitteessa %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "mahdollisesti tarkoitti: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", piilotetaan %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " osoitteessa %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "kokonaisluku on lukualueen ulkopuolella: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "virheellinen viite: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "symbolia ei löytynyt tuotannosta ennen $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbolia ei löytynyt tuotannosta: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "harhaanjohtava viite: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "ei-yksiselitteinen viite: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "eksplisiittinen tyyppi annettu tyypittömässä kieliopissa"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$/%s ei ole esitelty tyyppi"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s/%s ei ole esitelty tyyppi"
@@ -704,57 +737,59 @@ msgstr "virheellinen direktiivi: %s"
 msgid "invalid identifier: %s"
 msgstr "virheellinen tunniste: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "virheellinen merkki: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "virheellinen merkki: %s"
+msgstr[1] "virheellisiä merkkejä: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "odottamaton tunniste sulkumerkillisessä nimessä: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "odotettiin tunnistetta"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "virheellinen merkki sulkeissa olevassa nimessä: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "virheellinen merkki sulkeissa olevassa nimessä: %s"
+msgstr[1] "virheellisiä merkkejä sulkeissa olevassa nimessä: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "tyhjä merkkiliteraali"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "ylimääräisiä merkkejä merkkiliteraalissa"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "virheellinen null-merkki"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "virheellinen numero \\-koodinvaihtomerkin jälkeen: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "virheellinen merkki \\-koodinvaihtomerkin jälkeen: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "puuttuva %s tiedoston lopussa"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "puuttuva %s rivin lopussa"
@@ -789,84 +824,84 @@ msgstr "POSIX Yacc kieltää ajatusviivat symbolinimissä: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "liian monta symbolia syötekieliopissa (raja on %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s uudelleenesittely kohteelle %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s uudelleenesittely kohteelle <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symboli %s on määritelty uudelleen"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "symboli %s on esitelty uudelleen"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "määritellään uudelleen kohteen %s käyttäjämerkkisymbolinumero"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "symbolia %s käytetään, mutta sitä ei ole määritelty merkkisymbolina eikä "
 "sillä ole sääntöjä"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbolia %s on käytetty useammin kuin kerran literaalimerkkijonona"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symboli %s on annettu useammassa kuin yhdessä literaalimerkkijonossa"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "käyttäjämerkkijononumeron %d uudelleenesittely kohteelle %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "edellinen esittely kohteelle %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "aloitussymboli %s on määrittelemätön"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "aloitussymboli %s on merkkisymboli"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "uudelleenesittely oletusmerkitylle %%destructor"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "uudelleenesittely oletus-ei-merkitylle %%destructor"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "uudelleenesittely oletus-merkitylle %%printer"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "uudelleenesittely oletus-ei-merkitylle %%printer"
@@ -921,12 +956,12 @@ msgstr ""
 #: djgpp/subpipe.c:234
 #, c-format
 msgid "subsidiary program '%s' interrupted"
-msgstr "tytärohjelmaa ’%s’ keskeytetty"
+msgstr "tytärohjelma ’%s’ on keskeytetty"
 
 #: djgpp/subpipe.c:241
 #, c-format
 msgid "subsidiary program '%s' not found"
-msgstr "tytärohjelma ’%s’ ei löytynyt"
+msgstr "tytärohjelmaa ’%s’ ei löytynyt"
 
 #: djgpp/subpipe.c:265
 #, c-format
@@ -1001,7 +1036,7 @@ msgstr "Kumuloituneet ajot = %u\n"
 
 #: lib/bitset_stats.c:259 lib/bitset_stats.c:264
 msgid "cannot read stats file"
-msgstr "ei voida lukea stats-tiedostoa."
+msgstr "stats-tiedoston lukeminen epäonnistui"
 
 #: lib/bitset_stats.c:261
 #, c-format
@@ -1010,11 +1045,11 @@ msgstr "virheellinen stats-tiedostokoko\n"
 
 #: lib/bitset_stats.c:287 lib/bitset_stats.c:289
 msgid "cannot write stats file"
-msgstr "ei voida kirjoittaa stats-tiedostoa"
+msgstr "stats-tiedostoon kirjoittaminen epäonnistui"
 
 #: lib/bitset_stats.c:292
 msgid "cannot open stats file for writing"
-msgstr "ei voida avata stats-tiedostoa kirjoittamista varten"
+msgstr "stats-tiedoston avaaminen kirjoittamista varten epäonnistui"
 
 #: lib/closeout.c:112
 msgid "write error"
@@ -1083,13 +1118,13 @@ msgstr "%s: valitsin ’-W %s’ vaatii argumentin\n"
 msgid "memory exhausted"
 msgstr "muisti loppui"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
-msgstr "putkea ei voida luoda"
+msgstr "putken luominen epäonnistui"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1161,12 +1196,12 @@ msgstr "%s-aliprosessi"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s-aliprosessi sai kohtalokkaan signaalin %d"
 
+#~ msgid "state %d"
+#~ msgstr "tila %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "yksinäinen ’@’"
 
-#~ msgid "I/O error"
-#~ msgstr "Siirräntävirhe"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index cfd2bfb..29353a2 100644 (file)
Binary files a/po/fr.gmo and b/po/fr.gmo differ
index a6cf394..922a442 100644 (file)
--- a/po/fr.po
+++ b/po/fr.po
@@ -6,10 +6,10 @@
 # Frédéric Marchal <fmarchal@perso.be>, 2012.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bison 2.5.90\n"
+"Project-Id-Version: GNU bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-06 10:11+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-11 20:15+0100\n"
 "Last-Translator: Frédéric Marchal <fmarchal@perso.be>\n"
 "Language-Team: French <traduc@traduc.org>\n"
 "Language: fr\n"
@@ -17,14 +17,18 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms:  nplurals=2; plural=(n > 1);\n"
-"X-Generator: Lokalize 1.4\n"
+"X-Generator: Lokalize 1.5\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "avertissement"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "erreur"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "erreur fatale"
 
@@ -108,17 +112,17 @@ msgstr "refus d'écraser le fichier d'entrée %s"
 msgid "conflicting outputs to file %s"
 msgstr "sorties en conflit vers le fichier %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pour en savoir davantage, faites: « %s --help ».\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Usage: %s [OPTION]... FICHIER\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -132,18 +136,18 @@ msgstr ""
 "et de LR(1) canonique est expérimental.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Les paramètres requis pour les options longues sont également requis pour "
 "les options courtes.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "La même chose est vraie pour les paramètres optionnels.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -154,6 +158,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -165,15 +170,15 @@ msgstr ""
 "      --print-datadir        afficher le répertoire contenant les squelettes "
 "et XSLT\n"
 "  -y, --yacc                 émuler yacc en mode POSIX\n"
-"  -W, --warnings[=CATEGORIE] signaler les avertissements de la CATEGORIE\n"
+"  -W, --warnings[=CATÉGORIE] signaler les avertissements de la CATÉGORIE\n"
+"  -f, --feature[=FONCTION]   activer des fonctionnalités diverses\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -183,26 +188,23 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Analyseur:\n"
 "  -L, --language=LANGAGE           indiquer la langage de programmation de "
 "sortie\n"
-"                                   (ceci est expérimental)\n"
 "  -S, --skeleton=FICHIER           utiliser le FICHIER squelette\n"
 "  -t, --debug                      activer le mode de mise au point\n"
 "                                   de l'analyseur\n"
 "      --locations                  permettre le calcul des localisations\n"
 "  -D, --define=NOM[=VALEUR]        similaire à « %define NOM \"VALEUR\" »\n"
 "  -F, --force-define=NOM[=VALEUR]  outrepasse « %define NOM \"VALEUR\" »\n"
-"  -p, --name-prefix=PREFIXE        accoler le PREFIXE aux symboles externes\n"
+"  -p, --name-prefix=PRÉFIXE        accoler le PRÉFIXE aux symboles externes\n"
 "                                   rendu obsolète par « -Dapi."
-"prefix=PREFIXE »\n"
+"prefix=PRÉFIXE »\n"
 "  -l, --no-lines                   ne pas générer les directives « #line »\n"
 "  -k, --token-table                inclure la table des noms de jetons\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -216,7 +218,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Sortie:\n"
 "      --defines[=FICHIER]    produire un fichier d'en-tête\n"
@@ -227,25 +228,23 @@ msgstr ""
 "  -v, --verbose              identique à « --report=state »\n"
 "  -b, --file-prefix=PRÉFIXE  utiliser le PRÉFIXE pour le fichier de sortie\n"
 "  -o, --output=FICHIER       produire la sortie dans le FICHIER\n"
-"  -g, --graph                produire aussi la description du graphe de "
-"l'automate\n"
+"  -g, --graph[=FICHIER]      produire aussi un graphe de l'automate\n"
 "  -x, --xml[=FICHIER]        produire un rapport XML de l'automate\n"
 "                             (le schéma XML est expérimental)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Les catégories d'avertissements comprennent:\n"
 "  « midrule-values »  valeur de règle intermédiaire non définie ou "
@@ -253,14 +252,14 @@ msgstr ""
 "  « yacc »            incompatibilité avec le YACC POSIX\n"
 "  « conflicts-sr »    conflits S/R (activé par défaut)\n"
 "  « conflicts-rr »    conflits R/R (activé par défaut)\n"
+"  « deprecated »      constructions obsolètes\n"
 "  « other »           tous les autres avertissements (activé par défaut)\n"
 "  « all »             tous les avertissements\n"
-"  « no-CATEGORIE »    supprime les avertissements de la CATEGORIE\n"
+"  « no-CATÉGORIE »    supprime les avertissements de la CATÉGORIE\n"
 "  « none »            supprime tous les avertissements\n"
 "  « error »           traite les avertissements comme des erreurs\n"
-"\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -278,30 +277,66 @@ msgstr ""
 "  `all'          inclure toutes les informations ci-haut\n"
 "  `none'         désactiver la génération de rapport\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Rapportez toutes anomalies à <%s>.\n"
+"FONCTION est une liste de mots séparés par des virgules incluant:\n"
+"  « caret »       montrer les erreurs avec des carets\n"
+"  « all »         toutes celles ci-dessus\n"
+"  « none »        aucune de celles ci-dessus\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapportez toutes anomalies à <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "page d'accueil de %s: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Aide générique sur l'utilisation des logiciels GNU: <http://www.gnu.org/help/"
+"gethelp.fr.html>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Signalez les erreurs de traductions à <http://translationproject.org/team/fr."
+"html>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Pour la documentation complète, exécutez: info bison.\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Écrit par Robert Corbett et Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -310,26 +345,26 @@ msgstr ""
 "reproduction. AUCUNE garantie n'est donnée; tant pour des raisons\n"
 "COMMERCIALES que pour RÉPONDRE À UN BESOIN PARTICULIER.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "déclarations multiples de squelettes sont inacceptables"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: langage inacceptable"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "les déclarations multiples du langage sont interdits"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: opérande manquante"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "opérande superflu %s"
@@ -342,7 +377,7 @@ msgstr "vide"
 msgid "Grammar"
 msgstr "Grammaire"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -355,7 +390,7 @@ msgstr ""
 "// Page d'accueil: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "débordement du nombre de lignes"
@@ -369,38 +404,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "variable %%define %s redéfinie"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "définition précédente"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: variable %%define %s non définie"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, 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:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "valeur inacceptable pour %%define de la variable %s : %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "valeur acceptée : %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificateur manquant dans la déclaration de paramètres"
@@ -438,10 +472,10 @@ msgstr "accepter"
 msgid "$default"
 msgstr "$défaut"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "état %d"
+msgid "State %d"
+msgstr "Ã\89tat %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -470,73 +504,72 @@ msgstr "La règle est inutile dans l'analyseur à cause de conflits"
 msgid "multiple %s declarations"
 msgstr "déclarations multiples de %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 "conflit dans le type du résultat de la fonction de fusion %s : <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "déclaration précédente"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "doublon dans le nom de symbole %s est ignoré"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "la règle pour %s, qui est un terminal"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "conflit de type pour l'action par défaut: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "règle vide pour une catégorie typée et aucune action"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "valeur inutilisée: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "valeur non initialisée: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "le jeton pour %%prec n'est pas défini : %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "seul un %s est permis par règle"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s affecte seulement les analyseurs GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s doit être suivi d'un nombre positif"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "règle trop longue"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "la grammaire n'a pas de règles"
@@ -582,104 +615,102 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "symbole de départ %s ne produit aucune phrase"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "« $ » superflu"
+msgstr "« %s » superflu"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 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:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "les versions suivantes de Bison n'ajouteront pas le « ; »"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "voir %c%s à %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "signifiait probablement: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", cache %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " à %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "entier hors limite: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "référence invalide: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "symbole pas trouvé en production avant $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbole pas trouvé en production: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "référence trompeuse: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "référence ambiguë: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "type explicitement attribué à une grammaire sans type"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de %s n'a pas de type déclaré"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s de %s n'a pas de type déclaré"
@@ -699,57 +730,59 @@ msgstr "directive invalide: %s"
 msgid "invalid identifier: %s"
 msgstr "identificateur invalide: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "caractère invalide: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "caractère invalide"
+msgstr[1] "caractères invalides"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "identificateur inattendu dans un nom entre accolades: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "un identificateur est attendu"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "caractère invalide dans un nom entre accolades: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "caractère invalide dans un nom entre accolades"
+msgstr[1] "caractères invalides dans un nom entre accolades"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "caractère littéral vide"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "caractères en trop dans le caractère littéral"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "caractère nul invalide"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "nombre incorrect après la séquence d'échappement \\ : %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "caractère invalide après la séquence d'échappement \\ : %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "chaîne de caractères %s manquante en fin de fichier"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "%s manquant à la fin de fichier"
@@ -784,84 +817,84 @@ msgstr "Le Yacc POSIX interdit les tirets dans les noms de symboles: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "trop de symboles dans la grammaire d'entrée (limite est %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "redéclaration de %s pour %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "redéclaration de %s pour <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbole %s est redéfini"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "symbole %s est redéclaré"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redéfinition du jeton usager numéro de %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "le symbole %s est utilisé mais ce n'est pas un terminal et il ne possède pas "
 "de règle"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbole %s utilisé plus d'une fois dans une chaîne littérale"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symbole %s présent dans plus d'une chaîne littérale"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redéclaration du numéro de jeton utilisateur %d pour %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "déclaration précédente de %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "le symbole de départ %s n'est pas défini"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "le symbole de départ %s est un terminal"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "redéclaration du %%destructeur par défaut avec étiquette"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "redéclaration pour le %%destructeur par défaut sans étiquette"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "redéclaration de l'%%imprimante par défaut avec étiquette"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "redéclaration de l'%%imprimante par défaut sans étiquette"
@@ -1075,13 +1108,13 @@ msgstr "%s: l'option «-W %s» requiert un paramètre\n"
 msgid "memory exhausted"
 msgstr "mémoire épuisée"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "ne peut créer le tube"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1153,12 +1186,12 @@ msgstr "sous-processus %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "le sous-processus %s a reçu le signal fatal %d"
 
+#~ msgid "state %d"
+#~ msgstr "état %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "« @ » superflu"
 
-#~ msgid "I/O error"
-#~ msgstr "une erreur d'E/S"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index 8f7156b..7f37862 100644 (file)
Binary files a/po/ga.gmo and b/po/ga.gmo differ
index 1e2c9f1..c9269cd 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,12 +17,17 @@ msgstr ""
 "Plural-Forms: nplurals=5; plural=n==1 ? 0 : n==2 ? 1 : (n>2 && n<7) ? 2 :"
 "(n>6 && n<11) ? 3 : 4;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "rabhadh"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Earráid I/A"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "earráid mharfach"
 
@@ -117,17 +122,17 @@ msgstr "diúltaítear inchomhad %s a fhorscríobh"
 msgid "conflicting outputs to file %s"
 msgstr "aschuir chontrártha scríofa i gcomhad %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Bain triail as `%s --help' chun tuilleadh eolais a fháil.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Úsáid: %s [ROGHA]... COMHAD\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -138,18 +143,19 @@ msgstr ""
 "a úsáideann táblaí parsálaithe LALR(1), IELR(1), nó LR(1) canónta.\n"
 "Tacaíocht thurgnamhach amháin ar IELR(1) agus LR(1) canónta.\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Is riachtanach le rogha ghearr aon argóint atá riachtanach leis an rogha "
 "fhada.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Agus mar an gcéanna le haghaidh argóintí roghnacha freisin.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
+#, fuzzy
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -160,6 +166,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -174,12 +181,11 @@ msgstr ""
 "  -W, --warnings=[CATAGÓIR]  taispeáin na rabhaidh atá i gCATAGÓIR\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -189,7 +195,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parsálaí:\n"
 "  -L, --language=TEANGA      socraigh an ríomhtheanga le haschur\n"
@@ -205,7 +210,8 @@ msgstr ""
 "  -k, --token-table          cuir tábla d'ainmneacha teaghrán san áireamh\n"
 "\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -219,7 +225,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Aschur:\n"
 "      --defines[=COMHAD]     gin comhad ceanntásca freisin\n"
@@ -235,19 +240,20 @@ msgstr ""
 "                             (is trialach é an scéimre XML)\n"
 "\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
+#, fuzzy
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Seo iad catagóirí rabhaidh:\n"
 "  `midrule-values'  luachanna meánrialach gan socrú nó gan úsáid\n"
@@ -261,7 +267,7 @@ msgstr ""
 "  `error'           caith le rabhaidh mar earráidí\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -279,30 +285,59 @@ msgstr ""
 "  `all'          cuir gach sonra thuas san áireamh\n"
 "  `none'         díchumasaigh an tuairisc\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Seol tuairiscí ar fhabhtanna chuig <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Le Robert Corbett agus Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -311,26 +346,26 @@ msgstr ""
 "coinníollacha cóipeála.  Níl baránta ar bith ann; go fiú níl baránta ann\n"
 "d'INDÍOLTACHT nó FEILIÚNACHT D'FHEIDHM AR LEITH.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "ní cheadaítear níos mó ná creatlach amháin"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "teanga neamhbhailí `%s'"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "ní cheadaítear níos mó ná teanga amháin"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "oibreann ar iarraidh i ndiaidh `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "oibreann breise `%s'"
@@ -343,7 +378,7 @@ msgstr "folamh"
 msgid "Grammar"
 msgstr "Gramadach"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -356,7 +391,7 @@ msgstr ""
 "// Leathanach baile: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "líne-uimhir thar maoil"
@@ -370,38 +405,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "sainmhíniú nua ar athróg %%define `%s'"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "sainmhíniú roimhe seo"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "luach neamhbhailí ar athróg %%define `%s': `%s'"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "luach neamhbhailí ar athróg Boole %%define `%s'"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "luach neamhbhailí ar athróg %%define `%s': `%s'"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "luach glactha: `%s'"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "aitheantóir ar iarraidh i bhfógra paraiméadair"
@@ -440,10 +474,10 @@ msgstr "glac leis"
 msgid "$default"
 msgstr "$réamhshocraithe"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "staid %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Staid %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -473,74 +507,73 @@ msgid "multiple %s declarations"
 msgstr "níos mó ná fógra amháin %s"
 
 # FRTF caismirt
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 "caismirt idir cineálacha toraidh i bhfeidhm chumaiscthe `%s': <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "fógra roimhe seo"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "rinneadh neamhaird d'ainm dúbailte ar %s"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "tugadh riail i gcomhair %s atá ina theaghrán comharthach"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "caismirt idir cineálacha leis an ghníomh réamhshocraithe: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "riail fholamh i gcomhair teaghrán inlaghdaithe le cineál, ach níl aon ghníomh"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "luach gan úsáid: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "luach gan socrú: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "teaghrán comharthach le haghaidh %%prec gan sainmhíniú: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "ní cheadaítear ach %s amháin an riail"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "Níl %s curtha i bhfeidhm ach ar pharsálaithe GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "Ní foláir uimhir dheimhneach a theacht i ndiaidh %s"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "riail rófhada"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "níl aon riail sa ghramadach ionchurtha"
@@ -596,99 +629,99 @@ msgstr "níl aon abairt díorthaithe ón siombail tosaigh %s"
 msgid "stray '%s'"
 msgstr "`$' ar strae"
 
-#: src/scan-code.l:227
-#, fuzzy, c-format
+#: src/scan-code.l:229
+#, fuzzy
 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:228
-#, fuzzy, c-format
+#: src/scan-code.l:232
+#, fuzzy
 msgid "future versions of Bison will not add the ';'"
 msgstr "ní chuirfear `;' leis i leaganacha de Bison amach anseo"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "déanann sé tagairt do: %c%s ag %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "b'fhéidir: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", %c á chur i bhfolach"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " ag %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "slánuimhir as raon: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "tagairt neamhbhailí: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, 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:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "siombail gan aimsiú i riail ghramadaí: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "tagairt mhíthreorach: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "tagairt dhébhríoch: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "cineál follasach i ngramadach gan chineálacha"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, 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:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "Níl aon chineál fógartha ag $%s de `%s'"
@@ -708,57 +741,67 @@ msgstr "treoir neamhbhailí: %s"
 msgid "invalid identifier: %s"
 msgstr "aitheantóir neamhbhailí: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "carachtar neamhbhailí: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "carachtar neamhbhailí: %s"
+msgstr[1] "carachtar neamhbhailí: %s"
+msgstr[2] "carachtar neamhbhailí: %s"
+msgstr[3] "carachtar neamhbhailí: %s"
+msgstr[4] "carachtar neamhbhailí: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "aitheantóir gan súil leis in ainm idir lúibíní: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "bhíothas ag súil le haitheantóir"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "carachtar neamhbhailí in ainm idir lúibíní: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "carachtar neamhbhailí in ainm idir lúibíní: %s"
+msgstr[1] "carachtar neamhbhailí in ainm idir lúibíní: %s"
+msgstr[2] "carachtar neamhbhailí in ainm idir lúibíní: %s"
+msgstr[3] "carachtar neamhbhailí in ainm idir lúibíní: %s"
+msgstr[4] "carachtar neamhbhailí in ainm idir lúibíní: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "carachtar litriúil folamh"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "carachtair bhreise i gcarachtar litriúil"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "carachtar neamhbhailí nialasach"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "uimhir neamhbhailí tar éis éalúcháin-\\: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "carachtar neamhbhailí tar éis éalúcháin-\\: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "`%s' ar iarraidh ag críoch an chomhaid"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "`%s' ar iarraidh ag críoch na líne"
@@ -793,84 +836,84 @@ msgstr "Ní cheadaíonn Yacc POSIX daiseanna in ainmneacha: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "an iomarca siombailí sa ghramadach ionchurtha (uasmhéid %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "athfhógra %s ar %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "athfhógra %s ar <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "sainmhíniú nua ar shiombail %s"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "athfhógra ar shiombail %s"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "sainmhíniú nua ar an uimhir theaghráin do %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "tá siombail %s in úsáid, ach níl sé ina teaghrán comharthach agus níl aon "
 "riail aici"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "siombail `%s' in úsáid níos mó ná uair amháin mar theaghrán litriúil"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "tá níos mó ná aon teaghrán litriúil amháin ag an tsiombail `%s'"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "athfhógra ar uimhir theaghráin %d do %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "fógra roimhe seo ar %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "siombail tosaigh %s gan sainmhíniú"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "is teaghrán comharthach í an tsiombail tosaigh %s"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "athfhógra ar %%destructor réamhshocraithe clibeáilte"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "athfhógra ar %%destructor réamhshocraithe gan chlib"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "athfhógra ar %%printer réamhshocraithe clibeáilte"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "athfhógra ar %%printer réamhshocraithe gan chlib"
@@ -1088,13 +1131,13 @@ msgstr "%s: tá argóint de dhíth i ndiaidh na rogha '-W %s'\n"
 msgid "memory exhausted"
 msgstr "cuimhne ídithe"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "ní féidir píopa a chruthú"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1166,13 +1209,13 @@ msgstr "fophróiseas %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "fuair fophróiseas %s comhartha marfach %d"
 
+#~ msgid "state %d"
+#~ msgstr "staid %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "`@' ar strae"
 
-#~ msgid "I/O error"
-#~ msgstr "Earráid I/A"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index 29f7198..a8c74fa 100644 (file)
Binary files a/po/hr.gmo and b/po/hr.gmo differ
index 24ef210..5d8e468 100644 (file)
--- a/po/hr.po
+++ b/po/hr.po
@@ -1,15 +1,15 @@
-# Translation of bison to Croatian
-# Copyright (C) 2002, 2012 Free Software Foundation, Inc.
+# Translation of bison to Croatian.
+# Copyright © 2002, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
-#
 # Denis Lackovic <delacko@fly.srk.fer.hr>, 2002.
 # Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-10 17:28+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-21 15:57+0100\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
 "Language: hr\n"
@@ -17,15 +17,19 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
-"X-Generator: Lokalize 1.4\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"X-Generator: Gtranslator 2.91.5\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "upozorenje"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "greška"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "fatalna greška"
 
@@ -110,39 +114,39 @@ msgstr "odbijam pisati preko ulazne datoteke %s"
 msgid "conflicting outputs to file %s"
 msgstr "konfliktni izlazi u datoteku %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Pokušajte „%s --help” za više informacija.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Uporaba: %s [OPCIJA]... DATOTEKA\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
 "canonical LR(1) support is experimental.\n"
 "\n"
 msgstr ""
-"Stvori deterministički LR ili općeniti LR (GLR) analizator koji\n"
+"Napravi deterministički LR ili općeniti LR (GLR) analizator koji\n"
 "koristi LALR(1), IELR(1) ili kanonske LR(1) tablice analize.\n"
 "Podrška za IELR(1) i kanonski LR(1) je eksperimentalna.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
-"Obavezni argumenti dugačkih opcija također su obavezni za kratke opcije.\n"
+"Obavezni argumenti dugačkih opcija također su obavezni za kratke opcije.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Isto vrijedi i za opcionalne argumente.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -153,6 +157,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -160,17 +165,17 @@ msgstr ""
 "  -h, --help                 prikaži ovu pomoć i izađi\n"
 "  -V, --version              ispiši informacije o inačici i izađi\n"
 "      --print-localedir      ispiši direktorij s podacima ovisnima o lokalu\n"
-"      --print-datadir        ispiši direktorij s kosturima i XSLT-om\n"
+"      --print-datadir        ispiši direktorij s predlošcima i XSLT-om\n"
 "  -y, --yacc                 emuliraj POSIX Yacc\n"
 "  -W, --warnings[=KATEGORIJA]  prijavi upozorenja iz KATEGORIJE\n"
+"  -f, --feature[=MOGUĆNOST]  aktiviraj razne mogućnosti\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -180,24 +185,22 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -L, --language=JEZIK             navedi izlazni programski jezik\n"
-"                                   (ovo je eksperimentalna mogućnost)\n"
-"  -S, --skeleton=DATOTEKA          navedi kostur za korištenje\n"
+"  -S, --skeleton=DATOTEKA          navedi predložak za korištenje\n"
 "  -t, --debug                      pripremi analizator za ispravljanje "
 "grešaka\n"
-"      --locations                  omogući podršku za lokaciju\n"
+"      --locations                  omogući podršku za lokacije\n"
 "  -D, --define=IME[=VRIJEDNOST]    slično kao „%define IME \"VRIJEDNOST\"”\n"
-"  -F, --force-define=IME[=VRIJEDNOST]  zaobiđi „%define IME \"VRIJEDNOST\"”\n"
+"  -F, --force-define=IME[=VRIJEDNOST]  promijeni „%define IME \"VRIJEDNOST"
+"\"”\n"
 "  -p, --name-prefix=PREFIKS        dodaj PREFIKS ispred vanjskih simbola\n"
-"                                   zastarjelo zbog „-Dapi.prefix=PREFIKS”  -"
-"l, --no-lines                   ne stvaraj „#line” propise\n"
+"                                   zastarjelo zbog „-Dapi.prefix=PREFIKS”\n"
+"  -l, --no-lines                   ne stvaraj „#line” propise\n"
 "  -k, --token-table                uključi tablicu imena simbola\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -211,48 +214,46 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Izlaz:\n"
-"      --defines[=DATOTEKA]   također stvori datoteku zaglavlja\n"
+"      --defines[=DATOTEKA]   također napravi datoteku zaglavlja\n"
 "  -d                         isto, bez navođenja datoteke (za POSIX Yacc)\n"
-"  -r, --report=STVARI        također stvori pojedinosti o automatima\n"
-"      --report-file=DATOTEKA zapiši izvještaj u DATOTEKU\n"
+"  -r, --report=STVARI        također napravi pojedinosti o automatima\n"
+"      --report-file=DATOTEKA spremi izvještaj u DATOTEKU\n"
 "  -v, --verbose              isto kao „--report=state”\n"
 "  -b, --file-prefix=PREFIKS  navedi PREFIKS za izlazne datoteke\n"
-"  -o, --output=DATOTEKA      ispiši izlaz u DATOTEKU\n"
+"  -o, --output=DATOTEKA      spremi izlaz u DATOTEKU\n"
 "  -g, --graph[=DATOTEKA]     također ispiši graf automata\n"
 "  -x, --xml[=DATOTEKA]       također ispiši XML izvještaj o automatu\n"
 "                             (XML shema je eksperimentalna)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Kategorije upozorenja uključuju:\n"
 "  „midrule-values”  nepostavljene ili nekorištene midrule vrijednosti\n"
 "  „yacc”            nekompatibilnosti za POSIX Yacc\n"
 "  „conflicts-sr”    P/R konflikte (uobičajeno uključeno)\n"
 "  „conflicts-rr”    R/R konflikte (uobičajeno uključeno)\n"
+"  „deprecated”      zastarjele konstrukcije\n"
 "  „other”           sva ostala upozorenja (uobičajeno uključeno)\n"
 "  „all”             sva upozorenja\n"
 "  „no-KATEGORIJA”   isključi upozorenja iz KATEGORIJE\n"
 "  „none”            isključi sva upozorenja\n"
-"  „error”           shvati upozorenja kao greške\n"
-"\n"
+"  „error”           postupaj s upozorenjima kao s greškama\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -270,57 +271,92 @@ msgstr ""
 "  „all”          uključi sve gore navedene informacije\n"
 "  „none”         onemogući izvještaj\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Prijavite greške na <%s>.\n"
+"MOGUĆNOST je popis zarezom odvojenih riječi koje mogu biti:\n"
+"  „caret”        prikaži greške sa znakom „^”\n"
+"  „all”          sve navedeno\n"
+"  „none”         onemogući sve navedeno\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Prijavite greške na <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s početna stranica: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Općenita pomoć za korištenje GNU softvera: <http://www.gnu.org/gethelp/>.\n"
 
-#: src/getargs.c:380
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Prijavite greške prijevoda na <http://translationproject.org/team/hr.html>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Za prikaz cjelokupne dokumentacije pokrenite „info bison”.\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Napisali Robert Corbett i Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
-msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
+msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
-"Ovo je slobodan softver; pogledajte kod za upute o kopiranju.  NEMA\n"
-"jamstava; čak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREĐENOJ SVRSI.\n"
+"Ovo je slobodan softver, pogledajte kod za upute o kopiranju. NEMA "
+"jamstava,\n"
+"čak ni za TRGOVINSKU PRIKLADNOST ili ODGOVARANJE ODREĐENOJ SVRSI.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
-msgstr "višestruke deklaracije kostura nisu ispravne"
+msgstr "višestruke deklaracije predloška nisu ispravne"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: neispravan jezik"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "višestruke deklaracije jezika nisu ispravne"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: nedostaje operand"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "operand viška %s"
@@ -333,7 +369,7 @@ msgstr "prazno"
 msgid "Grammar"
 msgstr "Gramatika"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -346,7 +382,7 @@ msgstr ""
 "// Početna stranica: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "preljev broja redaka"
@@ -360,38 +396,37 @@ msgstr "preljev broja stupaca"
 msgid "rule useless in parser due to conflicts"
 msgstr "pravilo beskorisno u analizatoru zbog konflikata"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define varijabla %s je ponovo definirana"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "prethodna definicija"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: nedefinirana %%define varijabla %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "neispravna vrijednost %%define logičke varijable %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "neispravna vrijednost %%define varijable %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "prihvaćena vrijednost: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "nedostaje identifikator u deklaraciji paremetra"
@@ -429,10 +464,10 @@ msgstr "prihvati"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "stanje %d"
+msgid "State %d"
+msgstr "Stanje %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -461,72 +496,71 @@ msgstr "Pravila su beskorisna u analizatoru zbog konflikata"
 msgid "multiple %s declarations"
 msgstr "višestruke %s deklaracije"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "sukob rezultantne vrste u funkciji spajanja %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "prethodna deklaracija"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "dvostruko ime simbola za %s je zanemareno"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "navedeno je pravilo za %s, a to je simbol"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "sukob vrsta u zadanoj radnji: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "prazno pravilo za nezavršni znak i nema radnje"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "nekorištena vrijednost: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nepostavljena vrijednost: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "simbol za %%prec nije definiran: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "samo je jedan %s dozvoljen po pravilu"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s utječe samo na GLR analizatore"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "nakon %s mora slijediti pozitivan broj"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "pravilo je predugačko"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "nema pravila u ulaznoj gramatici"
@@ -574,102 +608,100 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "početni simbol %s ne daje niti jednu rečenicu"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "stray „$”"
+msgstr "zalutali „%s”"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr "može biti potrebna „;” na kraju koda radnje"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "buduće inačice Bisona neće dodavati „;”"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "odnosi se na: %c%s na %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "vjerojatno znači: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", skrivajući %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " na %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "cijeli broj izvan granica: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "neispravna referenca: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
-msgstr "simbol nije nađen u proizvodnji prije $%d: %.*s"
+msgstr "simbol nije pronađen u proizvodnji prije $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
-msgstr "simbol nije nađen u proizvodnji: %.*s"
+msgstr "simbol nije pronađen u proizvodnji: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "krivo navodeća referenca: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "višeznačna referenca: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "navedena eksplicitna vrsta u neunesenoj gramatici"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ od %s nema deklariranu vrstu"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s od %s nema deklariranu vrstu"
@@ -677,7 +709,7 @@ msgstr "$%s od %s nema deklariranu vrstu"
 #: src/scan-gram.l:149
 #, c-format
 msgid "stray ',' treated as white space"
-msgstr "stray „,” shvaćen kao prazan prostor"
+msgstr "postupam sa zalutalim „,” kao praznim prostorom"
 
 #: src/scan-gram.l:222
 #, c-format
@@ -689,57 +721,61 @@ msgstr "neispravan propis: %s"
 msgid "invalid identifier: %s"
 msgstr "neispravan identifikator: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "neispravan znak: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "neispravan znak"
+msgstr[1] "neispravni znakovi"
+msgstr[2] "neispravni znakovi"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "neočekivani identifikator u zagrađenom imenu: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "očekujem identifikator"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "neispravan znak u zagrađenom imenu: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "neispravan znak u zagrađenom imenu"
+msgstr[1] "neispravni znakovi u zagrađenom imenu"
+msgstr[2] "neispravni znakovi u zagrađenom imenu"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
-msgstr "prazan znak slova"
+msgstr "prazna znakovna konstanta"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
-msgstr "višak znakova u znaku slova"
+msgstr "višak znakova u znakovnoj konstanti"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "neispravan prazan znak"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "neispravan broj nakon \\-izlaza: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "neispravan znak nakon \\-izlaza: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "nedostaje %s na kraju datoteke"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "nedostaje %s na kraju retka"
@@ -747,17 +783,17 @@ msgstr "nedostaje %s na kraju retka"
 #: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
-msgstr "nezatvoren %s propis u kosturu"
+msgstr "nezatvoren %s propis u predlošku"
 
 #: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
-msgstr "premalo argumenata %s propisa u kosturu"
+msgstr "premalo argumenata %s propisa u predlošku"
 
 #: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
-msgstr "premalo argumenata %s propisa u kosturu"
+msgstr "premalo argumenata %s propisa u predlošku"
 
 #: src/symlist.c:211
 #, c-format
@@ -772,84 +808,84 @@ msgstr "POSIX Yacc zabranjuje povlake u imenima simbola: %s"
 #: src/symtab.c:91
 #, c-format
 msgid "too many symbols in input grammar (limit is %d)"
-msgstr "previše simbola u ulaznoj gramatici (granica je %d)"
+msgstr "previše simbola u ulaznoj gramatici (ograničenje je %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "ponovna deklaracija %s za %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "ponovna deklaracija %s za <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbol %s ponovo definiran"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "simbol %s ponovo deklariran"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "ponovo definiram broj korisničkog simbola od %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr "simbol %s je korišten, ali nije definiran kao simbol i nema pravila"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
-msgstr "simbol %s je korišten više puta kao znakovni niz"
+msgstr "simbol %s je korišten više puta kao konstantan niz"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
-msgstr "simbolu %s je dano više od jednog znakovnog niza"
+msgstr "simbolu %s je dano više od jednog konstantnog niza"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "ponovna deklaracija broja korisničkog simbola %d za %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "prethodna deklaracija za %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "početni simbol %s nije definiran"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "početni simbol %s je simbol"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "ponovna deklaracija za zadani označeni %%destructor"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "ponovna deklaracija za zadani neoznačeni %%destructor"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "ponovna deklaracija za zadani označeni %%printer"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "ponovna deklaracija za zadani neoznačeni %%printer"
@@ -1015,7 +1051,7 @@ msgstr "Nepoznata greška sustava"
 #: lib/getopt.c:547 lib/getopt.c:576
 #, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: opcija „%s” je višeznačna; mogućnosti:"
+msgstr "%s: opcija „%s” je višeznačna, mogućnosti:"
 
 #: lib/getopt.c:624 lib/getopt.c:628
 #, c-format
@@ -1071,13 +1107,13 @@ msgstr "%s: opcija „-W %s” zahtijeva argument\n"
 msgid "memory exhausted"
 msgstr "memorija iscrpljena"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "ne mogu napraviti cjevovod"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1137,7 +1173,7 @@ msgstr "_open_osfhandle nije uspio"
 #: lib/w32spawn.h:84
 #, c-format
 msgid "cannot restore fd %d: dup2 failed"
-msgstr "ne mogu vratiti fd %d: dup2 nije uspio"
+msgstr "ne mogu obnoviti fd %d: dup2 nije uspio"
 
 #: lib/wait-process.c:223 lib/wait-process.c:255 lib/wait-process.c:317
 #, c-format
@@ -1147,14 +1183,14 @@ msgstr "%s potproces"
 #: lib/wait-process.c:274 lib/wait-process.c:346
 #, c-format
 msgid "%s subprocess got fatal signal %d"
-msgstr "%s potproces je dobio fatalni signal %d"
+msgstr "%s potproces je primio fatalni signal %d"
+
+#~ msgid "state %d"
+#~ msgstr "stanje %d"
 
 #~ msgid "stray '@'"
 #~ msgstr "stray „@”"
 
-#~ msgid "I/O error"
-#~ msgstr "U/I greška"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
@@ -1192,8 +1228,9 @@ msgstr "%s potproces je dobio fatalni signal %d"
 
 #~ msgid "%d shift/reduce conflict"
 #~ msgid_plural "%d shift/reduce conflicts"
-#~ msgstr[0] "%d pomakni/reduciraj konflikat"
-#~ msgstr[1] "%d pomakni/reduciraj konflikata"
+#~ msgstr[0] "%d pomakni/reduciraj konflikt"
+#~ msgstr[1] "%d pomakni/reduciraj konflikta"
+#~ msgstr[2] "%d pomakni/reduciraj konflikata"
 
 #~ msgid "and"
 #~ msgstr "i"
@@ -1424,11 +1461,13 @@ msgstr "%s potproces je dobio fatalni signal %d"
 #~ msgid_plural "%d rules never reduced\n"
 #~ msgstr[0] "%d pravilo nije nikad reducirano\n"
 #~ msgstr[1] "%d pravila nisu nikad reducirana\n"
+#~ msgstr[2] "%d pravila nije nikad reducirano\n"
 
 #~ msgid "%d useless nonterminal"
 #~ msgid_plural "%d useless nonterminals"
-#~ msgstr[0] "%d beskorisan nezavršni znak"
-#~ msgstr[1] "%d beskorisnih nezavršnih znakova"
+#~ msgstr[0] "%d beskoristan nezavršni znak"
+#~ msgstr[1] "%d beskorisna nezavršna znaka"
+#~ msgstr[2] "%d beskorisnih nezavršnih znakova"
 
 #~ msgid " and "
 #~ msgstr " i"
@@ -1436,7 +1475,8 @@ msgstr "%s potproces je dobio fatalni signal %d"
 #~ msgid "%d useless rule"
 #~ msgid_plural "%d useless rules"
 #~ msgstr[0] "%d beskorisno pravilo"
-#~ msgstr[1] "%d beskorisnih pravila"
+#~ msgstr[1] "%d beskorisna pravila"
+#~ msgstr[2] "%d beskorisnih pravila"
 
 #~ msgid "%s: illegal option -- %c\n"
 #~ msgstr "%s: nedozvoljena opcija -- %c\n"
index 6dc30c4..e224934 100644 (file)
Binary files a/po/id.gmo and b/po/id.gmo differ
index 020ef56..fe89045 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,12 +20,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "peringatan"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Kesalahan I/O"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "kesalahan fatal"
 
@@ -107,17 +112,17 @@ msgstr "menolak untuk overwrite berkas masukan %s"
 msgid "conflicting outputs to file %s"
 msgstr "output konflik ke file %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Coba `%s --help' untuk informasi lebih lanjut.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Penggunaan: %s [OPTION]... FILE\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -125,16 +130,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr "Argumen wajib untuk opsi panjang juga wajib untuk opsi pendek juga.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Itu juga benar untuk opsional argumen.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
+#, fuzzy
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -145,6 +151,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -158,12 +165,11 @@ msgstr ""
 "  -W, --warnings=[KATEGORI]  laporkan peringatan kegagalan dalam KATEGORI\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -173,7 +179,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -L, --language=BAHASA      spesifikasikan bahasa keluaran pemrograman\n"
@@ -186,7 +191,8 @@ msgstr ""
 "  -n, --no-parser            hasilkan hanya tabel\n"
 "  -k, --token-table          sertakan tabel nama token\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -200,7 +206,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Output:\n"
 "      --defines              juga hasilkan file header\n"
@@ -213,7 +218,7 @@ msgstr ""
 "  -o, --output=FILE          simpan output ke FILE\n"
 "  -g, --graph                juga hasilkan deskripsi VCG automaton\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 #, fuzzy
 msgid ""
 "Warning categories include:\n"
@@ -221,12 +226,12 @@ msgid ""
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Kategori peringatan termasuk:\n"
 "  `midrule-values'  unset atau tidak menggunakan aturan midrule\n"
@@ -237,7 +242,7 @@ msgstr ""
 "  `error'           perlakukan peringatan sebagai errors\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -255,30 +260,59 @@ msgstr ""
 "  `all'          sertakan semua informasi di atas\n"
 "  `none'         tiadakan laporan\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Laporkan bugs ke <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Written by Robert Corbett and Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -286,26 +320,26 @@ msgstr ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "deklarasi kerangka ganda tidak valid"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "bahasa tidak valid: `%s'"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "deklarasi bahasa ganda tidak valid"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "operand hilang setelah `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "operand ekstra `%s'"
@@ -318,7 +352,7 @@ msgstr "kosong"
 msgid "Grammar"
 msgstr "Grammar"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -327,7 +361,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "overflow nomor baris"
@@ -341,38 +375,37 @@ msgstr "overflow jumlah kolom"
 msgid "rule useless in parser due to conflicts"
 msgstr "aturan tidak berguna dalam parser karena konflik"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s `%s' didefinisikan ulang"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "definisi sebelumnya"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "nilai tidak valid untuk %%define variable `%s': `%s'"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "nilai tidak valid untuk %%define Boolean variable `%s'"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "nilai tidak valid untuk %%define variable `%s': `%s'"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identifier tidak ada dalam deklarasi parameter"
@@ -410,10 +443,10 @@ msgstr "terima"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "state %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "State %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -442,72 +475,71 @@ msgstr "aturan tidak berguna dalam parser karena konflik"
 msgid "multiple %s declarations"
 msgstr "deklarasi ganda %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "tipe hasil bentrok pada fungsi merge '%s': <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "deklarasi sebelumnya"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "aturan diberikan untuk %s, yang merupakan sebuah token"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "bentrokan tipe pada aksi baku: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "aturan kosong untuk nonterminal typed, dan tidak ada aksi"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nilai tidak diset: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "tanda untuk %%prec belum didefinisikan: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "hanya satu %s yang dibolehkan per aturan"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s hanya mempengaruhi parser GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s harus diikuti angka positif"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "aturan terlalu panjang"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "tidak ada aturan dalam tata bahasa masukan"
@@ -555,98 +587,96 @@ msgstr "simbol awal %s tidak melahirkan kalimat"
 msgid "stray '%s'"
 msgstr "kelebihan `$'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer ke luar batas: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "direktif tidak valid: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumen %s ambigu untuk %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "tipe eksplisit diberikan dalam tata bahasa yang tidak diketikan"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ dari `%s' tidak memiliki tipe yang terdeklarasi"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d dari `%s' tidak memiliki tipe yang terdeklarasi"
@@ -666,57 +696,59 @@ msgstr "direktif tidak valid: %s"
 msgid "invalid identifier: %s"
 msgstr "direktif tidak valid: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "karakter tidak valid: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "karakter tidak valid: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "karakter tidak valid setelah \\-escape: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "karakter tidak valid setelah \\-escape: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "karakter null tidak valid"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "nomor tidak valid setelah \\-escape: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "karakter tidak valid setelah \\-escape: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "kehilangan `%s' di akhir file"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "hilang `%s' di akhir baris"
@@ -751,84 +783,84 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "terlalu banyak simbol dalam grammar input (batasnya adalah %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s redeklarasi untuk %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s redeklarasi untuk <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbol %s didefinisikan ulang"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "simbol %s dideklarasikan ulang"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "mendefinisikan ulang nomor token user %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "simbol %s digunakan, namun tidak didefinisikan sebagai token dan tidak "
 "memiliki aturan"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simbol `%s' digunakan lebih dari satu kali sebagai string literal"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "simbol `%s' diberikan lebih dari satu string literal"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s redeklarasi untuk %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "deklarasi sebelumnya"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "simbol awal %s tidak didefinisikan"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "simbol awal %s adalah sebuah token"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "deklarasi ulang untuk tagged %%destructor baku"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "deklarasi ulang untuk tagless %%destructor baku"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "deklarasi ulang untuk tagged %%printer baku"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "deklarasi ulang untuk taggless %%printer baku"
@@ -1046,13 +1078,13 @@ msgstr "%s: pilihan '%s' membutuhkan sebuah argumen\n"
 msgid "memory exhausted"
 msgstr "memori habis"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "tidak dapat menutup file"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1124,13 +1156,13 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#~ msgid "state %d"
+#~ msgstr "state %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "kelebihan `@'"
 
-#~ msgid "I/O error"
-#~ msgstr "Kesalahan I/O"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index f07486b..ef9e6af 100644 (file)
Binary files a/po/it.gmo and b/po/it.gmo differ
index ef35fd9..353492f 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,12 +16,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "attenzione"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "errore di input/output"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "errore fatale: "
@@ -105,17 +110,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "conflitto nell'output sul file %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Provare `%s --help' per ulteriori informazioni.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Utilizzo: %s [OPZIONE]... FILE\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -123,16 +128,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -143,15 +148,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -161,7 +166,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -S, --skeleton=FILE        specifica lo scheletro da usare\n"
@@ -172,7 +176,7 @@ msgstr ""
 "  -n, --no-parser            genera le sole tabelle\n"
 "  -k, --token-table          include una tabella di nomi dei token\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -187,7 +191,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Output:\n"
 "  -d, --defines              produce anche uno header\n"
@@ -197,22 +200,22 @@ msgstr ""
 "  -o, --output=FILE          lascia l'output in FILE\n"
 "  -g, --graph                produce anche una descrizione VCG dell'automa\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -232,28 +235,57 @@ msgstr ""
 "  `all'          include tutte queste informazioni\n"
 "  `none'         disabilita la produzione del rapporto\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr "Segnalare eventuali bug a <bug-bison@gnu.org>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Scritto da Robert Corbett e Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -262,27 +294,27 @@ msgstr ""
 "sottoposta la copia. NON c'è ALCUNA garanzia, neanche di\n"
 "COMMERCIABILITA` o di ADEGUATEZZA AD UN PARTICOLARE SCOPO.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "dichiarazioni multiple per %s"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "valore non valido: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "dichiarazioni multiple per %s"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "manca un operando dopo `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "operando non richiesto `%s'"
@@ -295,7 +327,7 @@ msgstr "vuoto"
 msgid "Grammar"
 msgstr "Grammatica"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -304,7 +336,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -319,38 +351,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regola mai ridotta a causa dei conflitti"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbolo %s ridefinito"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valore non valido: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "manca un identificatore nella dichirazione di un parametro"
@@ -388,10 +419,10 @@ msgstr "accetta"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "stato %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Stato %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -421,73 +452,73 @@ msgstr "regola mai ridotta a causa dei conflitti"
 msgid "multiple %s declarations"
 msgstr "dichiarazioni multiple per %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 "conflitto nei tipi del risultato della funzione di merge %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "prima dichiarazione"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "fornita una regola per il token %s"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "conflitto di tipo nell'azione di default: <%s> e <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "regola vuota e nessuna azione per un nonterminale con tipo"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "valore non valido: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "solo un %s è permesso in una regola"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s considerato solo nei parser GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s deve essere seguito da un intero positivo"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "nessuna regola nella grammatica di input"
@@ -541,97 +572,95 @@ msgstr "dal simbolo iniziale %s non deriva alcuna frase"
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "intero fuori dai limiti: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "direttiva non valida: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argomento ambiguo %s per %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "Manca una dichiarazione di tipo per $$ di `%s'"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "Manca una dichiarazione di tipo per $%d di `%s'"
@@ -651,57 +680,61 @@ msgstr "direttiva non valida: %s"
 msgid "invalid identifier: %s"
 msgstr "direttiva non valida: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "carattere non valido: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "carattere non valido: %s"
+msgstr[1] "carattere non valido: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "carattere non valido: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "carattere non valido: %s"
+msgstr[1] "carattere non valido: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "carattere nullo non valido"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "carattere nullo non valido: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "carattere non valido: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "manca un `%s' alla fine del file"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "manca un `%s' alla fine della linea"
@@ -736,82 +769,82 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "troppi simboli nella grammatica (il limite è %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "dichiarazione due volte di %s per %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "dichiarazione due volte di %s per %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbolo %s ridefinito"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "simbolo %s ridefinito"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "numero di token definito dall'utente specificato due volte per %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr "usato il simbolo %s, ma non è un token e non ha regole"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simbolo `%s' usato più di una volta in una stringa letterale"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "il simbolo `%s' dà pi&grave; di una stringa letterale"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "dichiarazione due volte di %s per %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "dichiarazione due volte di %s per %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "simbolo iniziale %s non definito"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "specificato il token %s come simbolo iniziale"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1029,13 +1062,13 @@ msgstr "%s: l'opzione `%s' richiede un argomento\n"
 msgid "memory exhausted"
 msgstr "memoria esaurita"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "impossibile chiudere il file `%s'"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1107,8 +1140,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "errore di input/output"
+#~ msgid "state %d"
+#~ msgstr "stato %d"
 
 #~ msgid "warning: "
 #~ msgstr "attenzione: "
index d49b7d8..88cbb30 100644 (file)
Binary files a/po/ja.gmo and b/po/ja.gmo differ
index e6a8ff4..666d8d8 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,12 +18,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "警告"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "エラー"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "致命的エラー"
 
@@ -104,17 +109,17 @@ msgstr " ファイルを上書きしようとした際, 再取得に失敗しま
 msgid "conflicting outputs to file %s"
 msgstr "リモートファイルへの参照"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "`%s --help' で詳細情報を参照してください\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "使い方: %s [オプション]... ファイル\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -122,17 +127,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 #, fuzzy
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr "長いオプションに必須の引数は短いオプションにも必須です.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "オプションの引数についても同様です。\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -143,15 +148,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -161,7 +166,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "構文解析器:\n"
 "  -S, --skeleton=FILE        利用するスケルトンを指定する\n"
@@ -172,7 +176,7 @@ msgstr ""
 "  -n, --no-parser            テーブルのみを生成する\n"
 "  -k, --token-table          トークン名のテーブルを含める\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -186,25 +190,24 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -215,32 +218,63 @@ msgid ""
 "  `none'         disable the report\n"
 msgstr ""
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "バグを発見したら <%s> 宛に報告して下さい。\n"
 "翻訳に関するバグは<translation-team-ja@lists.sourceforge.net>に報告してくださ"
 "い。\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, fuzzy, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s のホームページ: <%s>\n"
+
+#: src/getargs.c:397
+#, fuzzy
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"GNU ソフトウェアを使用する際の一般的なヘルプ: <http://www.gnu.org/gethelp/>\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Robert Corbett と Richard Stallman によって書かれました\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -251,27 +285,27 @@ msgstr ""
 "これはフリーソフトウェアです -- 複製についての条件はソースを見ましょう。\n"
 "一切の保証はありません -- 商業性や目的適合性についての保証すらありません。\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "%s が複数個宣言されました"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: 無効な言語"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "%s が複数個宣言されました"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: オペランドがありません"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "余分なオペランド %s"
@@ -284,7 +318,7 @@ msgstr "空"
 msgid "Grammar"
 msgstr "文法"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -293,7 +327,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "行番号がオーバーフローしました"
@@ -307,38 +341,38 @@ msgstr "列番号がオーバーフローしました"
 msgid "rule useless in parser due to conflicts"
 msgstr "衝突のせいでパーサ内の規則が使用できません"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "変数インデックスが不正です"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
+#, fuzzy
 msgid "previous definition"
 msgstr "前の定義がここにありました"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "警告: 未定義の変数 `%.*s'"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "アイコン型として不適切な値 '%s'"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "無効な値\n"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, fuzzy, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "マクロ仮引数リストに ')' がありません"
@@ -378,10 +412,10 @@ msgstr "許可する(_A)"
 msgid "$default"
 msgstr "デフォルト"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "状態 %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "状態 %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -410,73 +444,73 @@ msgstr "衝突のせいでパーサ内の規則が使用できません"
 msgid "multiple %s declarations"
 msgstr "%s が複数個宣言されました"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "スコープの宣言"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "%s の重複するシンボル名を無視します"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, fuzzy, c-format
 msgid "rule given for %s, which is a token"
 msgstr "%s に規則が与えられ、それはトークンとなります"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, fuzzy, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "初期状態の動作では型 (`%s' `%s') が衝突します"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "空の型付き非終端アイテム用規則であり、動作が起りません"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "無効な値\n"
 
-#: src/reader.c:326
+#: src/reader.c:330
 #, fuzzy
 msgid "unset value: $$"
 msgstr "無効な値\n"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, fuzzy, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "トークン %s の値は適切な UTF-8 文字列ではありません"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, fuzzy, c-format
 msgid "only one %s allowed per rule"
 msgstr "一つの条件部につき一つしか `else' を使えません"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, fuzzy, c-format
 msgid "%s affects only GLR parsers"
 msgstr "コード変換はテキスト型添付ファイルにのみ有効。"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, fuzzy, c-format
 msgid "%s must be followed by positive number"
 msgstr "フィールド名 `%.*s' の後はコロンでなければなりません"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, fuzzy, c-format
 msgid "rule is too long"
 msgstr "述部が長すぎます"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "入力した文法に規則が定義されていません"
@@ -528,98 +562,96 @@ msgstr "開始シンボル %s はどの文にも由来しません"
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "将来のバージョンの Bison は ';' を追加しません"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, fuzzy, c-format
 msgid "refers to: %c%s at %s"
 msgstr "'%s' はディレクトリを指しています"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, fuzzy, c-format
 msgid "possibly meant: %c"
 msgstr "多分、カウントが間違っています。"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, fuzzy, c-format
 msgid ", hiding %c"
 msgstr "入/退出メッセージの制限"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, fuzzy, c-format
 msgid " at %s"
 msgstr "%s (%s) at "
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整数が値の範囲外です: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "無効な参照: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "'%c' の後に文法エラーがあります。整数、文字、'_', '[','$' が来るはずです。"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, fuzzy, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "%s が gflares_list 中に見付かりません"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "高度の単位"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "高度の単位"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$%d 個の `%s' が宣言された型を持っていません"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "`%s' の $$ に宣言のない型があります"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "`%s' の $$ に宣言のない型があります"
@@ -639,57 +671,59 @@ msgstr "無効な #%s 指示です"
 msgid "invalid identifier: %s"
 msgstr "不正なURN %1: 不適切な名前空間識別子"
 
-#: src/scan-gram.l:294
-#, fuzzy, c-format
-msgid "invalid character: %s"
-msgstr "無効な文字: `%s'"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "無効な文字: `%s'"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, fuzzy, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "識別子 \"%s\" は C++ の特別な演算子名です"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, fuzzy, c-format
 msgid "an identifier expected"
 msgstr "識別子が期待されています."
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "無効なユーザ名 \"%s\" が %s:%d にあります。中断します"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "無効なユーザ名 \"%s\" が %s:%d にあります。中断します"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "空の文字定数"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, fuzzy, c-format
 msgid "extra characters in character literal"
 msgstr "リテラル中で null 文字が確保されました"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "無効な null 文字"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "-q= の後に番号が期待されますが、%s が与えられました\n"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "エスケープキャラクタを決定できません"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "ファイル末尾に %s がありません"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "行末に %s がありません"
@@ -724,84 +758,84 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "シンボルが多すぎます (トークン + 非終端アイテム) -- 最大 %d"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, fuzzy, c-format
 msgid "%s redeclaration for %s"
 msgstr "\"%s\" のラベル:"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "\"%s\" のラベル:"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "シンボル %s が再定義されました"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "シンボル %s が再宣言されました"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, fuzzy, c-format
 msgid "redefining user token number of %s"
 msgstr "%s に先行した再定義です"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "シンボル %s が使われていますが、トークンとして定義されておらず、規則を持ちま"
 "せん"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "シンボル `%s' はリテラル文字列として複数回使われました"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "シンボル `%s' は複数のリテラル文字列が与えられました"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s の型が再定義されました"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "%s に対する以前の宣言"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "開始シンボル %s は定義されていません"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "開始シンボル %s はトークンです"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1028,13 +1062,13 @@ msgstr "%s: オプション '-W %s' には引数が必要です\n"
 msgid "memory exhausted"
 msgstr "メモリを使い果たしました"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "パイプを作成できません"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1106,9 +1140,8 @@ msgstr "%s 子プロセス"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s 子プロセスが致命的なシグナル %d を受信しました"
 
-#, fuzzy
-#~ msgid "I/O error"
-#~ msgstr "エラー"
+#~ msgid "state %d"
+#~ msgstr "状態 %d"
 
 #, fuzzy
 #~ msgid "%s `%s' redefined"
@@ -1690,17 +1723,9 @@ msgstr "%s 子プロセスが致命的なシグナル %d を受信しました"
 #~ msgid "Report %s bugs to: %s\n"
 #~ msgstr "%s のバグは <%s> に報告してください。\n"
 
-#~ msgid "%s home page: <%s>\n"
-#~ msgstr "%s のホームページ: <%s>\n"
-
 #~ msgid "%s home page: <http://www.gnu.org/software/%s/>\n"
 #~ msgstr "%s のホームページ: <http://www.gnu.org/software/%s/>\n"
 
-#~ msgid "General help using GNU software: <http://www.gnu.org/gethelp/>\n"
-#~ msgstr ""
-#~ "GNU ソフトウェアを使用する際の一般的なヘルプ: <http://www.gnu.org/gethelp/"
-#~ ">\n"
-
 #~ msgid "stdin"
 #~ msgstr "標準入力"
 
index a8bda1e..5f965e9 100644 (file)
Binary files a/po/ms.gmo and b/po/ms.gmo differ
index b73fb89..46855dc 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,12 +18,17 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: KBabel 0.9.5\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "amaran"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Ralat I/O"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "ralat maut"
 
@@ -105,17 +110,17 @@ msgstr "enggan untuk menulisganti fail masukan %s"
 msgid "conflicting outputs to file %s"
 msgstr "keluaran berkonflik kepada fail %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Cuba `%s --help' untuk lebih maklumat.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Penggunaan: %s [PILIHAN]... FAIL\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -123,17 +128,17 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Hujah wajib kepada pilihan panjang adalah wajib untuk pilihan pendek juga.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Perkara yang sama bagi hujah pilihan.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 #, fuzzy
 msgid ""
 "\n"
@@ -145,6 +150,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -159,12 +165,11 @@ msgstr ""
 "  -W, --warnings=[KATEGORI]  lapor amaran yang berada dalam KATEGORI\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -174,7 +179,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Penghurai:\n"
 "  -L, --language=BAHASA      nyatakan bahasa pengaturcaraan keluaran\n"
@@ -187,7 +191,8 @@ msgstr ""
 "  -k, --token-table          sertakan jadual nama token\n"
 "\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -201,7 +206,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Keluaran:\n"
 "      --defines[=FAIL]       juga hasilkan fail pengepala\n"
@@ -217,7 +221,7 @@ msgstr ""
 "                             (skema XML adalah masih tahap kajian)\n"
 "\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 #, fuzzy
 msgid ""
 "Warning categories include:\n"
@@ -225,12 +229,12 @@ msgid ""
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Kategori amaran termasuk:\n"
 "  `midrule-values'  nilai hukumtengah nyahtetap atau tidak digunakan\n"
@@ -241,7 +245,7 @@ msgstr ""
 "  `error'           jadikan amaran sebagai ralat\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -259,30 +263,59 @@ msgstr ""
 "  `all'          masukkan semua maklumat diatas\n"
 "  `none'         matikan laporan\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Lapor pepijat ke <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Ditulis oleh Robert Corbett dan Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Hakcipta (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -291,26 +324,26 @@ msgstr ""
 "jaminan disediakan; tidak juga untuk KEBOLEHDAGANGAN atau KEUPAYAAN UNTUK "
 "SESUATU TUJUAN KHUSUS.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "pelbagai rangka pengisytiharan tidak sah"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "bahasa `%s' tidak sah"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "pelbagai pengisytiharan bahasa adalah tidak sah"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "operan hilang selepas `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "operan tambahan `%s'"
@@ -323,7 +356,7 @@ msgstr "kosong"
 msgid "Grammar"
 msgstr "Tatabahasa"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -332,7 +365,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "nombor baris melimpah"
@@ -346,38 +379,38 @@ msgstr "nombor lajur melimpah"
 msgid "rule useless in parser due to conflicts"
 msgstr "hukum tidak digunakan kerana konflik"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbol %s ditakrif semula"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
+#, fuzzy
 msgid "previous definition"
 msgstr "pengisytiharan terdahulu"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "pengecam hilang dalam parameter pengisytiharan"
@@ -415,10 +448,10 @@ msgstr "terima"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "keadaan %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Keadaan %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -447,72 +480,71 @@ msgstr "Hukum tidak digunakan dalam penghurai kerana konflik"
 msgid "multiple %s declarations"
 msgstr "pelbagai pengisytiharan %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "jenis hasil bertelingkah pada fungsi gabung %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "pengisytiharan terdahulu"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "hukum diberi untuk %s, dimana ia adalah token"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "pertelingkahan jenis pada tindakan default: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "hukum kosong untuk bukan terminal ditaip, dan tiada tindakan"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "nilai tidak digunakan: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nyahtetap nilai: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "hanya satu %s dibenarkan setiap hukum"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s hanya berkesan kepada parser GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s mesti diikuti dengan nombor positif"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "peraturan terlalu panjang"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "tiada hukum dalam masukan tatabahasa"
@@ -560,99 +592,97 @@ msgstr "simbol permulaan %s tidak menghasilkan sebarang perkataan"
 msgid "stray '%s'"
 msgstr "`$' lilau"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer diluar julat: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "arahan tidak sah: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "hujah kabur %s untuk %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "Jenis tidak tersirat diberikan dalam tatabahasa tanpa jenis"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ bagi `%s' tiada jenis dinyatakan"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d bagi `%s' tiada jenis dinyatakan"
@@ -672,57 +702,59 @@ msgstr "arahan tidak sah: %s"
 msgid "invalid identifier: %s"
 msgstr "arahan tidak sah: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "aksara tidak sah: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "aksara tidak sah: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "aksara tidak sah: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "aksara tidak sah: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "aksara null tidak sah"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "aksara null tidak sah: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "aksara tidak sah: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "`%s' hilang pada penghujung fail"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "`%s' hilang pada penghujung baris"
@@ -757,84 +789,84 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "terlalu banyak simbol dalam tatabahasa masukan (had adalah %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s pengisytiharan semula untuk %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s pengisytiharan semula untuk <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbol %s ditakrif semula"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "simbol %s ditakrif semula"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "mentakrif semula nombor token pengguna %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "simbol %s digunakan, tetapi tidak ditakrifkan sebagai token atau mempunyai "
 "hukum"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simbol `%s' digunakan lebih dari sekali sebagai rentetan perkataan"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "simbol `%s' diberikan lebih daripada satu rentetan perkataan"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s pengisytiharan semula untuk %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "pengisytiharan terdahulu"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "simbol permulaan %s tidak ditakrifkan"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "simbol permulaan %s adalah token"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "pengisytiharan semula untuk %%destructor ditag default"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "pengisytiharan semula untuk %%destructor tanpa tag default"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "pengisytiharan semula untuk %%printer ditag default"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "pengisytiharan semula untuk %%printer tanpa tag default"
@@ -1052,13 +1084,13 @@ msgstr "%s: pilihan `%s' memerlukan hujah\n"
 msgid "memory exhausted"
 msgstr "kehabisan memori"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "tidak dapat menutup fail"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1130,13 +1162,13 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#~ msgid "state %d"
+#~ msgstr "keadaan %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "`@' lilau"
 
-#~ msgid "I/O error"
-#~ msgstr "Ralat I/O"
-
 #~ msgid ""
 #~ "Generate LALR(1) and GLR parsers.\n"
 #~ "\n"
index 3e1eb8a..0e91b8f 100644 (file)
Binary files a/po/nb.gmo and b/po/nb.gmo differ
index 6bb0026..ee5767e 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -32,12 +32,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "advarsel"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "I/O-feil"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "alvorlig feil: "
@@ -121,17 +126,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "motstridende output til fila %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Prøv «%s --help» for mer informasjon.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Bruksmåte: %s [VALG]... FIL\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -139,16 +144,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -159,15 +164,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -177,7 +182,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -S, --skeleton=FIL         angi skjelettet som skal brukes\n"
@@ -189,7 +193,7 @@ msgstr ""
 "  -n, --no-parser            bare generer tabellene\n"
 "  -k, --token-table          legg ved en tabell med tokennavnene\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -204,7 +208,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Output:\n"
 "  -d, --defines              også lag en headerfil\n"
@@ -214,22 +217,22 @@ msgstr ""
 "  -o, --output=FIL           send output til FIL\n"
 "  -g, --graph                også lag en VCG-beskrivelse av automaten\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -248,28 +251,57 @@ msgstr ""
 "  «all»          inkludere alt av den overstående informasjonen\n"
 "  «none»         slå av all rapportering\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr "Rapporter feil til <bug-bison@gnu.org>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Skrevet av Robert Corbett og Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -278,27 +310,27 @@ msgstr ""
 "Det er INGEN garanti; ikke en gang for SALGBARHET eller SKIKKETHET\n"
 "FOR ET BESTEMT FORMÅL.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "flere deklarasjoner av %s"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "ugyldig verdi: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "flere deklarasjoner av %s"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "mangler operand etter «%s»"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "ekstra operand «%s»"
@@ -311,7 +343,7 @@ msgstr "tom"
 msgid "Grammar"
 msgstr "Grammatikk"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -320,7 +352,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -335,38 +367,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regel ble aldri redusert på grunn av konflikter"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "symbolet %s ble redefinert"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "ugyldig verdi: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "mangler identifikator i parameterdeklarasjonen"
@@ -406,10 +437,10 @@ msgstr "aksept"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "tilstand %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Tilstand %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -442,74 +473,74 @@ msgstr "flere deklarasjoner av %s"
 # Denne oversettelsen er en smule ullen.  Må sjekke kildekoden og prøve
 # et eksempel for å vite hva denne strengen bør oversettes med.  Dersom
 # andre har gode hint, så for all del, syng ut!  [TE, 2004-05-31]
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "kollisjon på resultattype for flettefunksjon %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "første deklarasjon"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regel er angitt for %s, som er et token"
 
 # Denne oversettelsen er også en smule ullen.
 # [TE, 2004-05-31]
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "kollisjon på type for standard handling: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "tom regel for typet ikke-terminal og ingen handling"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "ugyldig verdi: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "bare en %s pr regel er tillatt"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s påvirker bare GLR-parsere"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s må bli fulgt av et positivt tall"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "ingen regler i den angitte grammatikken"
@@ -563,97 +594,95 @@ msgstr "startsymbolet %s avleder ingen setninger"
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "heltall utenfor tallområde: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ugyldig direktiv: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "flertydig argument %s for %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ til «%s» har ingen deklarert type"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d av «%s» har ingen deklarert type"
@@ -673,57 +702,61 @@ msgstr "ugyldig direktiv: %s"
 msgid "invalid identifier: %s"
 msgstr "ugyldig direktiv: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ugyldig tegn: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ugyldig tegn: %s"
+msgstr[1] "ugyldig tegn: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ugyldig tegn: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ugyldig tegn: %s"
+msgstr[1] "ugyldig tegn: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ugyldig null-tegn"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "ugyldig null-tegn: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "ugyldig tegn: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "mangler «%s» ved slutten av filen"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "mangler «%s» på slutten av linjen"
@@ -758,83 +791,83 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "for mange symboler i inputgrammatikken (grensen er %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s er en redeklarasjon av %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s er en redeklarasjon av %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbolet %s ble redefinert"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "symbolet %s ble redefinert"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redefinerer brukertokennummeret til %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "symbolet %s er brukt, men er ikke definert som et token og har ingen regler"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbolet «%s» er brukt mer enn en gang som en literalstreng"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symbolet «%s» er gitt mer enn en literalstreng"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s er en redeklarasjon av %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "%s er en redeklarasjon av %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "startsymbolet %s er udefinert"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "startsymbolet %s er et token"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1052,13 +1085,13 @@ msgstr "%s: valget 
 msgid "memory exhausted"
 msgstr "minne er uttømt"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "kan ikke lukke filen"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1130,8 +1163,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "I/O-feil"
+#~ msgid "state %d"
+#~ msgstr "tilstand %d"
 
 #~ msgid "warning: "
 #~ msgstr "advarsel: "
index 73302df..b874fe1 100644 (file)
Binary files a/po/nl.gmo and b/po/nl.gmo differ
index 9e0cb25..2b15492 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,12 +18,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "let op"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "I/O-fout"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "fatale fout"
 
@@ -107,17 +112,17 @@ msgstr "ik weiger om invoerbestand %s te overschrijven"
 msgid "conflicting outputs to file %s"
 msgstr "conflicterende uitvoer naar bestand %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Probeer `%s --help' voor meer informatie.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Gebruik: %s [OPTIE]... BESTAND\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -125,20 +130,21 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Wanneer een lange optie een argument als verplicht aanduidt, dan is dat\n"
 "argument eveneens verplicht bij de overeenkomstige korte optie.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Hetzelfde geldt voor optionele argumenten.\n"
 
 # Misschien beter 'een POSIX-compatibele yacc'?
 # En de tekst voor -W kan beter denk ik.
-#: src/getargs.c:295
+#: src/getargs.c:316
+#, fuzzy
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -149,6 +155,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -163,12 +170,11 @@ msgstr ""
 
 # Correcte vervoeging van 'voorvoegen'?
 # Betere vertaling voor 'directives'?
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -178,7 +184,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -L, --language=TAAL        geef de te gebruiken programmeertaal op\n"
@@ -189,7 +194,8 @@ msgstr ""
 "  -l, --no-lines             genereer geen `#line' directieven\n"
 "  -k, --token-table          genereer ook een tabel van tokennamen\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -203,7 +209,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Uitvoer:\n"
 "      --defines[=BESTAND]    genereer ook een header-bestand\n"
@@ -219,7 +224,7 @@ msgstr ""
 "                             (het XML schema is experimenteel)\n"
 "\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 #, fuzzy
 msgid ""
 "Warning categories include:\n"
@@ -227,12 +232,12 @@ msgid ""
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Soorten van waarschuwing zijn:\n"
 "  `midrule-values'  midrule waarden die niet gezet of gebruikt worden\n"
@@ -244,7 +249,7 @@ msgstr ""
 "\n"
 
 # Verschillende dingen die beter zouden moeten kunnen - zeker de 'itemset' tekst
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -264,31 +269,60 @@ msgstr ""
 "  `all'          produceer alle bovengenoemde informatie\n"
 "  `none'         schakel de rapportering uit\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Meld fouten in de vertaling aan <vertaling@vrijschrift.org>.\n"
 "Meld bugs aan <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Geschreven door Robert Corbett en Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -297,26 +331,26 @@ msgstr ""
 "garantie; zelfs niet voor VERKOOPBAARHEID of GESCHIKTHEID VOOR EEN BEPAALD\n"
 "DOEL.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "meerdere skeletten opgeven is niet toegestaan"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "ongeldige taal `%s'"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "meerdere talen opgeven is niet toegestaan"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "operand ontbreekt na `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "overtollige operand `%s'"
@@ -329,7 +363,7 @@ msgstr "leeg"
 msgid "Grammar"
 msgstr "Grammatica"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -338,7 +372,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "overflow van lijnnummers"
@@ -352,38 +386,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s `%s' opnieuw gedefinieerd"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "eerdere definitie"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "ongeldige waarde voor %%define variabele `%s': `%s'"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "ongeldige waarde voor Booleaanse %%define variabele `%s'"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "ongeldige waarde voor %%define variabele `%s': `%s'"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "waarde niet gebruikt: $%d"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "naam ontbreekt in parameterdeclaratie"
@@ -421,10 +454,10 @@ msgstr "accepteer"
 msgid "$default"
 msgstr "$standaard"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "toestand %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Staat %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -454,72 +487,71 @@ msgstr "Regels die, omwille van conflicten, nutteloos zijn in de grammatica"
 msgid "multiple %s declarations"
 msgstr "meerdere %s declaraties"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "conflict tussen resultaattypes bij merge-functie `%s': <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "eerdere declaratie"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regel opgegeven voor token (%s)"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "type-conflict bij standaardaktie: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "lege regel voor niet-eindsymbool met type, en geen actie"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "waarde niet gebruikt: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "waarde niet gezet: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "token voor %%prec is niet gedefinieerd: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "slechts één %s toegestaan per regel"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s is enkel van toepassing op GLR-parsers"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s moet gevolgd worden door een positief getal"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "regel is te lang"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "invoergrammatica bevat geen regels"
@@ -570,99 +602,97 @@ msgstr "uit startsymbool %s kan geen enkele zin afgeleid worden"
 msgid "stray '%s'"
 msgstr "losse `$'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integer buiten bereik: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "ongeldig commando: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argument %s voor %s is niet eenduidig"
 
 # betere vertaling voor 'untyped'?
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "expliciet type opgegeven in een typeloze grammatica"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ van `%s' heeft geen gedeclareerd type"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d van `%s' heeft geen gedeclareerd type"
@@ -682,57 +712,61 @@ msgstr "ongeldig commando: %s"
 msgid "invalid identifier: %s"
 msgstr "ongeldig commando: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ongeldig teken: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ongeldig teken: %s"
+msgstr[1] "ongeldig teken: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ongeldig teken na \\-escape: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ongeldig teken na \\-escape: %s"
+msgstr[1] "ongeldig teken na \\-escape: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ongeldig null-teken"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "ongeldig getal na \\-escape: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "ongeldig teken na \\-escape: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "`%s' ontbreekt aan einde van bestand"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "`%s' ontbreekt aan einde van regel"
@@ -768,87 +802,87 @@ msgid "too many symbols in input grammar (limit is %d)"
 msgstr "te veel symbolen in de invoergrammatica (de limiet is %d)"
 
 # Dit ziet er als een potentieel slechte originele string uit - wat kan er in die eerste '%s' staan?
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s herdeclaratie voor %s"
 
 # Dit ziet er als een potentieel slechte originele string uit - wat kan er in die eerste '%s' staan?
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s herdeclaratie voor <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbool %s opnieuw gedefinieerd"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "symbool %s opnieuw gedeclareerd"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "herdefinitie van het door de gebruiker gekozen tokennummer van %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "symbool %s wordt gebruikt, maar is niet gedefinieerd als een token en heeft "
 "geen regels"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbool `%s' meer dan eens gebruikt als een letterlijke string"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symbool `%s' krijgt meer dan één letterlijke string toegewezen"
 
 # Dit ziet er als een potentieel slechte originele string uit - wat kan er in die eerste '%s' staan?
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s herdeclaratie voor %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "eerdere declaratie"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "het startsymbool %s is niet gedefinieerd"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "het startsymbool %s is een token"
 
 # tagged en tagless? wasdavooriet?
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "herdeclaratie van standaard \"tagged\" %%destructor"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "herdeclaratie van standaard \"tagless\" %%destructor"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "herdeclaratie van standaard \"tagged\" %%printer"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "herdeclaratie van standaard \"tagless\" %%printer"
@@ -1067,13 +1101,13 @@ msgid "memory exhausted"
 msgstr "geen geheugen meer beschikbaar"
 
 # Is hier een Nederlandse term voor? "Datapijp"? "Sluis" (via "doorsluizen" als vertaling voor "pipe" als werkwoord)?
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "kan geen pipe aanmaken"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1145,13 +1179,13 @@ msgstr "%s subproces"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s subproces kreeg fataal signaal %d"
 
+#~ msgid "state %d"
+#~ msgstr "toestand %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "losse `@'"
 
-#~ msgid "I/O error"
-#~ msgstr "I/O-fout"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index 2049e40..eaba0bb 100644 (file)
Binary files a/po/pl.gmo and b/po/pl.gmo differ
index 50a6d93..8995de0 100644 (file)
--- a/po/pl.po
+++ b/po/pl.po
@@ -5,10 +5,10 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-06 10:57+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-10 19:24+0100\n"
 "Last-Translator: Wojciech Polak <polak@gnu.org>\n"
 "Language-Team: Polish <translation-team-pl@lists.sourceforge.net>\n"
 "Language: pl\n"
@@ -18,12 +18,16 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "ostrzeżenie"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "błąd"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "fatalny błąd"
 
@@ -114,17 +118,17 @@ msgstr "odmowa nadpisania pliku wejściowego %s"
 msgid "conflicting outputs to file %s"
 msgstr "konflikt wyjść do pliku %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Spróbuj `%s --help' aby uzyskać więcej informacji.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Użycie: %s [OPCJA]... PLIK\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -136,18 +140,18 @@ msgstr ""
 "Wsparcie dla IELR(1) i kanonicznego LR(1) jest eksperymentalne.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Obowiązkowe argumenty dla długich opcji są obowiązkowe również dla krótkich "
 "opcji.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "To samo dotyczy argumentów opcjonalnych.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -158,6 +162,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -169,14 +174,14 @@ msgstr ""
 "      --print-datadir        wyświetla katalog zawierający szkielety i XSLT\n"
 "  -y, --yacc                 emuluje POSIX Yacc\n"
 "  -W, --warnings[=KATEGORIA] zgłasza ostrzeżenia dotyczące danej kategorii\n"
+"  -f, --feature[=FUNKCJA]    aktywuje różne funkcje programu\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -186,7 +191,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Analizator składni:\n"
 "  -L, --language=JĘZYK       używa wyjściowy język programowania\n"
@@ -200,9 +204,8 @@ msgstr ""
 "                             zastąpione przez '-Dapi.prefix=PREFIKS'\n"
 "  -l, --no-lines             zabrania tworzenia dyrektyw `#line'\n"
 "  -k, --token-table          dołącza tablicę nazw symboli leksykalnych\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -216,7 +219,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Wyjście:\n"
 "      --defines[=PLIK]       produkuje także plik nagłówkowy\n"
@@ -230,35 +232,34 @@ msgstr ""
 "  -g, --graph[=PLIK]         produkuje także graf automatu\n"
 "  -x, --xml[=PLIK]           produkuje także raport XML na temat automatu\n"
 "                             (schemat XML jest eksperymentalny)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Kategorie ostrzeżeń:\n"
 "  `midrule-values'  nieustawione lub nieużywane wartości reguł\n"
-"  `yacc'            niekompatybilności z POSIX YACC\n"
+"  `yacc'            niekompatybilności z POSIX Yacc\n"
 "  `conflicts-sr'    konflikty przesunięcie/redukcja (domyślnie włączone)\n"
 "  `conflicts-rr'    konflikty redukcja/redukcja (domyślnie włączone)\n"
+"  `deprecated'      przestrzałe konstrukcje\n"
 "  `other'           wszystkie inne ostrzeżenia (domyślnie włączone)\n"
 "  `all'             wszystkie ostrzeżenia\n"
 "  `no-KATEGORIA'    wyłącza ostrzeżenia w KATEGORII\n"
 "  `none'            wyłącza wszystkie ostrzeżenia\n"
 "  `error'           traktuje ostrzeżenia jako błędy\n"
-"\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -277,30 +278,65 @@ msgstr ""
 "  `all'          dołącza wszystkie powyższe informacje\n"
 "  `none'         wyłącza raport\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Błędy proszę zgłaszać na adres <%s>.\n"
+"FUNKCJA stanowi słowa przedzielone przecinkami. Dopuszczalne są następujące "
+"słowa:\n"
+"  `caret'        pokazuje błędy przy użyciu karety (symbol ^)\n"
+"  `all'          wszystkie powyższe\n"
+"  `none'         żadne z powyższych\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "O błędach programu poinformuj <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "strona domowa %s: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Pomoc w używaniu oprogramowania GNU: <http://www.gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"O błędach tłumaczenia poinformuj <translation-team-pl@lists.sourceforge."
+"net>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Dla pełnej dokumentacji, uruchom: info bison\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Napisany przez Roberta Corbetta i Richarda Stallmana.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -310,26 +346,26 @@ msgstr ""
 "w źródłach. Autorzy nie dają ŻADNYCH gwarancji, w tym również gwarancji\n"
 "PRZYDATNOŚCI DO SPRZEDAŻY LUB DO KONKRETNYCH CELÓW.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "wielokrotne deklaracje szkieletu są nieprawidłowe"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: nieprawidłowy język"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "wielokrotne deklaracje językowe są nieprawidłowe"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: brakujący argument"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "dodatkowy argument %s"
@@ -342,7 +378,7 @@ msgstr "pusta"
 msgid "Grammar"
 msgstr "Gramatyka"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -355,7 +391,7 @@ msgstr ""
 "// Strona domowa: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "przepełnienie numeru linii"
@@ -369,38 +405,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "zredefiniowana zmienna %%define %s"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "poprzednia definicja"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: niezdefiniowana zmienna %%define %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "nieprawidłowa wartość dla boole'owskiej zmiennej %%define %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "nieprawidłowa wartość dla zmiennej %%define %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "zaakceptowana wartość: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "brakujący identyfikator w deklaracji parametrów"
@@ -438,10 +473,10 @@ msgstr "akceptowanie"
 msgid "$default"
 msgstr "$domyślnie"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "stan %d"
+msgid "State %d"
+msgstr "Stan %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -470,73 +505,72 @@ msgstr "Bezużyteczne reguły w analizatorze z powodu konfliktów"
 msgid "multiple %s declarations"
 msgstr "wielokrotne deklaracje %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "niezgodność typów powrotu przy połączeniu funkcji %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "poprzednia deklaracja"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "zignorowano powtórzoną nazwę symbolu dla %s"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "reguła dana dla symbolu leksykalnego %s"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "konflikt typu w domyślnej akcji: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "pusta reguła i brak akcji dla symbolu nieterminalnego z określeniem typu"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "nieużywana wartość: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "nieustawiona wartość: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "symbol leksykalny dla %%prec nie jest zdefiniowany: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "tylko jedno %s dozwolone na jedną regułę"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s wpływa tylko na analizatory składni GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "za %s musi być umieszczona liczba dodatnia"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "zbyt długa reguła"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "brak reguł w gramatyce wejściowej"
@@ -584,105 +618,103 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "początkowy symbol %s nie dziedziczy żadnego zdania"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "zabłąkany '$'"
+msgstr "zabłąkany '%s'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 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:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "przyszłe wersje Bisona nie będą dodawać znaku ';'"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "odnosi się do: %c%s w %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "może chodziło o: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", ukrywanie %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " w %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "liczba całkowita poza zakresem: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "nieprawidłowe odwołanie: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "nie znaleziono symbolu w produkcji przed $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "nie znaleziono symbolu w produkcji: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "mylące odniesienie: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "niejednoznaczne odniesienie: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "jawny typ w gramatyce beztypowej"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ należący do %s nie posiada zadeklarowanego typu"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s należący do %s nie posiada zadeklarowanego typu"
@@ -702,57 +734,61 @@ msgstr "nieprawidłowa dyrektywa: %s"
 msgid "invalid identifier: %s"
 msgstr "nieprawidłowy identyfikator: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "nieprawidłowy znak: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "nieprawidłowy znak"
+msgstr[1] "nieprawidłowe znaki"
+msgstr[2] "nieprawidłowych znaków"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "niespodziewany identyfikator w nazwie: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "oczekiwano identyfikatora"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "nieprawidłowy znak w nazwie: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "nieprawidłowy znak w nazwie"
+msgstr[1] "nieprawidłowe znaki w nazwie"
+msgstr[2] "nieprawidłowych znaków w nazwie"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "pusty literalny znak"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "dodatkowe znaki w literalnym znaku"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "nieprawidłowy pusty znak"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "nieprawidłowa liczba po \\-escape: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "nieprawidłowy znak po \\-escape: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "brakujący %s na końcu pliku"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "brakujący %s na końcu linii"
@@ -787,84 +823,84 @@ msgstr "POSIX Yacc zabrania myślników w nazwach symboli: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "zbyt dużo symboli w gramatyce wejściowej (limit wynosi %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s redeklaracja dla %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s redeklaracja dla <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "zredefiniowany symbol %s"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "zredefiniowany symbol %s"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "przedefiniowanie numeru symbolu leksykalnego %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "użyty symbol %s nie jest zdefiniowany jako symbol leksykalny i nie posiada "
 "reguł"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "symbol %s użyty więcej niż jeden raz jako łańcuch literalny"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "symbol %s podany więcej niż jeden łańcuch literalny"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redeklaracja numeru symbolu leksykalnego %d dla %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "poprzednia deklaracja dla %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "symbol początkowy %s jest niezdefiniowany"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "symbol początkowy %s jest symbolem leksykalnym"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "domyślny oznaczony %%destructor deklarowany ponownie"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "domyślny nieoznaczony %%destructor deklarowany ponownie"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "domyślny oznaczony %%printer deklarowany ponownie"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "domyślny nieoznaczony %%printer deklarowany ponownie"
@@ -1078,13 +1114,13 @@ msgstr "%s: opcja '-W %s' wymaga argumentu\n"
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "nie można utworzyć potoku"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1156,12 +1192,12 @@ msgstr "podproces %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "podproces %s otrzymał nieprawidłowy sygnał %d"
 
+#~ msgid "state %d"
+#~ msgstr "stan %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "zabłąkany '@'"
 
-#~ msgid "I/O error"
-#~ msgstr "błąd wejścia/wyjścia"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
index 41b3ea4..025dbbb 100644 (file)
Binary files a/po/pt.gmo and b/po/pt.gmo differ
index 1a752cb..7a7e14f 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,12 +19,17 @@ msgstr ""
 "X-Poedit-Country: PORTUGAL\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "aviso"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Erro de E/S"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "erro fatal"
 
@@ -107,17 +112,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr ""
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr ""
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr ""
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -125,16 +130,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -145,15 +150,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -163,10 +168,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -180,25 +184,24 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -209,53 +212,82 @@ msgid ""
 "  `none'         disable the report\n"
 msgstr ""
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
 msgstr ""
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Escrito por Robert Corbett e Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr ""
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr ""
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr ""
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr ""
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr ""
@@ -268,7 +300,7 @@ msgstr "vazio"
 msgid "Grammar"
 msgstr "Gramática"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -277,7 +309,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "ultrapassado o número de linhas"
@@ -291,38 +323,37 @@ msgstr "ultrapassado o número de colunas"
 msgid "rule useless in parser due to conflicts"
 msgstr ""
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr ""
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr ""
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr ""
@@ -360,10 +391,10 @@ msgstr "aceite"
 msgid "$default"
 msgstr ""
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr ""
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "ir para o estado %d\n"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -392,72 +423,71 @@ msgstr ""
 msgid "multiple %s declarations"
 msgstr ""
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr ""
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr ""
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr ""
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr ""
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr ""
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr ""
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "regra é muito longa"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr ""
@@ -507,97 +537,95 @@ msgstr ""
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "integral fora de alcance: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directriz inválida: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' não tem tipo declarado"
@@ -617,57 +645,61 @@ msgstr "directriz inválida: %s"
 msgid "invalid identifier: %s"
 msgstr "directriz inválida: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "caracter inválido: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "caracter inválido: %s"
+msgstr[1] "caracter inválido: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "caracter inválido: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "caracter inválido: %s"
+msgstr[1] "caracter inválido: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "caracter nulo inválido"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "caracter nulo inválido: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "caracter inválido: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr ""
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr ""
@@ -702,82 +734,82 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr ""
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr ""
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr ""
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr ""
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr ""
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr ""
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr ""
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr ""
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr ""
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr ""
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -992,13 +1024,13 @@ msgstr ""
 msgid "memory exhausted"
 msgstr "memória exausta"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "cannot close file"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1068,8 +1100,5 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "Erro de E/S"
-
 #~ msgid "invalid escape sequence: %s"
 #~ msgstr "sequência de escape inválida: %s"
index a59d071..87561b9 100644 (file)
Binary files a/po/pt_BR.gmo and b/po/pt_BR.gmo differ
index 6b82da5..268bb64 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,12 +16,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "aviso"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Erro de E/S"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "erro fatal: "
@@ -105,17 +110,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "saídas conflitantes para o arquivo %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "tente `%s --help' para mais informações.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Uso: %s [OPCAO]... ARQUIVO\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -123,16 +128,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -143,15 +148,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -161,7 +166,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Analizador:\n"
 "  -S, --skeleton=arquivo     especifica o skeleto a ser usado\n"
@@ -172,7 +176,7 @@ msgstr ""
 "  -n, --no-parser            apenas gera as tabelas\n"
 " --k, --token-table          inclui uma tabela de nomes de tokens\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -187,7 +191,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Saída:\n"
 "  -d, --defines              também produz um arquivo de cabeçalho\n"
@@ -197,22 +200,22 @@ msgstr ""
 "  -o, --output=ARQUIVO       armazena a saída em ARQUIVO\n"
 "  -g, --graph                também produz uma descrição em VCG do autômato\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -232,28 +235,57 @@ msgstr ""
 "  `all'          inclui todas as informações acima\n"
 "  `none'         desabilita o relatório\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr "Informe os erros para <bug-bison@gnu.org>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Escrito por Robert Corbett e Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright © %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -264,27 +296,27 @@ msgstr ""
 "ou\n"
 "ADEQUAÇÃO À QUALQUER FINALIDADE PARTICULAR.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "declarações de %s múltiplas"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "valor inválido: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "declarações de %s múltiplas"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "falta operando depois de `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "operando `%s' sobrando"
@@ -297,7 +329,7 @@ msgstr "vazio"
 msgid "Grammar"
 msgstr "Gramática"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -306,7 +338,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -321,38 +353,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regra não reduzida por causa de conflitos"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "símbolo %s redefinido"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valor inválido: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificador faltando na declaração do parâmetro"
@@ -390,10 +421,10 @@ msgstr "aceitar"
 msgid "$default"
 msgstr "$padrão"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "estado %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Estado %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -423,72 +454,72 @@ msgstr "regra n
 msgid "multiple %s declarations"
 msgstr "declarações de %s múltiplas"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "tipo de resultado conflita na fução de mescla %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "declarações de %s múltiplas"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regra fornecida para %s, que é um token"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "conflito de tipos na ação padrão: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "regra vazia para um não-terminal com tipo, e não há ações"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "valor inválido: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "apenas um %s é permitido por regra"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s afeta apenas analisadores GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s deve ser seguido por um número positivo"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "não há regras na gramática de entrada"
@@ -542,97 +573,95 @@ msgstr "s
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "inteiro fora de faixa: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "diretiva inválida: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "redefinindo precedência de %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argumento %s ambíguo para %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ de `%s' não tem tipo declarado"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d de `%s' não tem tipo declarado"
@@ -652,57 +681,61 @@ msgstr "diretiva inv
 msgid "invalid identifier: %s"
 msgstr "diretiva inválida: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "caractere inválido: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "caractere inválido: %s"
+msgstr[1] "caractere inválido: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "caractere inválido: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "caractere inválido: %s"
+msgstr[1] "caractere inválido: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, fuzzy, c-format
 msgid "invalid null character"
 msgstr "caractere inválido: %s"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "seqüência de escape inválida: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "caractere inválido: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "`%s' faltando no final do arquivo"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "`%s' faltando no final do arquivo"
@@ -737,82 +770,82 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr ""
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "redeclaração de %s para %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "redeclaração de %s para %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "símbolo %s redefinido"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "símbolo %s redefinido"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "redefinindo número de token de usuário de %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr "símbolo %s usado, mas não definido como uma token e não tem regras"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "símbolo `%s' usado mais the uma vez como uma string literal"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "símbolo `%s' associado a mais de uma string literal"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redeclaração de tipo para %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "redeclaração de tipo para %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "o símbolo de início %s não está definido"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "o símbolo de início %s é um terminal"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1030,13 +1063,13 @@ msgstr "%s: a op
 msgid "memory exhausted"
 msgstr "memória esgotada"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "impossível fechar o arquivo"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1108,8 +1141,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "Erro de E/S"
+#~ msgid "state %d"
+#~ msgstr "estado %d"
 
 #~ msgid "warning: "
 #~ msgstr "aviso: "
index 599317e..b9f0ccd 100644 (file)
Binary files a/po/ro.gmo and b/po/ro.gmo differ
index b38b4ac..13fd287 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,12 +19,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "avertisment"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "Eroare I/O"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "eroare fatalã: "
@@ -110,17 +115,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "ieºiri în conflict în fiºierul %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Încercaþi `%s --help' pentru informaþii suplimentare.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Folosire: %s [OPÞIUNE]... FIªIER\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -128,16 +133,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -148,15 +153,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -166,7 +171,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
 "  -S, --skeleton=FIªIER      specificã scheletul de folosit\n"
@@ -177,7 +181,7 @@ msgstr ""
 "  -n, --no-parser            genereazã numai tabelele\n"
 "  -k, --token-table          include un tabel cu nume de elemente\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -192,7 +196,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Ieºire:\n"
 "  -d, --defines              creazã ºi un fiºier header\n"
@@ -202,22 +205,22 @@ msgstr ""
 "  -o, --output=FIªIER        creazã ieºire în FIªIER\n"
 "  -g, --graph                creazã ºi o descriere VCG a automaton-ului\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -236,28 +239,57 @@ msgstr ""
 "  `all'          include toatã informaþia de mai sus\n"
 "  `none'         deactiveazã raportarea\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr "Raportaþi bug-uri la <bug-bison@gnu.org>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Scris de Robert Corbett ºi Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -268,27 +300,27 @@ msgstr ""
 "POTRIVIRE\n"
 "PENTRU UN SCOP ANUME.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "declaraþii %s multiple"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "valoare invalidã: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "declaraþii %s multiple"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "operator lipsã dupã `%s'"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "extra operator `%s'"
@@ -301,7 +333,7 @@ msgstr "gole
 msgid "Grammar"
 msgstr "Gramaticã"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -310,7 +342,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -325,38 +357,37 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "regula nu este redusã niciodatã din cauza conflictelor"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "simbol %s redefinit"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr ""
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "valoare invalidã: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identificator lipsã în declaraþia parametrului"
@@ -394,10 +425,10 @@ msgstr "accept"
 msgid "$default"
 msgstr "$implicit"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "stare %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Stare %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -427,73 +458,73 @@ msgstr "regula nu este redus
 msgid "multiple %s declarations"
 msgstr "declaraþii %s multiple"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 "tipul rezultatului în conflict cu funcþia de combinare %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "prima declaraþie"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "regula datã pentru %s, care este un element (token)"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "conflict de tip pentru acþiunea implicitã: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "regulã vidã pentru nonterminal cu tip, ºi nici o acþiune"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "valoare invalidã: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "un singur %s permis pe fiecare regulã"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s afecteazã numai parsere GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s trebuie sã fie urmat de numere pozitive"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "nici o regulã în gramatica furnizatã"
@@ -547,97 +578,95 @@ msgstr "simbol de start %s nu deriveaz
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "întreg în afara domeniului: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "directivã invalidã: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "argument ambiguu %s pentru %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ a lui `%s' nu are nici un tip declarat"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d a lui `%s' nu are nici un tip declarat"
@@ -657,57 +686,61 @@ msgstr "directiv
 msgid "invalid identifier: %s"
 msgstr "directivã invalidã: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "caracter invalid: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "caracter invalid: %s"
+msgstr[1] "caracter invalid: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "caracter invalid: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "caracter invalid: %s"
+msgstr[1] "caracter invalid: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "caracter null invalid"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "caracter null invalid: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "caracter invalid: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "`%s' lipsã la sfârºitul fiºierului"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "`%s' lipsã la sfârºitul liniei"
@@ -742,84 +775,84 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "prea multe simboluri în gramatica de intrare (limita este %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "redeclarare %s pentru %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "redeclarare %s pentru %s"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "simbol %s redefinit"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "simbol %s redefinit"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "numãrul elementului (token) definit de utilizator redefinit pentru %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "simbolul %s e folosit, dar nu este definit ca element (token) ºi nu are nici "
 "o regulã"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simbolul `%s' este folosit de mai multe ori ca ºir literar"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "simbolului `%s' îi este dat mai mult de un singur ºir literar"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "redeclarare %s pentru %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "redeclarare %s pentru %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "simbolul de start %s nu este definit"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "simbolul de start %s este un element (token)"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -1037,13 +1070,13 @@ msgstr "%s: op
 msgid "memory exhausted"
 msgstr "memorie epuizatã"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "nu pot închide fiºierul"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1115,8 +1148,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "Eroare I/O"
+#~ msgid "state %d"
+#~ msgstr "stare %d"
 
 #~ msgid "warning: "
 #~ msgstr "avertisment: "
index 5194caa..be8633e 100644 (file)
Binary files a/po/ru.gmo and b/po/ru.gmo differ
index eb0dd8c..b839b87 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -21,12 +21,17 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "предупреждение"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "ошибка ввода-вывода"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "фатальная ошибка"
 
@@ -111,17 +116,17 @@ msgstr "отказ перезаписи входного файла %s"
 msgid "conflicting outputs to file %s"
 msgstr "конфликт вывода в файл %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Используйте «%s --help» для дополнительной информации.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Использование: %s [КЛЮЧИ]... ФАЙЛ\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -129,16 +134,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr "Соответствующие длянные опции также соответствуют и коротким опциям.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "То-же допустимо для опциональных параметров.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 #, fuzzy
 msgid ""
 "\n"
@@ -150,6 +155,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -164,12 +170,11 @@ msgstr ""
 "КАТЕГОРИЕЙ\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -179,7 +184,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Анализатор:\n"
 "  -L, --language=ЯЗЫК        указать выходной язык программирования\n"
@@ -192,7 +196,8 @@ msgstr ""
 "  -k, --token-table          включить таблицу имен лексем\n"
 "\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
+#, fuzzy
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -206,7 +211,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Вывод:\n"
 "      --defines[=ФАЙЛ]       создать также файл заголовков\n"
@@ -222,7 +226,7 @@ msgstr ""
 "                             (сценарий XML - эксперементальный)\n"
 "\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 #, fuzzy
 msgid ""
 "Warning categories include:\n"
@@ -230,12 +234,12 @@ msgid ""
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Категории предупреждения включают:\n"
 "  «midrule-values»  неназначенные или неиспользуемые значения в правилах\n"
@@ -246,7 +250,7 @@ msgstr ""
 "  «error»           воспринимать все предупреждения как ошибки\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -264,30 +268,59 @@ msgstr ""
 "  «all»          включить всю эту информацию\n"
 "  «none»         отключить отчет\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "Ошибки сообщайте по адресу <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Авторы: Роберт Корбет и Ричард Столмен.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -298,26 +331,26 @@ msgstr ""
 "ПРИГОДНОСТИ\n"
 "ДЛЯ ОПРЕДЕЛЕННОЙ ЦЕЛИ.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "множественные описания скелета не применимо"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "недопустимый язык «%s»"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "множественные описания языка не применимо"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "после «%s» пропущен операнд"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "лишний операнд «%s»"
@@ -330,7 +363,7 @@ msgstr "пусто"
 msgid "Grammar"
 msgstr "Грамматика"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -339,7 +372,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "переполнение номера строки"
@@ -353,38 +386,38 @@ msgstr "переполнение номера столбца"
 msgid "rule useless in parser due to conflicts"
 msgstr "правило не применимо в парсере из-за конфликтов"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "повторное определение символа %s"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
+#, fuzzy
 msgid "previous definition"
 msgstr "предыдущее описание"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "неиспользуемая переменная: $%d"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "в описании параметра отсутствует идентификатор"
@@ -422,10 +455,10 @@ msgstr "принять"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "состояние %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Состояние %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -454,73 +487,72 @@ msgstr "Правило не применимо в парсере из-за ко
 msgid "multiple %s declarations"
 msgstr "множественное описание %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "конфликт типов результата при слиянии функции «%s»: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "предыдущее описание"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "правило задано для %s, который является лексемой"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "конфликт типов на действии по умолчанию: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "пустое правило для типизированного нетерминального символа, и нет действия"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "неиспользуемая переменная: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "неуказанное значение: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "только одно %s разрешено на правило"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s влияет только на GLR парсеры"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "за %s должно следовать положительное число"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "слишком длинное правило"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "отсутствуют правила во входной грамматике"
@@ -572,97 +604,95 @@ msgstr "начальный символ %s не выводит ни одного
 msgid "stray '%s'"
 msgstr "некорректный «$»"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "выход за границы диапазона целого: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "неверная директива: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "переопределение приоритета для %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "неоднозначный аргумент %s для %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "указан тип в нетипизированной грамматике"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, fuzzy, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ для правила $%d из «%s» не имеет описанного типа"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ в «%s» не имеет описанного типа"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%d из «%s» не имеет описанного типа"
@@ -682,57 +712,63 @@ msgstr "неверная директива: %s"
 msgid "invalid identifier: %s"
 msgstr "неверная директива: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "недопустимый символ: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "недопустимый символ: %s"
+msgstr[1] "недопустимый символ: %s"
+msgstr[2] "недопустимый символ: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, fuzzy, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "неожиданный элемент: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "недопустимый символ: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "недопустимый символ: %s"
+msgstr[1] "недопустимый символ: %s"
+msgstr[2] "недопустимый символ: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "недопустимый нулевой символ"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "недопустимый нулевой символ: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "недопустимый символ: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "отсутствует «%s» в конце файла"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "отсутствует «%s» в конце строки"
@@ -767,82 +803,82 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "слишком много символов во входящей грамматике (максимально %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "повторное описание %s для %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s повторно описан для <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "повторное определение символа %s"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "переопределение символа %s"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "переопределение номера лексемы пользователя для %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr "символ %s используется, но не определен как лексема и не имеет правил"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "символ «%s» используется более одного раза как строка литерала"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "символ «%s» указан более одной строки литерала"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "повторное описание типа для %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "предыдущее описание"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "начальный символ %s не определен"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "начальный символ %s является лексемой"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "переопределение для стандартного назначенного %%destructor"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "переопределение для стандартного неназначенного %%destructor"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "переопределение для стандартного назначенного %%printer"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "переопределение для стандартного неназначенного %%printer"
@@ -1060,13 +1096,13 @@ msgstr "%s: ключ «%s» должен использоваться с арг
 msgid "memory exhausted"
 msgstr "память исчерпана"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "не удается закрыть файл"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1138,13 +1174,13 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
+#~ msgid "state %d"
+#~ msgstr "состояние %d"
+
 #, fuzzy
 #~ msgid "stray '@'"
 #~ msgstr "некорректный «@»"
 
-#~ msgid "I/O error"
-#~ msgstr "ошибка ввода-вывода"
-
 #~ msgid ""
 #~ "Generate LALR(1) and GLR parsers.\n"
 #~ "\n"
diff --git a/po/sr.gmo b/po/sr.gmo
new file mode 100644 (file)
index 0000000..b43414a
Binary files /dev/null and b/po/sr.gmo differ
diff --git a/po/sr.po b/po/sr.po
new file mode 100644 (file)
index 0000000..07909ba
--- /dev/null
+++ b/po/sr.po
@@ -0,0 +1,1190 @@
+# Serbian translation for bison.
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the bison package.
+# Мирослав Николић <miroslavnikolic@rocketmail.com>, 2012.
+msgid ""
+msgstr ""
+"Project-Id-Version: bison-2.6.2\n"
+"Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-08-09 22:38+0200\n"
+"Last-Translator: Мирослав Николић <miroslavnikolic@rocketmail.com>\n"
+"Language-Team: Serbian <gnu@prevod.org>\n"
+"Language: sr\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
+msgid "warning"
+msgstr "упозорење"
+
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "кобна грешка"
+
+#: src/complain.c:208 src/complain.c:215
+msgid "fatal error"
+msgstr "кобна грешка"
+
+#: src/conflicts.c:77
+#, c-format
+msgid "    Conflict between rule %d and token %s resolved as shift"
+msgstr "    Сукоб правила „%d“ и симбола „%s“ је решен као помак"
+
+#: src/conflicts.c:86
+#, c-format
+msgid "    Conflict between rule %d and token %s resolved as reduce"
+msgstr "    Сукоб правила „%d“ и симбола „%s“ је решен као смањење"
+
+#: src/conflicts.c:94
+#, c-format
+msgid "    Conflict between rule %d and token %s resolved as an error"
+msgstr "    Сукоб правила „%d“ и симбола „%s“ је решен као грешка"
+
+#: src/conflicts.c:492
+#, c-format
+msgid "conflicts: %d shift/reduce, %d reduce/reduce\n"
+msgstr "сукоби: %d помак/смањење, %d смањење/смањење\n"
+
+#: src/conflicts.c:495
+#, c-format
+msgid "conflicts: %d shift/reduce\n"
+msgstr "сукоби: %d помак/смањење\n"
+
+#: src/conflicts.c:497
+#, c-format
+msgid "conflicts: %d reduce/reduce\n"
+msgstr "сукоби: %d смањење/смањење\n"
+
+#: src/conflicts.c:515
+#, c-format
+msgid "State %d "
+msgstr "Стање: %d "
+
+#: src/conflicts.c:582
+#, c-format
+msgid "%%expect-rr applies only to GLR parsers"
+msgstr "%%очекуј-рр се примењује само на ГЛР обрађиваче"
+
+#: src/conflicts.c:616
+#, c-format
+msgid "expected %d shift/reduce conflict"
+msgid_plural "expected %d shift/reduce conflicts"
+msgstr[0] "очекиван је %d сукоб помака/смањења"
+msgstr[1] "очекивана су %d сукоба помака/смањења"
+msgstr[2] "очекивано је %d сукоба помака/смањења"
+
+#: src/conflicts.c:621
+#, c-format
+msgid "expected %d reduce/reduce conflict"
+msgid_plural "expected %d reduce/reduce conflicts"
+msgstr[0] "очекиван је %d сукоб смањења/смањења"
+msgstr[1] "очекивана су %d сукоба смањења/смањења"
+msgstr[2] "очекивано је %d сукоба смањења/смањења"
+
+#: src/files.c:114
+#, c-format
+msgid "%s: cannot open"
+msgstr "%s: не могу да отворим"
+
+#: src/files.c:130
+#, c-format
+msgid "input/output error"
+msgstr "улазна/излазна грешка"
+
+#: src/files.c:133
+#, c-format
+msgid "cannot close file"
+msgstr "не могу да затворим датотеку"
+
+#: src/files.c:352
+#, c-format
+msgid "refusing to overwrite the input file %s"
+msgstr "одбијам да преснимим изворну датотеку „%s“"
+
+#: src/files.c:362
+#, c-format
+msgid "conflicting outputs to file %s"
+msgstr "сукобљавам излазе у датотеку „%s“"
+
+#: src/getargs.c:292
+#, c-format
+msgid "Try `%s --help' for more information.\n"
+msgstr "Пробајте „%s --help“ за више података.\n"
+
+#: src/getargs.c:301
+#, c-format
+msgid "Usage: %s [OPTION]... FILE\n"
+msgstr "Употреба: %s [ОПЦИЈА]... ДАТОТЕКА\n"
+
+#: src/getargs.c:302
+msgid ""
+"Generate a deterministic LR or generalized LR (GLR) parser employing\n"
+"LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
+"canonical LR(1) support is experimental.\n"
+"\n"
+msgstr ""
+"Створите одредничко ЛР или уопштено ЛР (ГЛР) упослење обрађивача\n"
+"ЛАЛР(1), ИЕЛР(1) или табеле утврђеног ЛР(1) обрађивача. Подршка за\n"
+"ИЕЛР(1) и утврђени ЛР(1) је пробна.\n"
+"\n"
+
+#: src/getargs.c:309
+msgid ""
+"Mandatory arguments to long options are mandatory for short options too.\n"
+msgstr ""
+"Обавезни аргументи за дуге опције су обавезни и за кратке опције такође.\n"
+
+#: src/getargs.c:312
+msgid "The same is true for optional arguments.\n"
+msgstr "Исто је тачно и за опционалне аргументе.\n"
+
+#: src/getargs.c:316
+#, fuzzy
+msgid ""
+"\n"
+"Operation modes:\n"
+"  -h, --help                 display this help and exit\n"
+"  -V, --version              output version information and exit\n"
+"      --print-localedir      output directory containing locale-dependent "
+"data\n"
+"      --print-datadir        output directory containing skeletons and XSLT\n"
+"  -y, --yacc                 emulate POSIX Yacc\n"
+"  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
+"\n"
+msgstr ""
+"\n"
+"Режими деловања:\n"
+"  -h, --help                   приказује ову помоћ\n"
+"  -V, --version                исписује податке о издању и излази\n"
+"      --print-localedir        излазни директоријум који садржи месно-"
+"зависне податке\n"
+"      --print-datadir          излазни директоријум који садржи структуру и "
+"ИксСЛТ\n"
+"  -y, --yacc                   опонаша ПОСИКС-ов Јацц\n"
+"  -W, --warnings[=КАТЕГОРИЈА]  извештава о упозорењима у КАТЕГОРИЈИ\n"
+"\n"
+
+#: src/getargs.c:329
+#, fuzzy, c-format
+msgid ""
+"Parser:\n"
+"  -L, --language=LANGUAGE          specify the output programming language\n"
+"  -S, --skeleton=FILE              specify the skeleton to use\n"
+"  -t, --debug                      instrument the parser for debugging\n"
+"      --locations                  enable location support\n"
+"  -D, --define=NAME[=VALUE]        similar to '%define NAME \"VALUE\"'\n"
+"  -F, --force-define=NAME[=VALUE]  override '%define NAME \"VALUE\"'\n"
+"  -p, --name-prefix=PREFIX         prepend PREFIX to the external symbols\n"
+"                                   deprecated by '-Dapi.prefix=PREFIX'\n"
+"  -l, --no-lines                   don't generate '#line' directives\n"
+"  -k, --token-table                include a table of token names\n"
+msgstr ""
+"Parser:\n"
+"  -L, --language=ЈЕЗИК                наводи излазни језик програмирања\n"
+"                                      (ово је пробна функција)\n"
+"  -S, --skeleton=ДАТОТЕКА             одређује скелет за коришћење\n"
+"  -t, --debug                         мери обрађивач за уклањање грешака\n"
+"      --locations                     укључује подршку места\n"
+"  -D, --define=НАЗИВ[=ВРЕДНОСТ]       слично као „%define НАЗИВ 'ВРЕДНОСТ'“\n"
+"  -F, --force-define=НАЗИВ[=ВЕДНОСТ]  преписује „%define НАЗИВ 'ВРЕДНОСТ'“\n"
+"  -p, --name-prefix=ПРЕФИКС           додаје ПРЕФИКС спољним симболима\n"
+"                                      превазиђено је уз „-Dapi."
+"prefix=ПРЕФИКС“\n"
+"  -l, --no-lines                      не ствара смерницу „#line“\n"
+"  -k, --token-table                   укључује табелу назива симбола\n"
+"\n"
+
+#: src/getargs.c:346
+#, fuzzy
+msgid ""
+"Output:\n"
+"      --defines[=FILE]       also produce a header file\n"
+"  -d                         likewise but cannot specify FILE (for POSIX "
+"Yacc)\n"
+"  -r, --report=THINGS        also produce details on the automaton\n"
+"      --report-file=FILE     write report to FILE\n"
+"  -v, --verbose              same as `--report=state'\n"
+"  -b, --file-prefix=PREFIX   specify a PREFIX for output files\n"
+"  -o, --output=FILE          leave output to FILE\n"
+"  -g, --graph[=FILE]         also output a graph of the automaton\n"
+"  -x, --xml[=FILE]           also output an XML report of the automaton\n"
+"                             (the XML schema is experimental)\n"
+msgstr ""
+"Излаз:\n"
+"      --defines[=ДАТОТЕКА]    ствара датотеку заглавља\n"
+"  -d                          исто тако али не може да наведе ДАТОТЕКУ (за "
+"ПОСИКС Јацц)\n"
+"  -r, --report=СТВАРИ         такође резултира појединостима о аутомату\n"
+"      --report-file=ДАТОТЕКА  записује извештај у ДАТОТЕКУ\n"
+"  -v, --verbose               исто као „--report=state“\n"
+"  -b, --file-prefix=ПРЕФИКС   наводи ПРЕФИКС за датотеке излаза\n"
+"  -o, --output=ДАТОТЕКА       исписује излаз у ДАТОТЕКУ\n"
+"  -g, --graph[=ДАТОТЕКА]      такође даје график аутомата\n"
+"  -x, --xml[=ДАТОТЕКА]        такође даје ИксМЛ извештај о аутомату\n"
+"                              (ИксМЛ шема је испитивачка)\n"
+"\n"
+
+#: src/getargs.c:361
+#, fuzzy
+msgid ""
+"Warning categories include:\n"
+"  `midrule-values'  unset or unused midrule values\n"
+"  `yacc'            incompatibilities with POSIX Yacc\n"
+"  `conflicts-sr'    S/R conflicts (enabled by default)\n"
+"  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
+"  `other'           all other warnings (enabled by default)\n"
+"  `all'             all the warnings\n"
+"  `no-CATEGORY'     turn off warnings in CATEGORY\n"
+"  `none'            turn off all the warnings\n"
+"  `error'           treat warnings as errors\n"
+msgstr ""
+"Категорије упозорења укључују:\n"
+"  „midrule-values“  неподешене или некоришћене вредности средњег правила\n"
+"  „yacc“            несагласности са ПОСИКС Јацц-ом\n"
+"  „conflicts-sr“    С/Р сукоби (унапред укључено)\n"
+"  „conflicts-rr“    Р/Р сукоби (унапред укључено)\n"
+"  „other“           сва друга упозорења (унапред укључено)\n"
+"  „all“             сва упозорења\n"
+"  „no-CATEGORY“     искључује упозорења у КАТЕГОРИЈИ\n"
+"  „none“            искључује сва упозорења\n"
+"  „error“           упозорења сматра грешкама\n"
+"\n"
+
+#: src/getargs.c:376
+msgid ""
+"THINGS is a list of comma separated words that can include:\n"
+"  `state'        describe the states\n"
+"  `itemset'      complete the core item sets with their closure\n"
+"  `lookahead'    explicitly associate lookahead tokens to items\n"
+"  `solved'       describe shift/reduce conflicts solving\n"
+"  `all'          include all the above information\n"
+"  `none'         disable the report\n"
+msgstr ""
+"СТВАРИ представљају зарезом одвојене речи у које могу да спадају:\n"
+"  „state“        описује стања\n"
+"  „itemset“      довршава подешавања кључне ставке њиховим завршетком\n"
+"  „lookahead“    изричито придружује симболе предувида ставкама\n"
+"  „solved“       описује решавање сукоба помака/смањења\n"
+"  „all“          укључује све горње податке\n"
+"  „none“         искључује извештај\n"
+
+#: src/getargs.c:387
+msgid ""
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr ""
+"\n"
+"Грешке пријавите на <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
+#, c-format
+msgid "bison (GNU Bison) %s"
+msgstr "бизон (Гну Бизон) %s"
+
+#: src/getargs.c:430
+msgid "Written by Robert Corbett and Richard Stallman.\n"
+msgstr "Написали су Роберт Корбет и Ричард Столман.\n"
+
+#: src/getargs.c:434
+#, c-format
+msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
+msgstr "Ауторска права (C) %d Задужбина слободног софтвера, Доо.\n"
+
+#: src/getargs.c:437
+msgid ""
+"This is free software; see the source for copying conditions.  There is NO\n"
+"warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
+msgstr ""
+"Ово је слободан софтвер; погледајте извор за услове умножавања.  Не постоји\n"
+"НИКАКВА гаранција; чак ни за ТРЖИШНУ ВРЕДНОСТ или за ИСПУЊАВАЊЕ ОДРЕЂЕНЕ "
+"ПОТРЕБЕ.\n"
+
+#: src/getargs.c:458
+#, c-format
+msgid "multiple skeleton declarations are invalid"
+msgstr "вишеструке објаве скице су неисправне"
+
+#: src/getargs.c:476
+#, c-format
+msgid "%s: invalid language"
+msgstr "%s: неисправан језик"
+
+#: src/getargs.c:479
+msgid "multiple language declarations are invalid"
+msgstr "вишеструке објаве језика су неисправне"
+
+#: src/getargs.c:747
+#, c-format
+msgid "%s: missing operand"
+msgstr "%s: недостаје операнд"
+
+#: src/getargs.c:749
+#, c-format
+msgid "extra operand %s"
+msgstr "додатни операнд %s"
+
+#: src/gram.c:112
+msgid "empty"
+msgstr "празно"
+
+#: src/gram.c:201
+msgid "Grammar"
+msgstr "Основа"
+
+#: src/graphviz.c:45
+#, c-format
+msgid ""
+"// Generated by %s.\n"
+"// Report bugs to <%s>.\n"
+"// Home page: <%s>.\n"
+"\n"
+msgstr ""
+"// Направљено програмом „%s“.\n"
+"// Грешке пријавите на <%s>.\n"
+"// Страница пројекта: <%s>.\n"
+"\n"
+
+#: src/location.c:93 src/scan-gram.l:859
+#, c-format
+msgid "line number overflow"
+msgstr "прекорачење броја редова"
+
+#: src/location.c:95
+#, c-format
+msgid "column number overflow"
+msgstr "прекорачење броја колона"
+
+#: src/main.c:146
+msgid "rule useless in parser due to conflicts"
+msgstr "бескорисна правила у обрађивачу због сукоба"
+
+#: src/muscle-tab.c:450
+#, c-format
+msgid "%%define variable %s redefined"
+msgstr "%%define променљива „%s“ је поново одређена"
+
+#: src/muscle-tab.c:453
+msgid "previous definition"
+msgstr "претходна одредница"
+
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
+#, c-format
+msgid "%s: undefined %%define variable %s"
+msgstr "%s: неодређена %%define променљива „%s“"
+
+#: src/muscle-tab.c:550
+#, c-format
+msgid "invalid value for %%define Boolean variable %s"
+msgstr "неисправна вредност %%define логичке променљиве „%s“"
+
+#: src/muscle-tab.c:609
+#, c-format
+msgid "invalid value for %%define variable %s: %s"
+msgstr "неисправна вредност %%define променљиве „%s“: %s"
+
+#: src/muscle-tab.c:613
+#, c-format
+msgid "accepted value: %s"
+msgstr "прихваћена вредност: %s"
+
+#: src/parse-gram.y:747
+#, c-format
+msgid "missing identifier in parameter declaration"
+msgstr "недостаје указивач у објави параметра"
+
+#: src/print.c:47
+#, c-format
+msgid " type %d is %s\n"
+msgstr " врста %d је %s\n"
+
+#: src/print.c:164
+#, c-format
+msgid "shift, and go to state %d\n"
+msgstr "помера, и иде на стање %d\n"
+
+#: src/print.c:166
+#, c-format
+msgid "go to state %d\n"
+msgstr "иде на стање %d\n"
+
+#: src/print.c:203
+msgid "error (nonassociative)\n"
+msgstr "грешка (непридруживо)\n"
+
+#: src/print.c:226
+#, c-format
+msgid "reduce using rule %d (%s)"
+msgstr "смањује користећи правило %d (%s)"
+
+#: src/print.c:228
+#, c-format
+msgid "accept"
+msgstr "прихвата"
+
+#: src/print.c:264 src/print.c:338
+msgid "$default"
+msgstr "$основно"
+
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Стање: %d "
+
+#: src/print.c:409
+msgid "Terminals, with rules where they appear"
+msgstr "Терминали, са правилима где се појављују"
+
+#: src/print.c:436
+msgid "Nonterminals, with rules where they appear"
+msgstr "Нетерминали, са правилима где се појављују"
+
+#: src/print.c:465
+#, c-format
+msgid " on left:"
+msgstr " на лево:"
+
+#: src/print.c:482
+#, c-format
+msgid " on right:"
+msgstr " на десно:"
+
+#: src/print.c:510
+msgid "Rules useless in parser due to conflicts"
+msgstr "Бескорисна правила у обрађивачу због сукоба"
+
+# bug: "multiple properties" or "multiple song"?
+#: src/reader.c:62
+#, c-format
+msgid "multiple %s declarations"
+msgstr "вишеструке %s објаве"
+
+#: src/reader.c:133
+#, c-format
+msgid "result type clash on merge function %s: <%s> != <%s>"
+msgstr "неслагање врсте резултата функције спајања %s: <%s> != <%s>"
+
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+msgid "previous declaration"
+msgstr "претходна објава"
+
+#: src/reader.c:205
+#, c-format
+msgid "duplicated symbol name for %s ignored"
+msgstr "занемарен је удвојени назив симбола за „%s“"
+
+#: src/reader.c:249
+#, c-format
+msgid "rule given for %s, which is a token"
+msgstr "дато је правило за %s, које је симбол"
+
+#: src/reader.c:304
+#, c-format
+msgid "type clash on default action: <%s> != <%s>"
+msgstr "неслагање врсте основне радње: <%s> != <%s>"
+
+#: src/reader.c:310
+#, c-format
+msgid "empty rule for typed nonterminal, and no action"
+msgstr "празно правило за укуцани нетерминал, и нема радње"
+
+#: src/reader.c:328
+#, c-format
+msgid "unused value: $%d"
+msgstr "неупотребљена вредност: $%d"
+
+#: src/reader.c:330
+msgid "unset value: $$"
+msgstr "неподешена вредност: $$"
+
+#: src/reader.c:341
+#, c-format
+msgid "token for %%prec is not defined: %s"
+msgstr "симбол за %%prec није одређен: %s"
+
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
+#, c-format
+msgid "only one %s allowed per rule"
+msgstr "дозвољен је само један „%s“ по правилу"
+
+#: src/reader.c:441 src/reader.c:456
+#, c-format
+msgid "%s affects only GLR parsers"
+msgstr "„%s“ има дејства само на ГЛР обрађиваче"
+
+#: src/reader.c:443
+#, c-format
+msgid "%s must be followed by positive number"
+msgstr "након %s мора да следи позитиван број"
+
+#: src/reader.c:554
+#, c-format
+msgid "rule is too long"
+msgstr "правило је предуго"
+
+#: src/reader.c:672
+#, c-format
+msgid "no rules in the input grammar"
+msgstr "нема правила у основи улаза"
+
+#: src/reduce.c:241
+msgid "rule useless in grammar"
+msgstr "правило је бескорисно у основи"
+
+#: src/reduce.c:302
+#, c-format
+msgid "nonterminal useless in grammar: %s"
+msgstr "не-терминал је бескористан у основи: %s"
+
+#: src/reduce.c:350
+msgid "Nonterminals useless in grammar"
+msgstr "Не-терминали су бескорисни у основи"
+
+#: src/reduce.c:363
+msgid "Terminals unused in grammar"
+msgstr "Терминали су неупотребљени у основи"
+
+#: src/reduce.c:372
+msgid "Rules useless in grammar"
+msgstr "Правила су бескорисна у основи"
+
+#: src/reduce.c:385
+#, c-format
+msgid "%d nonterminal useless in grammar"
+msgid_plural "%d nonterminals useless in grammar"
+msgstr[0] "%d не-терминал је бескористан у основи"
+msgstr[1] "%d не-терминала су бескорисна у основи"
+msgstr[2] "%d не-терминала је бескорисно у основи"
+
+#: src/reduce.c:390
+#, c-format
+msgid "%d rule useless in grammar"
+msgid_plural "%d rules useless in grammar"
+msgstr[0] "%d правило је бескорисно у основи"
+msgstr[1] "%d правила су бескорисна у основи"
+msgstr[2] "%d правила је бескорисно у основи"
+
+#: src/reduce.c:419
+#, c-format
+msgid "start symbol %s does not derive any sentence"
+msgstr "почетни симбол %s не изводи никакав исказ"
+
+#: src/scan-code.l:188
+#, c-format
+msgid "stray '%s'"
+msgstr "залутало „%s“"
+
+#: src/scan-code.l:229
+msgid "a ';' might be needed at the end of action code"
+msgstr "на крају кода радње може бити потребна тачка и зарез (;)"
+
+#: src/scan-code.l:232
+msgid "future versions of Bison will not add the ';'"
+msgstr "будућа издања Бизона неће додавати „;“"
+
+#: src/scan-code.l:254
+#, c-format
+msgid "use of YYFAIL, which is deprecated and will be removed"
+msgstr "„YYFAIL“ је застарело у употреби и биће уклоњено"
+
+#: src/scan-code.l:431 src/scan-code.l:434
+#, c-format
+msgid "refers to: %c%s at %s"
+msgstr "односи се на: %c%s у %s"
+
+#: src/scan-code.l:450
+#, c-format
+msgid "possibly meant: %c"
+msgstr "могуће значење: %c"
+
+#: src/scan-code.l:459
+#, c-format
+msgid ", hiding %c"
+msgstr ", кријем %c"
+
+#: src/scan-code.l:467
+#, c-format
+msgid " at %s"
+msgstr " у %s"
+
+#: src/scan-code.l:472
+#, c-format
+msgid ", cannot be accessed from mid-rule action at $%d"
+msgstr ", не може бити приступљен из радње средњег правила у $%d"
+
+#: src/scan-code.l:521 src/scan-gram.l:783
+#, c-format
+msgid "integer out of range: %s"
+msgstr "цео број је ван опсега: %s"
+
+#: src/scan-code.l:610
+#, c-format
+msgid "invalid reference: %s"
+msgstr "неисправна референца: %s"
+
+#: src/scan-code.l:619
+#, c-format
+msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
+msgstr "садржајна грешка након „%c“, очекујем цео број, слово, _, [, или $"
+
+#: src/scan-code.l:626
+#, c-format
+msgid "symbol not found in production before $%d: %.*s"
+msgstr "симбол није пронађен у производњи пре $%d: %.*s"
+
+#: src/scan-code.l:633
+#, c-format
+msgid "symbol not found in production: %.*s"
+msgstr "симбол није пронађен у производњи: %.*s"
+
+#: src/scan-code.l:648
+#, c-format
+msgid "misleading reference: %s"
+msgstr "неисправна референца: %s"
+
+#: src/scan-code.l:663
+#, c-format
+msgid "ambiguous reference: %s"
+msgstr "нејасна референца: %s"
+
+#: src/scan-code.l:700
+#, c-format
+msgid "explicit type given in untyped grammar"
+msgstr "дата је изричита врста у неуписаној основи"
+
+#: src/scan-code.l:759
+#, c-format
+msgid "$$ for the midrule at $%d of %s has no declared type"
+msgstr "$$ за средње правило при $%d од %s нема објављену врсту"
+
+#: src/scan-code.l:764
+#, c-format
+msgid "$$ of %s has no declared type"
+msgstr "$$ од %s нема објављену врсту"
+
+#: src/scan-code.l:786
+#, c-format
+msgid "$%s of %s has no declared type"
+msgstr "$%s од %s нема објављену врсту"
+
+#: src/scan-gram.l:149
+#, c-format
+msgid "stray ',' treated as white space"
+msgstr "залутали зарез (,) је схваћен као размак"
+
+#: src/scan-gram.l:222
+#, c-format
+msgid "invalid directive: %s"
+msgstr "неисправна директива: %s"
+
+#: src/scan-gram.l:250
+#, c-format
+msgid "invalid identifier: %s"
+msgstr "неисправна одређивач: %s"
+
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "неисправан знак: %s"
+msgstr[1] "неисправан знак: %s"
+msgstr[2] "неисправан знак: %s"
+
+#: src/scan-gram.l:354
+#, c-format
+msgid "unexpected identifier in bracketed name: %s"
+msgstr "неочекивани одређивач у називу у заградама: %s"
+
+#: src/scan-gram.l:376
+#, c-format
+msgid "an identifier expected"
+msgstr "очекиван је одређивач"
+
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "неисправан знак у називу у заградама: %s"
+msgstr[1] "неисправан знак у називу у заградама: %s"
+msgstr[2] "неисправан знак у називу у заградама: %s"
+
+#: src/scan-gram.l:481 src/scan-gram.l:502
+#, c-format
+msgid "empty character literal"
+msgstr "дословност празног знака"
+
+#: src/scan-gram.l:486 src/scan-gram.l:507
+#, c-format
+msgid "extra characters in character literal"
+msgstr "додатни знаци у дословности знака"
+
+#: src/scan-gram.l:518
+#, c-format
+msgid "invalid null character"
+msgstr "неисправан ништавни знак"
+
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
+#, c-format
+msgid "invalid number after \\-escape: %s"
+msgstr "неисправан број након „\\-escape“: %s"
+
+#: src/scan-gram.l:573
+#, c-format
+msgid "invalid character after \\-escape: %s"
+msgstr "неисправан знак након „\\-escape“: %s"
+
+#: src/scan-gram.l:901
+#, c-format
+msgid "missing %s at end of file"
+msgstr "недостаје „%s“ на крају датотеке"
+
+#: src/scan-gram.l:912
+#, c-format
+msgid "missing %s at end of line"
+msgstr "недостаје „%s“ на крају реда"
+
+#: src/scan-skel.l:146
+#, c-format
+msgid "unclosed %s directive in skeleton"
+msgstr "незатворена %s смерница у костуру"
+
+#: src/scan-skel.l:291
+#, c-format
+msgid "too few arguments for %s directive in skeleton"
+msgstr "премало аргумената за %s смерницу у костуру"
+
+#: src/scan-skel.l:298
+#, c-format
+msgid "too many arguments for %s directive in skeleton"
+msgstr "превише аргумената за %s смерницу у костуру"
+
+#: src/symlist.c:211
+#, c-format
+msgid "invalid $ value: $%d"
+msgstr "неисправна $ вредност: $%d"
+
+#: src/symtab.c:71
+#, c-format
+msgid "POSIX Yacc forbids dashes in symbol names: %s"
+msgstr "ПОСИКС Јацц забрањује цртице у називима симбола: %s"
+
+#: src/symtab.c:91
+#, c-format
+msgid "too many symbols in input grammar (limit is %d)"
+msgstr "превише симбола у улазној основи (ограничење је %d)"
+
+#: src/symtab.c:154
+#, c-format
+msgid "%s redeclaration for %s"
+msgstr "%s поновни проглас за %s"
+
+#: src/symtab.c:164
+#, c-format
+msgid "%s redeclaration for <%s>"
+msgstr "%s поновни проглас за <%s>"
+
+#: src/symtab.c:332
+#, c-format
+msgid "symbol %s redefined"
+msgstr "симбол „%s“ је поново одређен"
+
+#: src/symtab.c:346
+#, c-format
+msgid "symbol %s redeclared"
+msgstr "симбол „%s“ је поново објављен"
+
+#: src/symtab.c:367
+#, c-format
+msgid "redefining user token number of %s"
+msgstr "поновно одређујем број симбола корисника од %s"
+
+#: src/symtab.c:395
+#, c-format
+msgid "symbol %s is used, but is not defined as a token and has no rules"
+msgstr "коришћен је симбол „%s“, али није одређен као обележје и нема правила"
+
+#: src/symtab.c:415
+#, c-format
+msgid "symbol %s used more than once as a literal string"
+msgstr "симбол %s је коришћен више пута као дословна ниска"
+
+#: src/symtab.c:418
+#, c-format
+msgid "symbol %s given more than one literal string"
+msgstr "симболу %s је дата више од једне дословне ниске"
+
+#: src/symtab.c:535
+#, c-format
+msgid "user token number %d redeclaration for %s"
+msgstr "поновна објава броја %d корисничког симбола за %s"
+
+#: src/symtab.c:539
+#, c-format
+msgid "previous declaration for %s"
+msgstr "претходна објава за %s"
+
+#: src/symtab.c:915
+#, c-format
+msgid "the start symbol %s is undefined"
+msgstr "полазни симбол „%s“ није одређен"
+
+#: src/symtab.c:919
+#, c-format
+msgid "the start symbol %s is a token"
+msgstr "полазни симбол „%s“ је обележје"
+
+#: src/symtab.c:935
+#, c-format
+msgid "redeclaration for default tagged %%destructor"
+msgstr "поновна објава за основног означеног %%уништавача"
+
+#: src/symtab.c:950
+#, c-format
+msgid "redeclaration for default tagless %%destructor"
+msgstr "поновна објава за основног неозначеног %%уништавача"
+
+#: src/symtab.c:965
+#, c-format
+msgid "redeclaration for default tagged %%printer"
+msgstr "поновна објава за основног означеног %%штампача"
+
+#: src/symtab.c:980
+#, c-format
+msgid "redeclaration for default tagless %%printer"
+msgstr "поновна објава за основног неозначеног %%штампача"
+
+#: djgpp/subpipe.c:63 djgpp/subpipe.c:286 djgpp/subpipe.c:288
+#, c-format
+msgid "removing of '%s' failed"
+msgstr "није успело уклањање „%s“"
+
+#: djgpp/subpipe.c:85 djgpp/subpipe.c:92
+#, c-format
+msgid "creation of a temporary file failed"
+msgstr "стварање привремене датотеке није успело"
+
+#: djgpp/subpipe.c:127
+#, c-format
+msgid "saving stdin failed"
+msgstr "чување стандардног улаза није успело"
+
+#: djgpp/subpipe.c:131
+#, c-format
+msgid "saving stdout failed"
+msgstr "чување стандардног излаза није успело"
+
+#: djgpp/subpipe.c:153 djgpp/subpipe.c:197 djgpp/subpipe.c:258
+#, c-format
+msgid "opening of tmpfile failed"
+msgstr "отварање привремене датотеке није успело"
+
+#: djgpp/subpipe.c:157
+#, c-format
+msgid "redirecting bison's stdout to the temporary file failed"
+msgstr ""
+"преусмеравање бизоновог стандардног излаза на привремену датотеку није успело"
+
+#: djgpp/subpipe.c:201
+#, c-format
+msgid "redirecting m4's stdin from the temporary file failed"
+msgstr "преусмеравање м4 стандардног улаза из привремене датотеке није успело"
+
+#: djgpp/subpipe.c:212
+#, c-format
+msgid "opening of a temporary file failed"
+msgstr "отварање привремене датотеке није успело"
+
+#: djgpp/subpipe.c:218
+#, c-format
+msgid "redirecting m4's stdout to a temporary file failed"
+msgstr "преусмеравање м4 стандардног излаза на привремену датотеку није успело"
+
+#: djgpp/subpipe.c:234
+#, c-format
+msgid "subsidiary program '%s' interrupted"
+msgstr "прекинут је припомоћни програм „%s“"
+
+#: djgpp/subpipe.c:241
+#, c-format
+msgid "subsidiary program '%s' not found"
+msgstr "није пронађен припомоћни програм „%s“"
+
+#: djgpp/subpipe.c:265
+#, c-format
+msgid "redirecting bison's stdin from the temporary file failed"
+msgstr ""
+"преусмеравање бизоновог стандардног улаза из привремене датотеке није успело"
+
+#: lib/argmatch.c:133
+#, c-format
+msgid "invalid argument %s for %s"
+msgstr "неисправан аргумент „%s“ за „%s“"
+
+#: lib/argmatch.c:134
+#, c-format
+msgid "ambiguous argument %s for %s"
+msgstr "нејасан аргумент „%s“ за „%s“"
+
+#: lib/argmatch.c:153
+msgid "Valid arguments are:"
+msgstr "Исправни аргументи су:"
+
+#: lib/bitset_stats.c:177
+#, c-format
+msgid "%u bitset_allocs, %u freed (%.2f%%).\n"
+msgstr "%u bitset_allocs, %u ослобођено (%.2f%%).\n"
+
+#: lib/bitset_stats.c:180
+#, c-format
+msgid "%u bitset_sets, %u cached (%.2f%%)\n"
+msgstr "%u bitset_sets, %u у остави (%.2f%%)\n"
+
+#: lib/bitset_stats.c:183
+#, c-format
+msgid "%u bitset_resets, %u cached (%.2f%%)\n"
+msgstr "%u bitset_resets, %u у остави (%.2f%%)\n"
+
+#: lib/bitset_stats.c:186
+#, c-format
+msgid "%u bitset_tests, %u cached (%.2f%%)\n"
+msgstr "%u bitset_tests, %u у остави (%.2f%%)\n"
+
+#: lib/bitset_stats.c:190
+#, c-format
+msgid "%u bitset_lists\n"
+msgstr "%u bitset_lists\n"
+
+#: lib/bitset_stats.c:192
+msgid "count log histogram\n"
+msgstr "хистограм дневника бројања\n"
+
+#: lib/bitset_stats.c:195
+msgid "size log histogram\n"
+msgstr "хистограм дневника величине\n"
+
+#
+#: lib/bitset_stats.c:198
+msgid "density histogram\n"
+msgstr "хистограм густине\n"
+
+#: lib/bitset_stats.c:212
+#, c-format
+msgid ""
+"Bitset statistics:\n"
+"\n"
+msgstr ""
+"Статистика подешавања бита:\n"
+"\n"
+
+#: lib/bitset_stats.c:215
+#, c-format
+msgid "Accumulated runs = %u\n"
+msgstr "Укупно покретања = %u\n"
+
+#: lib/bitset_stats.c:259 lib/bitset_stats.c:264
+msgid "cannot read stats file"
+msgstr "не могу да прочитам датотеку статистике"
+
+#: lib/bitset_stats.c:261
+#, c-format
+msgid "bad stats file size\n"
+msgstr "лоша величина датотеке статистике\n"
+
+#: lib/bitset_stats.c:287 lib/bitset_stats.c:289
+msgid "cannot write stats file"
+msgstr "не могу да упишем датотеку статистике"
+
+#: lib/bitset_stats.c:292
+msgid "cannot open stats file for writing"
+msgstr "не могу да отворим датотеку статистике за упис"
+
+#: lib/closeout.c:112
+msgid "write error"
+msgstr "грешка уписа"
+
+#: lib/error.c:188
+msgid "Unknown system error"
+msgstr "Непозната грешка система"
+
+#: lib/getopt.c:547 lib/getopt.c:576
+#, c-format
+msgid "%s: option '%s' is ambiguous; possibilities:"
+msgstr "%s: опција „%s“ је нејасна; могућности:"
+
+#: lib/getopt.c:624 lib/getopt.c:628
+#, c-format
+msgid "%s: option '--%s' doesn't allow an argument\n"
+msgstr "%s: опција „--%s“ не дозвољава аргумент\n"
+
+#: lib/getopt.c:637 lib/getopt.c:642
+#, c-format
+msgid "%s: option '%c%s' doesn't allow an argument\n"
+msgstr "%s: опција „%c%s“ не дозвољава аргумент\n"
+
+#: lib/getopt.c:685 lib/getopt.c:704
+#, c-format
+msgid "%s: option '--%s' requires an argument\n"
+msgstr "%s: опција „--%s“ захтева аргумент\n"
+
+#: lib/getopt.c:742 lib/getopt.c:745
+#, c-format
+msgid "%s: unrecognized option '--%s'\n"
+msgstr "%s: непозната опција „--%s“\n"
+
+#: lib/getopt.c:753 lib/getopt.c:756
+#, c-format
+msgid "%s: unrecognized option '%c%s'\n"
+msgstr "%s: непозната опција „%c%s“\n"
+
+#: lib/getopt.c:805 lib/getopt.c:808
+#, c-format
+msgid "%s: invalid option -- '%c'\n"
+msgstr "%s: неисправна опција -- „%c“\n"
+
+#: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106
+#, c-format
+msgid "%s: option requires an argument -- '%c'\n"
+msgstr "%s: опција захтева аргумент -- „%c“\n"
+
+#: lib/getopt.c:934 lib/getopt.c:950
+#, c-format
+msgid "%s: option '-W %s' is ambiguous\n"
+msgstr "%s: опција „-W %s“ је нејасна\n"
+
+#: lib/getopt.c:974 lib/getopt.c:992
+#, c-format
+msgid "%s: option '-W %s' doesn't allow an argument\n"
+msgstr "%s: опција „-W %s“ не дозвољава аргумент\n"
+
+#: lib/getopt.c:1013 lib/getopt.c:1031
+#, c-format
+msgid "%s: option '-W %s' requires an argument\n"
+msgstr "%s: опција „-W %s“ захтева аргумент\n"
+
+#: lib/obstack.c:413 lib/obstack.c:415 lib/xalloc-die.c:34
+msgid "memory exhausted"
+msgstr "меморија је потрошена"
+
+#
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
+#, c-format
+msgid "cannot create pipe"
+msgstr "не могу да направим спојку"
+
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
+#: lib/wait-process.c:356
+#, c-format
+msgid "%s subprocess failed"
+msgstr "%s потпроцес није успео"
+
+#. TRANSLATORS:
+#. Get translations for open and closing quotation marks.
+#. The message catalog should translate "`" to a left
+#. quotation mark suitable for the locale, and similarly for
+#. "'".  For example, a French Unicode local should translate
+#. these to U+00AB (LEFT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), and U+00BB (RIGHT-POINTING DOUBLE ANGLE
+#. QUOTATION MARK), respectively.
+#.
+#. If the catalog has no translation, we will try to
+#. use Unicode U+2018 (LEFT SINGLE QUOTATION MARK) and
+#. Unicode U+2019 (RIGHT SINGLE QUOTATION MARK).  If the
+#. current locale is not Unicode, locale_quoting_style
+#. will quote 'like this', and clocale_quoting_style will
+#. quote "like this".  You should always include translations
+#. for "`" and "'" even if U+2018 and U+2019 are appropriate
+#. for your locale.
+#.
+#. If you don't know what to put here, please see
+#. <http://en.wikipedia.org/wiki/Quotation_marks_in_other_languages>
+#. and use glyphs suitable for your language.
+#: lib/quotearg.c:312
+msgid "`"
+msgstr "„"
+
+#: lib/quotearg.c:313
+msgid "'"
+msgstr "“"
+
+#: lib/timevar.c:475
+msgid ""
+"\n"
+"Execution times (seconds)\n"
+msgstr ""
+"\n"
+"Времена извршавања (у секундама)\n"
+
+#: lib/timevar.c:525
+msgid " TOTAL                 :"
+msgstr " УКУПНО                :"
+
+#: lib/timevar.c:561
+#, c-format
+msgid "time in %s: %ld.%06ld (%ld%%)\n"
+msgstr "време у %s: %ld.%06ld (%ld%%)\n"
+
+#: lib/w32spawn.h:43
+#, c-format
+msgid "_open_osfhandle failed"
+msgstr "„_open_osfhandle“ није успело"
+
+#: lib/w32spawn.h:84
+#, c-format
+msgid "cannot restore fd %d: dup2 failed"
+msgstr "не могу да повратим фд %d: „dup2“ није успело"
+
+#: lib/wait-process.c:223 lib/wait-process.c:255 lib/wait-process.c:317
+#, c-format
+msgid "%s subprocess"
+msgstr "%s потпроцес"
+
+#: lib/wait-process.c:274 lib/wait-process.c:346
+#, c-format
+msgid "%s subprocess got fatal signal %d"
+msgstr "%s потпроцес је добио кобни сигнал %d"
+
+#~ msgid "state %d"
+#~ msgstr "стање %d"
+
+#~ msgid "stray '@'"
+#~ msgstr "залутало „@“"
index 6ba62cf..977a741 100644 (file)
Binary files a/po/sv.gmo and b/po/sv.gmo differ
index a518138..03e0c1a 100644 (file)
--- a/po/sv.po
+++ b/po/sv.po
@@ -1,46 +1,50 @@
 # Swedish messages for bison.
-# Copyright © 2001-2006, 2008, 2010, 2011, 2012 Free Software Foundation, Inc.
+# Copyright Â© 2001-2006, 2008, 2010, 2011, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
-# Göran Uddeborg <goeran@uddeborg.se>, 2001-2006, 2008, 2010, 2011, 2012.
+# Göran Uddeborg <goeran@uddeborg.se>, 2001-2006, 2008, 2010, 2011, 2012.
 #
-# $Revision: 1.80 $
+# $Revision: 1.88 $
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 21:06+0100\n"
+"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "varning"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "fel"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
-msgstr "ödesdigert fel"
+msgstr "ödesdigert fel"
 
 #: src/conflicts.c:77
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as shift"
-msgstr "    Konflikt mellan regel %d och element %s löstes som skift"
+msgstr "    Konflikt mellan regel %d och element %s löstes som skift"
 
 #: src/conflicts.c:86
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as reduce"
-msgstr "    Konflikt mellan regel %d och element %s löstes som reducera"
+msgstr "    Konflikt mellan regel %d och element %s löstes som reducera"
 
 #: src/conflicts.c:94
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as an error"
-msgstr "    Konflikt mellan regel %d och element %s löstes som ett fel"
+msgstr "    Konflikt mellan regel %d och element %s löstes som ett fel"
 
 #: src/conflicts.c:492
 #, c-format
@@ -60,31 +64,31 @@ msgstr "konflikter: %d reducera/reducera\n"
 #: src/conflicts.c:515
 #, c-format
 msgid "State %d "
-msgstr "Tillstånd %d "
+msgstr "Tillstånd %d "
 
 #: src/conflicts.c:582
 #, c-format
 msgid "%%expect-rr applies only to GLR parsers"
-msgstr "%%expect-rr gäller endast GLR-parsrar"
+msgstr "%%expect-rr gäller endast GLR-parsrar"
 
 #: src/conflicts.c:616
 #, c-format
 msgid "expected %d shift/reduce conflict"
 msgid_plural "expected %d shift/reduce conflicts"
-msgstr[0] "förväntade %d skifta/reducerakonflikt"
-msgstr[1] "förväntade %d skifta/reducerakonflikter"
+msgstr[0] "förväntade %d skifta/reducerakonflikt"
+msgstr[1] "förväntade %d skifta/reducerakonflikter"
 
 #: src/conflicts.c:621
 #, c-format
 msgid "expected %d reduce/reduce conflict"
 msgid_plural "expected %d reduce/reduce conflicts"
-msgstr[0] "förväntade %d reducera/reducerakonflikt"
-msgstr[1] "förväntade %d reducera/reducerakonflikter"
+msgstr[0] "förväntade %d reducera/reducerakonflikt"
+msgstr[1] "förväntade %d reducera/reducerakonflikter"
 
 #: src/files.c:114
 #, c-format
 msgid "%s: cannot open"
-msgstr "%s: kan inte öppna"
+msgstr "%s: kan inte öppna"
 
 #: src/files.c:130
 #, c-format
@@ -94,29 +98,29 @@ msgstr "in-/utfel"
 #: src/files.c:133
 #, c-format
 msgid "cannot close file"
-msgstr "kan inte stänga fil"
+msgstr "kan inte stänga fil"
 
 #: src/files.c:352
 #, c-format
 msgid "refusing to overwrite the input file %s"
-msgstr "vägrar att skriva över indatafilen %s"
+msgstr "vägrar att skriva över indatafilen %s"
 
 #: src/files.c:362
 #, c-format
 msgid "conflicting outputs to file %s"
 msgstr "motstridiga utmatningar till filen %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
-msgstr "Försök med \"%s --help\" för mer information.\n"
+msgstr "Försök med \"%s --help\" för mer information.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
-msgstr "Användning: %s [FLAGGA]... FIL\n"
+msgstr "Användning: %s [FLAGGA]... FIL\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -124,22 +128,22 @@ msgid ""
 "\n"
 msgstr ""
 "Generera en deterministisk LR- eller generaliserad LR- (GLR-)parser som\n"
-"använder LALR(1), IELR(1) eller kanonisk LR(1) parsningstabeller.  Stöd\n"
-"för IELR(1) och kanonisk LR(1) är experimentellt.\n"
+"använder LALR(1), IELR(1) eller kanonisk LR(1) parsningstabeller.  Stöd\n"
+"för IELR(1) och kanonisk LR(1) är experimentellt.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
-"Obligatoriska argument till långa flaggor är obligatoriska även för de "
+"Obligatoriska argument till långa flaggor är obligatoriska även för de "
 "korta.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
-msgstr "Detsamma gäller valfria argument.\n"
+msgstr "Detsamma gäller valfria argument.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -150,27 +154,28 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
-"Arbetslägen:\n"
-"  -h, --help                 visa denna hjälptext och avsluta\n"
+"Arbetslägen:\n"
+"  -h, --help                 visa denna hjälptext och avsluta\n"
 "  -V, --version              visa versionsinformation och avsluta\n"
-"      --print-localedir      skriv katalogen som innehåller lokalberoende "
+"      --print-localedir      skriv katalogen som innehåller lokalberoende "
 "data\n"
-"      --print-datadir        skriv katalogen som innehåller skelett och "
+"      --print-datadir        skriv katalogen som innehåller skelett och "
 "XSLT\n"
 "  -y, --yacc                 emulera POSIX-Yacc\n"
 "  -W, --warnings[=KATEGORI]  rapportera varningarna som faller inom "
 "KATEGORI\n"
+"  -f, --feature[=FUNKTION]   aktivera diverse funktioner\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -180,24 +185,21 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Parser:\n"
-"  -L, --language=SPRÅK             ange programspråk för utmatning\n"
-"                                   (detta är en experimentell funktion)\n"
-"  -S, --skeleton=FIL               ange skelettfilen som skall användas\n"
-"  -t, --debug                      instrumentera parsern för felsökning\n"
-"      --locations                  aktivera stöd för lägen\n"
-"  -D, --define=NAMN[=VÄRDE]        motsvarar '%define NAMN \"VÄRDE\"'\n"
-"  -F, --force-define=NAMN[=VÄRDE]  åsidosätt '%define NAMN \"VÄRDE\"'\n"
-"  -p, --name-prefix=PREFIX         lägg till PREFIX före externa symboler\n"
-"                                   undanbedes till förmån för\n"
+"  -L, --language=SPRÅK             ange programspråk för utmatning\n"
+"  -S, --skeleton=FIL               ange skelettfilen som skall användas\n"
+"  -t, --debug                      instrumentera parsern för felsökning\n"
+"      --locations                  aktivera stöd för lägen\n"
+"  -D, --define=NAMN[=VÄRDE]        motsvarar '%define NAMN \"VÄRDE\"'\n"
+"  -F, --force-define=NAMN[=VÄRDE]  åsidosätt '%define NAMN \"VÄRDE\"'\n"
+"  -p, --name-prefix=PREFIX         lägg till PREFIX före externa symboler\n"
+"                                   undanbedes till förmån för\n"
 "                                   '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   generera inte \"#line\"-direktiv\n"
-"  -k, --token-table                inkludera en tabell över elementnamn\n"
-"\n"
+"  -k, --token-table                inkludera en tabell över elementnamn\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -211,49 +213,47 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Utdata:\n"
-"      --defines[=FIL]        skapa också en huvudfil\n"
-"  -d                         detsamma, utan att kunna ange FIL (för POSIX-"
+"      --defines[=FIL]        skapa också en huvudfil\n"
+"  -d                         detsamma, utan att kunna ange FIL (för POSIX-"
 "Yacc)\n"
-"  -r, --report=SAKER         skapa också detaljer om automaten\n"
+"  -r, --report=SAKER         skapa också detaljer om automaten\n"
 "      --report-file=FIL      skriv en rapport till FIL\n"
 "  -v, --verbose              samma som \"--report=state\"\n"
-"  -b, --file-prefix=PREFIX   ange ett PREFIX för utdatafiler\n"
-"  -o, --output=FIL           lägg utdata i FIL\n"
-"  -g, --graph[=FIL]          skapa också en graf av automaten\n"
-"  -x, --xml[=FIL]            skapa också en XML-rapport om automaten\n"
-"                             (XML-schemat är experimentellt)\n"
-"\n"
+"  -b, --file-prefix=PREFIX   ange ett PREFIX för utdatafiler\n"
+"  -o, --output=FIL           lägg utdata i FIL\n"
+"  -g, --graph[=FIL]          skapa också en graf av automaten\n"
+"  -x, --xml[=FIL]            skapa också en XML-rapport om automaten\n"
+"                             (XML-schemat är experimentellt)\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Varningskategorier innefattar:\n"
-"  \"midrule-values\"  ej satta eller oanvända värden mitt i regler\n"
+"  \"midrule-values\"  ej satta eller oanvända värden mitt i regler\n"
 "  \"yacc\"            inkompatibiliteter med POSIX Yacc\n"
 "  \"conflicts-sr\"    S/R-konflikter (normalt aktivt)\n"
 "  \"conflicts-rr\"    R/R-konflikter (normalt aktivt)\n"
+"  \"deprecated\"      föråldrade konstruktioner\n"
 "  \"other\"           alla andra varningar (normalt aktivt)\n"
 "  \"all\"             alla varningarna\n"
-"  \"no-KATEGORI\"     slå av varningar i KATEGORI\n"
-"  \"none\"            slå av alla varningarna\n"
+"  \"no-KATEGORI\"     slå av varningar i KATEGORI\n"
+"  \"none\"            slå av alla varningarna\n"
 "  \"error\"           behandla varningar som fel\n"
-"\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -263,67 +263,100 @@ msgid ""
 "  `all'          include all the above information\n"
 "  `none'         disable the report\n"
 msgstr ""
-"SAKER är en lista med kommaseparerade ord som kan innehålla:\n"
-"  \"state\"        beskriv tillstånden\n"
-"  \"itemset\"      komplettera kärnobjektmängderna med sina höljen\n"
-"  \"lookahead\"    koppla uttryckligen framåtblickande element till objekt\n"
-"  \"solved\"       beskriv lösningar av skifta/reducerakonflikter\n"
-"  \"all\"          inkludera all ovanstående information\n"
+"SAKER är en lista med kommaseparerade ord som kan innehålla:\n"
+"  \"state\"        beskriv tillstånden\n"
+"  \"itemset\"      komplettera kärnobjektmängderna med sina höljen\n"
+"  \"lookahead\"    koppla uttryckligen framåtblickande element till objekt\n"
+"  \"solved\"       beskriv lösningar av skifta/reducerakonflikter\n"
+"  \"all\"          inkludera all ovanstående information\n"
 "  \"none\"         avaktivera rapporten\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Rapportera fel till <%s>.\n"
-"Rapportera synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+"FUNKTION är en lista av kommaseparerade ord som kan inkludera:\n"
+"  `caret'        visa alla fel med cirkumflex\n"
+"  `all'          alla ovanstående\n"
+"  `none'         avaktivera alla ovanstående\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Rapportera fel till <%s>.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s hemsida: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Allmän hjälp om att använda GNU-program: <http://www.gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Rapportera synpunkter på översättningen till <tp-sv@listor.tp-sv.se>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "För fullständig dokumentation, kör: info bison.\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Skriven av Robert Corbett och Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
-msgstr "Copyright © %d Free Software Foundation, Inc.\n"
+msgstr "Copyright Â© %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
-"Detta är fri programvara, se källkoden för kopieringsvillkor.  Det\n"
-"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
-"SPECIELLT ÄNDAMÅL.\n"
+"Detta är fri programvara, se källkoden för kopieringsvillkor.  Det\n"
+"finns INGEN garanti, inte ens för SÄLJBARHET eller LÄMPLIGHET FÖR ETT\n"
+"SPECIELLT ÄNDAMÅL.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
-msgstr "flera skelettdeklarationer är inte tillåtet"
+msgstr "flera skelettdeklarationer är inte tillåtet"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
-msgstr "%s: ogiltigt språk"
+msgstr "%s: ogiltigt språk"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
-msgstr "flera språkdeklarationer är inte tillåtet"
+msgstr "flera språkdeklarationer är inte tillåtet"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: saknad operand"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "extra operand %s"
@@ -336,7 +369,7 @@ msgstr "tom"
 msgid "Grammar"
 msgstr "Grammatik"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -349,7 +382,7 @@ msgstr ""
 "// Hemsida: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "radnummerspill"
@@ -361,40 +394,39 @@ msgstr "kolumnnummerspill"
 
 #: src/main.c:146
 msgid "rule useless in parser due to conflicts"
-msgstr "oanvändbar regel i parsern på grund av konflikter"
+msgstr "oanvändbar regel i parsern på grund av konflikter"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%define-variabeln %s omdefinierad"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
-msgstr "föregående definition"
+msgstr "föregående definition"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: odefinierad  %%define-variabel %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
-msgstr "ogiltigt värde för boolesk %%define-variabel %s"
+msgstr "ogiltigt värde för boolesk %%define-variabel %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
-msgstr "ogiltigt värde för %%define-variabeln %s: %s"
+msgstr "ogiltigt värde för %%define-variabeln %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
-msgstr "accepterat värde: %s"
+msgstr "accepterat värde: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "identiferare saknas i parameterdeklaration"
@@ -402,17 +434,17 @@ msgstr "identiferare saknas i parameterdeklaration"
 #: src/print.c:47
 #, c-format
 msgid " type %d is %s\n"
-msgstr " typ %d är %s\n"
+msgstr " typ %d är %s\n"
 
 #: src/print.c:164
 #, c-format
 msgid "shift, and go to state %d\n"
-msgstr "skifta, och gå till tillstånd %d\n"
+msgstr "skifta, och gå till tillstånd %d\n"
 
 #: src/print.c:166
 #, c-format
 msgid "go to state %d\n"
-msgstr "gå till tillstånd %d\n"
+msgstr "gå till tillstånd %d\n"
 
 #: src/print.c:203
 msgid "error (nonassociative)\n"
@@ -432,142 +464,141 @@ msgstr "acceptera"
 msgid "$default"
 msgstr "$standard"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "tillstånd %d"
+msgid "State %d"
+msgstr "Tillstånd %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
-msgstr "Terminaler, med regler där de förekommer"
+msgstr "Terminaler, med regler där de förekommer"
 
 #: src/print.c:436
 msgid "Nonterminals, with rules where they appear"
-msgstr "Icketerminaler, med regler där de förekommer"
+msgstr "Icketerminaler, med regler där de förekommer"
 
 #: src/print.c:465
 #, c-format
 msgid " on left:"
-msgstr " till vänster:"
+msgstr " till vänster:"
 
 #: src/print.c:482
 #, c-format
 msgid " on right:"
-msgstr " till höger:"
+msgstr " till höger:"
 
 #: src/print.c:510
 msgid "Rules useless in parser due to conflicts"
-msgstr "Oanvändbara regler i parser på grund av konflikter"
+msgstr "Oanvändbara regler i parser på grund av konflikter"
 
 #: src/reader.c:62
 #, c-format
 msgid "multiple %s declarations"
 msgstr "flera %s-deklarationer"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "resultattypskonflikt vid sammanslagningsfunktion %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
-msgstr "föregående deklaration"
+msgstr "föregående deklaration"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
-msgstr "duplicerat symbolnamn för %s ignorerat"
+msgstr "duplicerat symbolnamn för %s ignorerat"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
-msgstr "regel given för %s, som är ett element"
+msgstr "regel given för %s, som är ett element"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
-msgstr "typkonflikt för standardåtgärd: <%s> <%s>"
+msgstr "typkonflikt för standardåtgärd: <%s> <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
-msgstr "tom regel för typad icketerminal, och ingen åtgärd"
+msgstr "tom regel för typad icketerminal, och ingen åtgärd"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
-msgstr "oanvänt värde: $%d"
+msgstr "oanvänt värde: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
-msgstr "ej satt värde: $$"
+msgstr "ej satt värde: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
-msgstr "elementet för %%prec är inte definierat: %s"
+msgstr "elementet för %%prec är inte definierat: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
-msgstr "endast en %s tillåts per regel"
+msgstr "endast en %s tillåts per regel"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
-msgstr "%s påverkar endast GLR-parsrar"
+msgstr "%s påverkar endast GLR-parsrar"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
-msgstr "%s måste följas av ett positivt tal"
+msgstr "%s måste följas av ett positivt tal"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
-msgstr "regeln är för lång"
+msgstr "regeln är för lång"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "inga regler i ingrammatiken"
 
 #: src/reduce.c:241
 msgid "rule useless in grammar"
-msgstr "oanvändbar regel i grammatiken"
+msgstr "oanvändbar regel i grammatiken"
 
 #: src/reduce.c:302
 #, c-format
 msgid "nonterminal useless in grammar: %s"
-msgstr "oanvändbar icketerminal i grammatiken: %s"
+msgstr "oanvändbar icketerminal i grammatiken: %s"
 
 #: src/reduce.c:350
 msgid "Nonterminals useless in grammar"
-msgstr "Oanvändbara icketerminaler i grammatiken"
+msgstr "Oanvändbara icketerminaler i grammatiken"
 
 #: src/reduce.c:363
 msgid "Terminals unused in grammar"
-msgstr "Oanvända terminaler i grammatiken"
+msgstr "Oanvända terminaler i grammatiken"
 
 #: src/reduce.c:372
 msgid "Rules useless in grammar"
-msgstr "Oanvändbara regler i grammatiken"
+msgstr "Oanvändbara regler i grammatiken"
 
 #: src/reduce.c:385
 #, c-format
 msgid "%d nonterminal useless in grammar"
 msgid_plural "%d nonterminals useless in grammar"
-msgstr[0] "%d oanvändbar icketerminal i grammatiken"
-msgstr[1] "%d oanvändbara icketerminaler i grammatiken"
+msgstr[0] "%d oanvändbar icketerminal i grammatiken"
+msgstr[1] "%d oanvändbara icketerminaler i grammatiken"
 
 #: src/reduce.c:390
 #, c-format
 msgid "%d rule useless in grammar"
 msgid_plural "%d rules useless in grammar"
-msgstr[0] "%d oanvändbar regel i grammatiken"
-msgstr[1] "%d oanvändbara regler i grammatiken"
+msgstr[0] "%d oanvändbar regel i grammatiken"
+msgstr[1] "%d oanvändbara regler i grammatiken"
 
 #: src/reduce.c:419
 #, c-format
@@ -575,105 +606,103 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "startsymbolen %s genererar inga meningar"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "vilsekommet \"$\""
+msgstr "vilsekommet \"%s\""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
-msgstr "ett \";\" kan behövas i slutet av åtgärdskoden"
+msgstr "ett \";\" kan behövas i slutet av åtgärdskoden"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
-msgstr "framtida versioner av Bison kommer inte lägga till \";\""
+msgstr "framtida versioner av Bison kommer inte lägga till \";\""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, 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"
+msgstr "användning av YYFAIL, som avrådes ifrån och kommer tas bort"
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "refererar till: %c%s vid %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
-msgstr "möjligen avsett: %c"
+msgstr "möjligen avsett: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
-msgstr ", döljer %c"
+msgstr ", döljer %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " vid %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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"
+msgstr ", kan inte nås från åtgärd mitt i regeln vid $%d"
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
-msgstr "heltal utanför intervall: %s"
+msgstr "heltal utanför intervall: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "ogiltig referens: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
-"syntaxfel efter \"%c\", siffra, bokstav, \"_\", \"[\" eller \"$\" förväntades"
+"syntaxfel efter \"%c\", siffra, bokstav, \"_\", \"[\" eller \"$\" förväntades"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
-msgstr "symbol inte funnen i produktion före $%d: %.*s"
+msgstr "symbol inte funnen i produktion före $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "symbol inte funnen i produktion: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "vilseledande referens: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "tvetydigt argument: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "explicit typ given i otypad grammatik"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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"
+msgstr "$$ för mitt-i-regeln vid $%d av %s har ingen deklarerad typ"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
-msgstr "$$ för %s har ingen deklarerad typ"
+msgstr "$$ för %s har ingen deklarerad typ"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
-msgstr "$%s för %s har ingen deklarerad typ"
+msgstr "$%s för %s har ingen deklarerad typ"
 
 #: src/scan-gram.l:149
 #, c-format
@@ -690,57 +719,59 @@ msgstr "ogiltigt direktiv: %s"
 msgid "invalid identifier: %s"
 msgstr "ogiltig identifierare: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ogiltigt tecken: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ogiltigt tecken"
+msgstr[1] "ogiltiga tecken"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
-msgstr "oväntad identifierare i namn inom klamrar: %s"
+msgstr "oväntad identifierare i namn inom klamrar: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
-msgstr "en identifierare förväntades"
+msgstr "en identifierare förväntades"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ogiltigt tecken efter namn i klamrar: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ogiltigt tecken i namn i klamrar"
+msgstr[1] "ogiltiga tecken i namn i klamrar"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "tom teckenkonstant"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
-msgstr "extra bokstäver i teckenkonstant"
+msgstr "extra bokstäver i teckenkonstant"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ogiltigt nolltecken"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "ogiltigt tal efter \\-specialsekvens: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "ogiltigt tecken efter \\-specialsekvens: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "saknat %s vid filslut"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "saknat %s vid radslut"
@@ -753,106 +784,106 @@ msgstr "oavslutat %s-direktiv i skelettet"
 #: 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"
+msgstr "för få argument till %s-direktiv i skelettet"
 
 #: 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"
+msgstr "för många argument till %s-direktiv i skelettet"
 
 #: src/symlist.c:211
 #, c-format
 msgid "invalid $ value: $%d"
-msgstr "felaktigt $-värde: $%d"
+msgstr "felaktigt $-värde: $%d"
 
 #: src/symtab.c:71
 #, c-format
 msgid "POSIX Yacc forbids dashes in symbol names: %s"
-msgstr "POSIX-Yacc förbjuder bindestreck i symbolnamn: %s"
+msgstr "POSIX-Yacc förbjuder bindestreck i symbolnamn: %s"
 
 #: src/symtab.c:91
 #, c-format
 msgid "too many symbols in input grammar (limit is %d)"
-msgstr "för många symboler i ingrammatiken (gränsen är %d)"
+msgstr "för många symboler i ingrammatiken (gränsen är %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
-msgstr "%s-omdeklaration för %s"
+msgstr "%s-omdeklaration för %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
-msgstr "%s-omdeklaration för <%s>"
+msgstr "%s-omdeklaration för <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "symbolen %s omdefinierad"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "symbolen %s omdeklarerad"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
-msgstr "omdefinition av elementnummer för %s"
+msgstr "omdefinition av elementnummer för %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
-"symbolen %s används, men är inte definierad som ett element och har inga "
+"symbolen %s används, men är inte definierad som ett element och har inga "
 "regler"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
-msgstr "symbolen %s används mer än en gång som en bokstavlig sträng"
+msgstr "symbolen %s används mer än en gång som en bokstavlig sträng"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
-msgstr "symbolen %s har fått mer än en bokstavlig sträng"
+msgstr "symbolen %s har fått mer än en bokstavlig sträng"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
-msgstr "användarsymbol nummer %d omdeklarerad för %s"
+msgstr "användarsymbol nummer %d omdeklarerad för %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
-msgstr "föregående deklaration för %s"
+msgstr "föregående deklaration för %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
-msgstr "startsymbolen %s är odefinierad"
+msgstr "startsymbolen %s är odefinierad"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
-msgstr "startsymbolen %s är ett element"
+msgstr "startsymbolen %s är ett element"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "omdeklaration av standard-%%destructor med tagg"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "omdeklaration av standard-%%destructor utan tagg"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "omdeklaration av standard-%%printer med tagg"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "omdeklaration av standard-%%printer utan tagg"
@@ -865,7 +896,7 @@ msgstr "att ta bort \"%s\" misslyckades"
 #: djgpp/subpipe.c:85 djgpp/subpipe.c:92
 #, c-format
 msgid "creation of a temporary file failed"
-msgstr "att skapa en temporärfil misslyckades"
+msgstr "att skapa en temporärfil misslyckades"
 
 #: djgpp/subpipe.c:127
 #, c-format
@@ -880,32 +911,32 @@ msgstr "att spara standard ut misslyckades"
 #: djgpp/subpipe.c:153 djgpp/subpipe.c:197 djgpp/subpipe.c:258
 #, c-format
 msgid "opening of tmpfile failed"
-msgstr "att öppna en temporärfil misslyckades"
+msgstr "att öppna en temporärfil misslyckades"
 
 #: djgpp/subpipe.c:157
 #, c-format
 msgid "redirecting bison's stdout to the temporary file failed"
-msgstr "omdirigering av bisons standard ut till temporärfilen misslyckades"
+msgstr "omdirigering av bisons standard ut till temporärfilen misslyckades"
 
 #: djgpp/subpipe.c:201
 #, c-format
 msgid "redirecting m4's stdin from the temporary file failed"
-msgstr "omdirigering av m4:as standard in från temporärfilen misslyckades"
+msgstr "omdirigering av m4:as standard in från temporärfilen misslyckades"
 
 #: djgpp/subpipe.c:212
 #, c-format
 msgid "opening of a temporary file failed"
-msgstr "att öppna en temporärfil misslyckades"
+msgstr "att öppna en temporärfil misslyckades"
 
 #: djgpp/subpipe.c:218
 #, c-format
 msgid "redirecting m4's stdout to a temporary file failed"
-msgstr "omdirigering av m4:as standard ut till en temporärfil misslyckades"
+msgstr "omdirigering av m4:as standard ut till en temporärfil misslyckades"
 
 #: djgpp/subpipe.c:234
 #, c-format
 msgid "subsidiary program '%s' interrupted"
-msgstr "underprogrammet \"%s\" avbröts"
+msgstr "underprogrammet \"%s\" avbröts"
 
 #: djgpp/subpipe.c:241
 #, c-format
@@ -915,7 +946,7 @@ msgstr "underprogrammet \"%s\" finns inte"
 #: djgpp/subpipe.c:265
 #, c-format
 msgid "redirecting bison's stdin from the temporary file failed"
-msgstr "omdirigering av bisons standard in från temporärfilen misslyckades"
+msgstr "omdirigering av bisons standard in från temporärfilen misslyckades"
 
 #: lib/argmatch.c:133
 #, c-format
@@ -929,32 +960,32 @@ msgstr "tvetydigt argument %s till %s"
 
 #: lib/argmatch.c:153
 msgid "Valid arguments are:"
-msgstr "Giltiga argument är:"
+msgstr "Giltiga argument är:"
 
 #: lib/bitset_stats.c:177
 #, c-format
 msgid "%u bitset_allocs, %u freed (%.2f%%).\n"
-msgstr "%u bitmängdallokeringar, %u frianden (%.2f%%).\n"
+msgstr "%u bitmängdallokeringar, %u frianden (%.2f%%).\n"
 
 #: lib/bitset_stats.c:180
 #, c-format
 msgid "%u bitset_sets, %u cached (%.2f%%)\n"
-msgstr "%u bitmängdmängder, %u cachade (%.2f%%)\n"
+msgstr "%u bitmängdmängder, %u cachade (%.2f%%)\n"
 
 #: lib/bitset_stats.c:183
 #, c-format
 msgid "%u bitset_resets, %u cached (%.2f%%)\n"
-msgstr "%u bitmängdåterställanden, %u cachade (%.2f%%)\n"
+msgstr "%u bitmängdåterställanden, %u cachade (%.2f%%)\n"
 
 #: lib/bitset_stats.c:186
 #, c-format
 msgid "%u bitset_tests, %u cached (%.2f%%)\n"
-msgstr "%u bitmängdtester, %u cachade (%.2f%%)\n"
+msgstr "%u bitmängdtester, %u cachade (%.2f%%)\n"
 
 #: lib/bitset_stats.c:190
 #, c-format
 msgid "%u bitset_lists\n"
-msgstr "%u bitmängdlistor\n"
+msgstr "%u bitmängdlistor\n"
 
 #: lib/bitset_stats.c:192
 msgid "count log histogram\n"
@@ -974,22 +1005,22 @@ msgid ""
 "Bitset statistics:\n"
 "\n"
 msgstr ""
-"Bitmängdsstatistik:\n"
+"Bitmängdsstatistik:\n"
 "\n"
 
 #: lib/bitset_stats.c:215
 #, c-format
 msgid "Accumulated runs = %u\n"
-msgstr "Ackumulerade körningar = %u\n"
+msgstr "Ackumulerade körningar = %u\n"
 
 #: lib/bitset_stats.c:259 lib/bitset_stats.c:264
 msgid "cannot read stats file"
-msgstr "kan inte läsa statistikfilen"
+msgstr "kan inte läsa statistikfilen"
 
 #: lib/bitset_stats.c:261
 #, c-format
 msgid "bad stats file size\n"
-msgstr "dålig statistikfilstorlek\n"
+msgstr "dålig statistikfilstorlek\n"
 
 #: lib/bitset_stats.c:287 lib/bitset_stats.c:289
 msgid "cannot write stats file"
@@ -997,7 +1028,7 @@ msgstr "kan inte skriva statistikfilen"
 
 #: lib/bitset_stats.c:292
 msgid "cannot open stats file for writing"
-msgstr "kan inte öppna statistikfil för skrivning"
+msgstr "kan inte öppna statistikfil för skrivning"
 
 #: lib/closeout.c:112
 msgid "write error"
@@ -1005,12 +1036,12 @@ msgstr "skrivfel"
 
 #: lib/error.c:188
 msgid "Unknown system error"
-msgstr "Okänt systemfel"
+msgstr "Okänt systemfel"
 
 #: lib/getopt.c:547 lib/getopt.c:576
 #, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: flaggan \"%s\" är mångtydig; möjligheter:"
+msgstr "%s: flaggan \"%s\" är mångtydig; möjligheter:"
 
 #: lib/getopt.c:624 lib/getopt.c:628
 #, c-format
@@ -1025,17 +1056,17 @@ msgstr "%s: flaggan \"%c%s\" tar inget argument\n"
 #: lib/getopt.c:685 lib/getopt.c:704
 #, c-format
 msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: flaggan \"--%s\" behöver ett argument\n"
+msgstr "%s: flaggan \"--%s\" behöver ett argument\n"
 
 #: lib/getopt.c:742 lib/getopt.c:745
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: okänd flagga \"--%s\"\n"
+msgstr "%s: okänd flagga \"--%s\"\n"
 
 #: lib/getopt.c:753 lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: okänd flagga \"%c%s\"\n"
+msgstr "%s: okänd flagga \"%c%s\"\n"
 
 #: lib/getopt.c:805 lib/getopt.c:808
 #, c-format
@@ -1045,12 +1076,12 @@ msgstr "%s: ogiltig flagga --\"%c\"\n"
 #: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: flaggan behöver ett argument -- \"%c\"\n"
+msgstr "%s: flaggan behöver ett argument -- \"%c\"\n"
 
 #: lib/getopt.c:934 lib/getopt.c:950
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
+msgstr "%s: flaggan \"-W %s\" är tvetydig\n"
 
 #: lib/getopt.c:974 lib/getopt.c:992
 #, c-format
@@ -1060,26 +1091,26 @@ msgstr "%s: flaggan \"-W %s\" tar inget argument\n"
 #: lib/getopt.c:1013 lib/getopt.c:1031
 #, c-format
 msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: flaggan \"-W %s\" behöver ett argument\n"
+msgstr "%s: flaggan \"-W %s\" behöver ett argument\n"
 
 #: lib/obstack.c:413 lib/obstack.c:415 lib/xalloc-die.c:34
 msgid "memory exhausted"
 msgstr "minnet slut"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
-msgstr "kan inte skapa rör"
+msgstr "kan inte skapa rör"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
 msgstr "%s-underprocess misslyckades"
 
-# När vi går över till Unicode mer allmänt kanske vi bör översätta båda dessa
-# med U+201D (RIGHT DOUBLE QUOTATION MARK) på svenska.  Eller?
+# När vi går över till Unicode mer allmänt kanske vi bör översätta båda dessa
+# med U+201D (RIGHT DOUBLE QUOTATION MARK) på svenska.  Eller?
 #
 #. TRANSLATORS:
 #. Get translations for open and closing quotation marks.
@@ -1135,7 +1166,7 @@ msgstr "_open_osfhandle misslyckades"
 #: lib/w32spawn.h:84
 #, c-format
 msgid "cannot restore fd %d: dup2 failed"
-msgstr "det går inte att återställa fb %d: dup2 misslyckades"
+msgstr "det går inte att återställa fb %d: dup2 misslyckades"
 
 #: lib/wait-process.c:223 lib/wait-process.c:255 lib/wait-process.c:317
 #, c-format
@@ -1145,7 +1176,4 @@ msgstr "%s-underprocess"
 #: lib/wait-process.c:274 lib/wait-process.c:346
 #, c-format
 msgid "%s subprocess got fatal signal %d"
-msgstr "%s-underprocess fick en ödesdiger signal %d"
-
-#~ msgid "stray '@'"
-#~ msgstr "vilsekommet \"@\""
+msgstr "%s-underprocess fick en ödesdiger signal %d"
index be7cd36..f7d626c 100644 (file)
Binary files a/po/tr.gmo and b/po/tr.gmo differ
index f309ab9..c473ecc 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,12 +17,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "uyarý"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "G/Ç hatasý"
+
+#: src/complain.c:208 src/complain.c:215
 #, fuzzy
 msgid "fatal error"
 msgstr "ölümcül hata: "
@@ -104,17 +109,17 @@ msgstr ""
 msgid "conflicting outputs to file %s"
 msgstr "%s dosyasýna çeliþen çýktýlar"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Daha fazla bilgi için `%s --help' yazýn.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Kullaným: %s [SEÇENEK]... DOSYA\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -122,16 +127,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr ""
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 #, fuzzy
 msgid ""
 "\n"
@@ -143,6 +148,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "Çalýþma kipleri:\n"
@@ -150,12 +156,11 @@ msgstr ""
 "  -V, --version   sürüm bilgisini ver ve çýk\n"
 "  -y, --yacc      POSIX yacc öykünmesi\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, fuzzy, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -165,7 +170,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Ayrýþtýrýcý:\n"
 "  -S, --skeleton=FILE        kullanýlacak iskeleti belirt\n"
@@ -176,7 +180,7 @@ msgstr ""
 "  -n, --no-parser            sadece tablolarý üret\n"
 "  -k, --token-table          andaç isimlerinin bir tablosunu içer\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 #, fuzzy
 msgid ""
 "Output:\n"
@@ -191,7 +195,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Çýktý:\n"
 "  -d, --defines              bir baþlýk dosyasý da üret\n"
@@ -201,23 +204,23 @@ msgstr ""
 "  -o, --output=DOSYA         çýktýyý DOSYAya yaz\n"
 "  -g, --graph                otomatýn bir VCG grafik açýklamasýný da üret\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
 # DUZELT: cevrilmemis iki mesaj var
-#: src/getargs.c:354
+#: src/getargs.c:376
 #, fuzzy
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
@@ -236,30 +239,59 @@ msgstr ""
 "  `all'          yukarýdaki bilgilerini tümünü gosterir\n"
 "  `none'         raporu üretme\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "Hatalarý <bug-bison@gnu.org>'a,\n"
 "çeviri hatalarýný <gnu-tr-u12a@lists.sourceforge.net>'e bildirin.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Yazanlar: Robert Corbett ve Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Telif Hakký (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -268,27 +300,27 @@ msgstr ""
 "Hiçbir garantisi yoktur; hatta SATILABÝLÝRLÝÐÝ veya ÞAHSÝ KULLANIMINIZA\n"
 "UYGUNLUÐU için bile garanti verilmez.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, fuzzy, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "çoklu %s bildirimleri"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "geçersiz karakter: %s"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 #, fuzzy
 msgid "multiple language declarations are invalid"
 msgstr "çoklu %s bildirimleri"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "`%s'ten sonra eksik iþleç"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "fazla iþleç: `%s'"
@@ -301,7 +333,7 @@ msgstr "bo
 msgid "Grammar"
 msgstr "Gramer"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -310,7 +342,7 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr ""
@@ -325,38 +357,38 @@ msgstr ""
 msgid "rule useless in parser due to conflicts"
 msgstr "çeliskiler yüzünden kural indirgenemedi"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "%s simgesi tekrar tanýmlanmýþ"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
+#, fuzzy
 msgid "previous definition"
 msgstr "ilk bildirim"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr ""
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr ""
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "geçersiz deðer: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "parametre bildiriminde eksik tanýtýcý"
@@ -394,10 +426,10 @@ msgstr "onayla"
 msgid "$default"
 msgstr "$öntanýmlý"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
-msgstr "durum %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
+msgstr "Durum %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -427,73 +459,73 @@ msgstr "
 msgid "multiple %s declarations"
 msgstr "çoklu %s bildirimleri"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, fuzzy, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "birleþtirme iþlevi `%s'de tip çatýþmasý: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, fuzzy, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
+#, fuzzy
 msgid "previous declaration"
 msgstr "ilk bildirim"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "bir andaç olan %s için kural verilmiþ"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "öntanýmlý eylem üzerinde tip çatýþmasý: `%s' != `%s'"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "Tipli deðiþken simge için boþ kural tanýmlanmýþ, ve eylem belirtilmemiþ"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, fuzzy, c-format
 msgid "unused value: $%d"
 msgstr "geçersiz deðer: %s"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr ""
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "her kural icin sadece bir %s kullanýlabilir"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s sadece GLR ayrýþtýrýcýlarý etkiler"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s'i pozitif bir sayý izlemeli"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr ""
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "girdi gramer içinde kural yok"
@@ -545,97 +577,95 @@ msgstr "ba
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr ""
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr ""
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "tam sayý kapsam dýþý: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, fuzzy, c-format
 msgid "invalid reference: %s"
 msgstr "geçersiz yönerge: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, fuzzy, c-format
 msgid "misleading reference: %s"
 msgstr "%s'in önceliði tekrar tanýmlanýyor"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, fuzzy, c-format
 msgid "ambiguous reference: %s"
 msgstr "%s argümaný, %s için belirsiz"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, fuzzy, c-format
 msgid "$$ of %s has no declared type"
 msgstr "`%s''in $$'ý için bildirilmiþ tip yok"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, fuzzy, c-format
 msgid "$%s of %s has no declared type"
 msgstr "`%2$s''in %1$d'i için bildirilmiþ tip yok"
@@ -655,57 +685,59 @@ msgstr "ge
 msgid "invalid identifier: %s"
 msgstr "geçersiz yönerge: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "geçersiz karakter: %s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "geçersiz karakter: %s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, fuzzy, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "beklenmeyen öðe: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr ""
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "geçersiz karakter: %s"
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "geçersiz karakter: %s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "geçersiz 'null' karakter"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, fuzzy, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "geçersiz karakter: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, fuzzy, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "geçersiz karakter: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "dosyanýn sonunda eksik `%s'"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "satýr sonunda eksik `%s'"
@@ -740,83 +772,83 @@ msgstr ""
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "girdi gramerde çok fazla simge var (sýnýr: %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%2$s için tekrar %1$s bildirimi"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, fuzzy, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%2$s için tekrar %1$s bildirimi"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "%s simgesi tekrar tanýmlanmýþ"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, fuzzy, c-format
 msgid "symbol %s redeclared"
 msgstr "%s simgesi tekrar tanýmlanmýþ"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "kullanýcý andacý %s tekrar tanýmlanýyor"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "simge %s kullanýlmýþ, fakat andaç olarak tanýmlanmamýþ ve kurallarý yok"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, fuzzy, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "simge `%s', yalýn dizge olarak birden fazla kullanýlmýþ"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, fuzzy, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "simge `%s', birden fazla yalýn dizgeye atanmýþ"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, fuzzy, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "%s için tekrar tip bildirimi"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, fuzzy, c-format
 msgid "previous declaration for %s"
 msgstr "ilk bildirim"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "baþlangýç simgesi %s tanýmlanmamýþ"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "baþlangýç simgesi %s bir andaç"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, fuzzy, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "%2$s için tekrar %1$s bildirimi"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, fuzzy, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "%2$s için tekrar %1$s bildirimi"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, fuzzy, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "%2$s için tekrar %1$s bildirimi"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, fuzzy, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "%2$s için tekrar %1$s bildirimi"
@@ -1034,13 +1066,13 @@ msgstr "%s: `%s' se
 msgid "memory exhausted"
 msgstr "bellek tükendi"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, fuzzy, c-format
 msgid "cannot create pipe"
 msgstr "dosya kapatýlamýyor"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1112,8 +1144,8 @@ msgstr ""
 msgid "%s subprocess got fatal signal %d"
 msgstr ""
 
-#~ msgid "I/O error"
-#~ msgstr "G/Ç hatasý"
+#~ msgid "state %d"
+#~ msgstr "durum %d"
 
 #, fuzzy
 #~ msgid "GNU bison generates LALR(1) and GLR parsers.\n"
index 56a08e0..8fdf67e 100644 (file)
Binary files a/po/uk.gmo and b/po/uk.gmo differ
index 4b37865..35a323a 100644 (file)
--- a/po/uk.po
+++ b/po/uk.po
@@ -6,26 +6,30 @@
 # Yuri Chornoivan <yurchor@ukr.net>, 2012.
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.5.90\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-05 22:00+0300\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-08 18:21+0200\n"
 "Last-Translator: Yuri Chornoivan <yurchor@ukr.net>\n"
 "Language-Team: Ukrainian <translation-team-uk@lists.sourceforge.net>\n"
 "Language: uk\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
-"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+"Plural-Forms: nplurals=4; plural=n==1 ? 3 : n%10==1 && n%100!=11 ? 0 : n"
+"%10>=2 && n%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2\n"
 "X-Generator: Lokalize 1.5\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "попередження"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "помилка"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "критична помилка: "
 
@@ -74,16 +78,18 @@ msgstr "%%expect-rr застосовується лише до аналізат
 msgid "expected %d shift/reduce conflict"
 msgid_plural "expected %d shift/reduce conflicts"
 msgstr[0] "очікувався %d конфлікт зсуву/виводу"
-msgstr[1] "очікувалось %d конфлікти зсуву/виводу"
-msgstr[2] "очікувалось %d конфліктів зсуву/виводу"
+msgstr[1] "очікувалося %d конфлікти зсуву/виводу"
+msgstr[2] "очікувалося %d конфліктів зсуву/виводу"
+msgstr[3] "очікувався %d конфлікт зсуву/виводу"
 
 #: src/conflicts.c:621
 #, c-format
 msgid "expected %d reduce/reduce conflict"
 msgid_plural "expected %d reduce/reduce conflicts"
-msgstr[0] "очікувалось %d конфлікт виводу/виводу"
-msgstr[1] "очікувалось %d конфлікти виводу/виводу"
-msgstr[2] "очікувалось %d конфліктів виводу/виводу"
+msgstr[0] "очікувався %d конфлікт виводу/виводу"
+msgstr[1] "очікувалося %d конфлікти виводу/виводу"
+msgstr[2] "очікувалося %d конфліктів виводу/виводу"
+msgstr[3] "очікувався %d конфлікт виводу/виводу"
 
 #: src/files.c:114
 #, c-format
@@ -110,17 +116,17 @@ msgstr "відмовлено у перезаписі файла вхідних 
 msgid "conflicting outputs to file %s"
 msgstr "суперечливий вивід у файл %s"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "Використовуйте `%s --help' для додаткової інформації.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Використання: %s [КЛЮЧІ]... ФАЙЛ\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -132,18 +138,18 @@ msgstr ""
 "IELR(1) та канонічних таблиць LR(1) ще недостатньо перевірено.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Обов’язкові аргументи для довгих форм запису параметрів є обов’язковими і "
 "для скорочених форм.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Те саме стосується необов’язкових аргументів.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -154,6 +160,7 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
@@ -167,14 +174,14 @@ msgstr ""
 "XSLT\n"
 "  -y, --yacc                 імітувати Yacc POSIX\n"
 "  -W, --warnings[=КАТЕГОРІЯ] виводити попередження з категорії КАТЕГОРІЯ\n"
+"  -f, --feature[=МОЖЛИВІСТЬ] задіяти різноманітні можливості\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -184,7 +191,6 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Аналізатор:\n"
 "  -L, --language=МОВА              вказати мову програмування виведених "
@@ -201,9 +207,8 @@ msgstr ""
 "prefix=ПРЕФІКС'\n"
 "  -l, --no-lines                   не створювати інструкцій `#line'\n"
 "  -k, --token-table                включити таблицю назв елементів\n"
-"\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -217,7 +222,6 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Виведення:\n"
 "      --defines[=ФАЙЛ]       створити також файл заголовків\n"
@@ -231,27 +235,27 @@ msgstr ""
 "  -g, --graph[=ФАЙЛ]         вивести граф автомата\n"
 "  -x, --xml[=ФАЙЛ]           вивести звіт автомата у форматі XML\n"
 "                             (схему XML перевірено недостатньо)\n"
-"\n"
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 "Категорії попереджень:\n"
 "  `midrule-values'  невстановлені або невикористані проміжні значення\n"
 "  `yacc'            несумісності з Yacc POSIX\n"
 "  `conflicts-sr'    S/R-конфлікти (типово увімкнено)\n"
 "  `conflicts-rr'    R/R conflicts (типово увімкнено)\n"
+"  `deprecated'      застарілі конструкції\n"
 "  `other'           всі інші попередження (типово увімкнено)\n"
 "  `all'             всі попередження\n"
 "  `no-КАТЕГОРІЯ'    вимкнути попередження з КАТЕГОРІЇ\n"
@@ -259,7 +263,7 @@ msgstr ""
 "  `error'           вважати попередження помилками\n"
 "\n"
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -277,30 +281,67 @@ msgstr ""
 "  `all'          включати всю наведену вище інформацію\n"
 "  `none'         вимкнути звіт\n"
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
 msgstr ""
-"\n"
-"Сповіщайте про помилки за адресою <%s>.\n"
+"МОЖЛИВІСТЬ — список слів, відокремлених комами. Можливі слова:\n"
+"  `caret'        показати помилки, пов’язані з символами ^\n"
+"  `all'          всі, вказані вище\n"
+"  `none'         вимкнути, всі вказані вище\n"
+"  "
+
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "Сповіщайте про помилки за адресою <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "Домашня сторінка %s: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+"Загальна довідка щодо використання програмного забезпечення GNU: <http://www."
+"gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+"Звіти щодо вад у перекладах слід надсилати за адресами, вказаними тут: "
+"<http://translationproject.org/team/>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+"З повною документацією можна ознайомитися за допомогою команди info bison.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Автори: Роберт Корбет та Річард Столмен.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Copyright (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -311,26 +352,26 @@ msgstr ""
 "гарантій працездатності\n"
 "або придатності для певної мети.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "не можна використовувати декілька оголошень шаблонів"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: некоректна мова"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "визначення декількох оголошень мов є некоректним"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: пропущено операнд"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "зайвий операнд %s"
@@ -343,7 +384,7 @@ msgstr "порожній"
 msgid "Grammar"
 msgstr "Граматика"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -356,7 +397,7 @@ msgstr ""
 "// Домашня сторінка: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "переповнення номеру рядка"
@@ -370,38 +411,37 @@ msgstr "переповнення номеру стовпчика"
 msgid "rule useless in parser due to conflicts"
 msgstr "правило є зайвим у аналізаторі через конфлікти"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "змінну %%define %s перевизначено"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "попереднє визначення"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: невизначена змінна %%define %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "некоректне значення булевої змінної %%define %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "некоректне значення змінної %%define %s: %s"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "прийняте значення: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "у описі параметра відсутній ідентифікатор"
@@ -439,10 +479,10 @@ msgstr "прийняти"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "стан %d"
+msgid "State %d"
+msgstr "Стан %d"
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -471,73 +511,72 @@ msgstr "Правила є зайвими у аналізаторі через к
 msgid "multiple %s declarations"
 msgstr "багатократні описи %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "конфлікт типів результатів під час об’єднання функції %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "попереднє оголошення"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "проігноровано дублікат назви символу %s"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr "правило задано для %s, який є лексемою"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "конфлікт типів на типовій дії: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 "порожнє правило для типізованого нетермінального символу, та відсутня дія"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "не використане значення: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "не встановлене значення: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr "елемент %%prec не визначено: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "у правилі допускається лише один %s"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s впливає лише на аналізатори GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "за %s повинно слідувати додатне число"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "правило надто довге"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "відсутні правила у вхідній граматиці"
@@ -568,16 +607,18 @@ msgstr "Зайві правила у граматиці"
 msgid "%d nonterminal useless in grammar"
 msgid_plural "%d nonterminals useless in grammar"
 msgstr[0] "%d зайвий нетермінал у граматиці"
-msgstr[1] "%d зайвих нетермінали у граматиці"
+msgstr[1] "%d зайві нетермінали у граматиці"
 msgstr[2] "%d зайвих нетерміналів у граматиці"
+msgstr[3] "%d зайвий нетермінал у граматиці"
 
 #: src/reduce.c:390
 #, c-format
 msgid "%d rule useless in grammar"
 msgid_plural "%d rules useless in grammar"
 msgstr[0] "%d зайве правило у граматиці"
-msgstr[1] "%d зайвих правила у граматиці"
+msgstr[1] "%d зайві правила у граматиці"
 msgstr[2] "%d зайвих правил у граматиці"
+msgstr[3] "%d зайве правило у граматиці"
 
 #: src/reduce.c:419
 #, c-format
@@ -585,105 +626,103 @@ msgid "start symbol %s does not derive any sentence"
 msgstr "початковий символ %s не виводить жодного речення"
 
 #: src/scan-code.l:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "зайвий символ '$'"
+msgstr "зайвий символ '%s'"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr "наприкінці коду дії можливо потрібен символ ';'"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr "у майбутніх версіях Bison символ ';' не додаватиметься"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr ""
 "використання YYFAIL. Вважається застарілим, буде вилучено у наступних "
 "версіях."
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "посилається на: %c%s у %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "ймовірно мало бути: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", приховування %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " у %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ", доступ з дії проміжного правила неможливий у $%d"
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "вихід за межі діапазону цілого числа: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "некоректне посилання: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr ""
 "синтаксична помилка після '%c'. Мало бути вказано ціле число, літеру, '_', "
 "'[' або '$'"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr "у продукції не знайдено символу до $%d: %.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr "у продукції не знайдено символу: %.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "помилкове посилання: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr "неоднозначне посилання: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr "у нетипізованій граматиці явним чином вказано тип"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr "$$ для проміжного правила у $%d %s немає оголошеного типу"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ %s не має оголошеного типу"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s %s не має оголошеного типу"
@@ -703,57 +742,63 @@ msgstr "некоректна директива: %s"
 msgid "invalid identifier: %s"
 msgstr "некоректний ідентифікатор: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "неприпустимий символ: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "некоректні символи"
+msgstr[1] "некоректні символи"
+msgstr[2] "некоректні символи"
+msgstr[3] "некоректний символ"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr "неочікуваний ідентифікатор у назву у дужках: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "мало бути вказано ідентифікатор"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "некоректний символ у назві у дужках: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "некоректні символи у назві у дужках"
+msgstr[1] "некоректні символи у назві у дужках"
+msgstr[2] "некоректні символи у назві у дужках"
+msgstr[3] "некоректний символ у назві у дужках"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "порожня символьна стала"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "зайві символи у символьній сталій"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "неприпустимий null-символ"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "некоректне число після екранування \\: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "некоректний символ після екранування \\: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "не вистачає %s наприкінці файла"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
 msgstr "не вистачає %s наприкінці рядка"
@@ -788,83 +833,83 @@ msgstr "Yacc POSIX забороняє використання дефісів у
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "надто багато символів (лексеми плюс нетермінали); максимально %d"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "повторний опис %s для %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "повторний опис %s для <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "повторне визначення символу %s"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "символ %s визначений повторно"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr "перевизначення номера лексеми користувача для %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 "символ %s використовується, але не визначений як лексема та не має правил"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr "символ %s використано декілька разів як сталий рядок символів"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "символ %s вказано декілька сталих рядків (літералів)"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "повторне оголошення елемента користувача з номером %d для %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "попереднє оголошення %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "початковий символ %s невизначений"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr "початковий символ %s є лексемою"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "повторне оголошення типового %%destructor з міткою"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "повторне оголошення типового %%destructor без мітки"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "повторне оголошення типового %%printer з міткою"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "повторне оголошення типового %%printer без мітки"
@@ -1086,13 +1131,13 @@ msgstr "%s: до параметра «-W %s» слід додати аргуме
 msgid "memory exhausted"
 msgstr "пам'ять вичерпано"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "не вдалося створити канал"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1164,5 +1209,8 @@ msgstr "Підпроцес %s"
 msgid "%s subprocess got fatal signal %d"
 msgstr "Підпроцесом %s отримано сигнал щодо аварійного завершення %d"
 
+#~ msgid "state %d"
+#~ msgstr "стан %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "зайвий символ '@'"
index ecb3e83..1dd7602 100644 (file)
Binary files a/po/vi.gmo and b/po/vi.gmo differ
index 961dc2d..2b54d7e 100644 (file)
--- a/po/vi.po
+++ b/po/vi.po
@@ -6,28 +6,31 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-2.5.90\n"
+"Project-Id-Version: bison-2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-06 07:12+0700\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 08:31+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
 "Language: vi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Team-Website: <http://translationproject.org/team/vi.html>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: LocFactoryEditor 1.8\n"
-"X-Poedit-Language: Vietnamese\n"
-"X-Poedit-Country: VIET NAM\n"
-"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-SourceCharset: UTF-8\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "cảnh báo"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "lỗi"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "lỗi nghiêm trọng"
 
@@ -35,20 +38,20 @@ msgstr "lỗi nghiêm trọng"
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as shift"
 msgstr ""
-"    Xung đột giữa quy tắc %d và hiệu bài %s được quyết định là dịch (shift)"
+"    Xung đột giữa quy tắc %d và thẻ bài %s được phân giải là dịch (shift)"
 
 #: src/conflicts.c:86
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as reduce"
 msgstr ""
-"    Xung đột giữa quy tắc %d và hiệu bài %s được quyết định là giảm (reduce)."
+"    Xung đột giữa quy tắc %d và thẻ bài %s được phân giải là rút gọn "
+"(reduce)."
 
 #: src/conflicts.c:94
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as an error"
 msgstr ""
-"    Xung đột giữa quy tắc %d và hiệu bài %s được quyết định là một lỗi "
-"(error)."
+"    Xung đột giữa quy tắc %d và thẻ bài %s được phân giải là một lỗi (error)."
 
 #: src/conflicts.c:492
 #, c-format
@@ -110,19 +113,19 @@ msgstr "từ chối ghi đè lên tập tin đầu vào %s"
 #: src/files.c:362
 #, c-format
 msgid "conflicting outputs to file %s"
-msgstr "tập tin \"%s\" có nhiều kết xuất xung đột với nhau"
+msgstr "tập tin “%s” có nhiều kết xuất xung đột với nhau"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
-msgstr "Hãy chạy câu lệnh \"%s --help\" (trợ giúp) để xem thêm thông tin.\n"
+msgstr "Hãy chạy câu lệnh “%s --help” (trợ giúp) để xem thêm thông tin.\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "Sử dụng: %s [TÙY_CHỌN]... TẬP_TIN\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -135,18 +138,18 @@ msgstr ""
 "canonical LR(1) chỉ là thử nghiệm.\n"
 "\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr ""
 "Mọi đối số bắt buộc phải sử dụng với tùy chọn dài cũng bắt buộc với tùy chọn "
 "ngắn.\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "Cũng vậy với đối số còn tùy chọn.\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -157,25 +160,26 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 "\n"
 "Chế độ thao tác:\n"
-"  -h, --help      \thiển thị trợ giúp này, sau đó thoát\n"
-"  -V, --version   \txuất thông tin phiên bản, sau đó thoát\n"
-"      --print-localedir  \txuất thư mục chứa dữ liệu phụ thuộc vào miền địa "
-"phương\n"
+"  -h, --help                 hiển thị trợ giúp này, sau đó thoát\n"
+"  -V, --version              xuất thông tin phiên bản, sau đó thoát\n"
+"      --print-localedir      xuất thư mục chứa dữ liệu phụ thuộc vào miền "
+"địa phương\n"
 "      --print-datadir        xuất thư mục chứa khung sườn và XSLT\n"
 "  -y, --yacc                 mô phỏng POSIX Yacc\n"
-"  -W, --warnings[=LOẠI]  thông báo các cảnh báo thuộc về phân loại này\n"
+"  -W, --warnings[=LOẠI]      thông báo các cảnh báo thuộc về phân LOẠI này\n"
+"  -f, --feature[=TÍNH-NĂNG]  kích hoạt các TÍNH-NĂNG\n"
 "\n"
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -185,24 +189,22 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "Bộ phân tích cú pháp:\n"
-"  -L, --language=NGÔN_NGỮ    ghi rõ ngôn ngữ lập trình kết xuất\n"
+"  -L, --language=NGÔN_NGỮ          chỉ định ngôn ngữ lập trình kết xuất\n"
 "                                   (đây là một tính năng vẫn còn thực "
 "nghiệm)\n"
-"  -S, --skeleton=TẬP_TIN        chỉ định khung sườn cần dùng\n"
-"  -t, --debug                thiết lập cơ chế phân tích để gỡ lỗi\n"
-"      --locations            cho phép hỗ trợ về vị trí\n"
-"  -D, --define=NAME[=VALUE]        tương tự như `%define NAME \"VALUE\"'\n"
-"  -F, --force-define=NAME[=VALUE]  đè lên `%define NAME \"VALUE\"'\n"
-"  -p, --name-prefix=TIỀN_TỐ    đặt tiền tố nào vào trước ký hiệu ngoài\n"
+"  -S, --skeleton=TẬP_TIN           chỉ định khung sườn cần dùng\n"
+"  -t, --debug                      đặt phân tích để gỡ lỗi\n"
+"      --locations                  cho phép hỗ trợ về vị trí\n"
+"  -D, --define=NAME[=VALUE]        tương tự như `%define NAME “VALUE”'\n"
+"  -F, --force-define=NAME[=VALUE]  đè lên `%define NAME “VALUE”'\n"
+"  -p, --name-prefix=TIỀN_TỐ        đặt tiền tố nào vào trước ký hiệu ngoài\n"
 "                                   phản đối bởi '-Dapi.prefix=PREFIX'\n"
-"  -l, --no-lines             không tạo chỉ thị kiểu \"#line\"\n"
-"  -k, --token-table          bao gồm bảng các tên hiệu bài\n"
-"\n"
+"  -l, --no-lines                   không tạo chỉ thị kiểu “#line”\n"
+"  -k, --token-table                bao gồm bảng các tên thẻ bài\n"
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -216,49 +218,47 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "Kết xuất:\n"
-"      --defines[=TẬP_TIN]       cũng tạo một tập tin phần đầu\n"
+"      --defines[=TẬP_TIN]    cũng tạo một tập tin phần đầu\n"
 "  -d                    cũng vậy nhưng không thể đặt TẬP_TIN (cho POSIX "
 "Yacc)\n"
-"  -r, --report=CÁI        cũng hiện chi tiết về hàm tự động\n"
-"      --report-file=TẬP_TIN     ghi báo cáo vào tập tin này\n"
-"  -v, --verbose              tương đương với \"--report=state\"\n"
-"  -b, --file-prefix=TIỀN_TỐ   xác định một tiền tố cho các tập tin kết xuất\n"
-"  -o, --output=TẬP_TIN          xuất vào tập tin này\n"
-"  -g, --graph[=TẬP_TIN]         cũng xuất một đồ thị về hàm tự động\n"
-"  -x, --xml[=TẬP_TIN]           cũng xuất một báo cáo XML về hàm tự động\n"
-"\t\t\t\t\t\t(giản đồ XML vẫn còn thực nghiệm)\n"
-"\n"
-
-#: src/getargs.c:340
+"  -r, --report=CÁI           cũng hiện chi tiết về hàm tự động\n"
+"      --report-file=TẬP_TIN  ghi báo cáo vào tập tin này\n"
+"  -v, --verbose              tương đương với `--report=state'\n"
+"  -b, --file-prefix=TIỀN_TỐ  xác định một tiền tố cho các tập tin kết xuất\n"
+"  -o, --output=TẬP_TIN       xuất vào tập tin này\n"
+"  -g, --graph[=TẬP_TIN]      cũng xuất một đồ thị về hàm tự động\n"
+"  -x, --xml[=TẬP_TIN]        cũng xuất một báo cáo XML về hàm tự động\n"
+"                              (giản đồ XML vẫn còn là thực nghiệm)\n"
+
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
-"Các phân loại cảnh báo bao gồm:\n"
-" • midrule-values\tgiá trị ở giữa quy tắc mà chưa dùng hay đặt\n"
-" • yacc            \tsự không tương thích với POSIX YACC\n"
-"  `conflicts-sr'    xung đột S/R (bật theo mặc định)\n"
-"  `conflicts-rr'    xung đột R/R (bật theo mặc định)\n"
-"  `other'           mọi cảnh báo khác (bật theo mặc định)\n"
-" • all             \t\ttất cả các cảnh báo\n"
-" • no-LOẠI     \t\ttắt cảnh báo với LOẠI\n"
-" • none            \ttắt mọi cảnh báo\n"
-" • error           \txử lý cảnh báo dưới dạng lỗi\n"
-"\n"
-
-#: src/getargs.c:354
+"Các loại cảnh báo bao gồm:\n"
+" • midrule-values   giá trị ở giữa quy tắc mà chưa dùng hay đặt\n"
+" • yacc             sự không tương thích với POSIX YACC\n"
+" • `conflicts-sr'   xung đột S/R (bật theo mặc định)\n"
+" • `conflicts-rr'   xung đột R/R (bật theo mặc định)\n"
+" • `deprecated'     các chỉ lệnh đã cũ\n"
+" • `other'          mọi cảnh báo khác (bật theo mặc định)\n"
+" • all              tất cả các cảnh báo\n"
+" • no-LOẠI          tắt cảnh báo với LOẠI\n"
+" • none             tắt mọi cảnh báo\n"
+" • error            xử lý cảnh báo dưới dạng lỗi\n"
+
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -269,37 +269,70 @@ msgid ""
 "  `none'         disable the report\n"
 msgstr ""
 "CÁI là danh sách những từ định giới bằng dấu phẩy có thể bao gồm:\n"
-" • state\t\tdiễn tả các tình trạng\n"
-" • itemset\tđiền nốt mỗi tập hợp mục lõi với kết thúc nó\n"
-" • look-ahead\t\tliên quan dứt khoát mỗi hiệu bài nhìn trước đến mục\n"
-" • solved     \tdiễn tả tiến trình giải sự xung đột kiểu dời/giảm\n"
-" • all          \tbao gồm tất cả thông tin trên\n"
-" • none\t\ttắt báo cáo\n"
+" • state         diễn tả các tình trạng\n"
+" • itemset       điền nốt mỗi tập hợp mục lõi với kết thúc nó\n"
+" • look-ahead    liên quan dứt khoát mỗi thẻ bài nhìn trước đến mục\n"
+" • solved        diễn tả tiến trình giải sự xung đột kiểu dời/giảm\n"
+" • all           bao gồm tất cả thông tin trên\n"
+" • none          tắt báo cáo\n"
+
+#: src/getargs.c:387
+msgid ""
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+"TÍNH-NĂNG là một danh sách các từ cách nhau bằng dấu phẩy, bao gồm:\n"
+" • `caret'       hiển thị lỗi bằng dấu ^\n"
+" • `all'         tất cả các thứ ở trên\n"
+" • `none'        tắt tất cả các thứ ở trên\n"
+"  "
 
-#: src/getargs.c:364
+#: src/getargs.c:395
 #, c-format
-msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+msgid "Report bugs to <%s>.\n"
+msgstr "Hãy thông báo lỗi cho <%s>.\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "Trang chủ %s: <%s>.\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr "Hướng dẫn chung về phần mềm GNU: <http://www.gnu.org/gethelp/>.\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
 msgstr ""
-"\n"
-"Hãy thông báo lỗi cho <%s>.\n"
+"Hãy thông báo lỗi dịch cho <http://translationproject.org/team/vi.html>.\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "Để đọc tài liệu dạng đầy đủ, chạy lệnh: info bison.\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "Tác giả: Robert Corbett và Richard Stallman.\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "Bản quyền © %d Tổ chức Phần mềm Tự do.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -308,26 +341,26 @@ msgstr ""
 "KHÔNG CÓ BẢO HÀNH GÌ CẢ, THẬM CHÍ KHÔNG CÓ BẢO ĐẢM ĐƯỢC NGỤ Ý\n"
 "KHẢ NĂNG BÁN HAY KHẢ NĂNG LÀM ĐƯỢC VIỆC DỨT KHOÁT.\n"
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr "chỉ cho phép một khai báo khung sườn"
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, c-format
 msgid "%s: invalid language"
 msgstr "%s: ngôn ngữ không hợp lệ"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "chỉ cho phép một khai báo ngôn ngữ"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, c-format
 msgid "%s: missing operand"
 msgstr "%s: thiếu toán hạng"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, c-format
 msgid "extra operand %s"
 msgstr "toán hạng bổ xung %s"
@@ -340,7 +373,7 @@ msgstr "rỗng"
 msgid "Grammar"
 msgstr "Ngữ pháp"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -353,7 +386,7 @@ msgstr ""
 "// Trang chủ: <%s>.\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "tràn số thứ tự dòng"
@@ -367,38 +400,37 @@ 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:436
+#: src/muscle-tab.c:450
 #, c-format
 msgid "%%define variable %s redefined"
 msgstr "%%biến định nghĩa %s bị định nghĩa lại"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "lời định nghĩa trước"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%s: chưa định nghĩa %%define biến %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, 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:596
+#: src/muscle-tab.c:609
 #, 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:599
+#: src/muscle-tab.c:613
 #, c-format
 msgid "accepted value: %s"
 msgstr "giá trị không được chấp nhận: %s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "thiếu dấu nhận diện trong khai báo tham số"
@@ -411,7 +443,7 @@ msgstr " kiểu %d là %s\n"
 #: src/print.c:164
 #, c-format
 msgid "shift, and go to state %d\n"
-msgstr "dời, và chuyển sang tình trạng %d\n"
+msgstr "dời, và chuyển sang trạng thái %d\n"
 
 #: src/print.c:166
 #, c-format
@@ -425,7 +457,7 @@ msgstr "lỗi (không kết hợp)\n"
 #: src/print.c:226
 #, c-format
 msgid "reduce using rule %d (%s)"
-msgstr "giảm dùng quy tắc %d (%s)"
+msgstr "rút gọn dùng quy tắc %d (%s)"
 
 #: src/print.c:228
 #, c-format
@@ -436,10 +468,10 @@ msgstr "chấp nhận"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
-msgstr "tình trạng %d"
+msgid "State %d"
+msgstr "Trạng thái %d "
 
 #: src/print.c:409
 msgid "Terminals, with rules where they appear"
@@ -468,72 +500,71 @@ msgstr "Quy tắc vô ích trong cơ chế phân tích do xung đột"
 msgid "multiple %s declarations"
 msgstr "nhiều khai báo %s"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr "kết quả mâu thuẫn kiểu khi hợp vào hàm %s: <%s> != <%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "khai báo trước"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr "tên ký hiệu bị trùng lắp cho %s bị bỏ qua"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
-msgstr "đưa ra quy tắc cho %s, mà là hiệu bài"
+msgstr "đưa ra quy tắc cho %s, mà là thẻ bài"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "kiểu xung đột ở hành động mặc định: <%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "quy tắc rỗng cho đồ không kết thúc có kiểu, cũng không có hành động"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "giá trị chưa dùng: $%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "giá trị chưa đặt: $$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
-msgstr "chưa xác định hiệu bài cho %%prec: %s"
+msgstr "chưa xác định thẻ bài cho %%prec: %s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "chỉ cho phép một %s cho mỗi quy tắc"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s chỉ ảnh hưởng đến cơ chế phân tích kiểu GLR"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s phải có con số dương theo sau"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "quy tắc quá dài"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "không có quy tắc trong ngữ pháp nhập vào"
@@ -577,102 +608,99 @@ 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:188
-#, fuzzy, c-format
+#, c-format
 msgid "stray '%s'"
-msgstr "lạc '$'"
+msgstr "ký hiệu '%s' lạc"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 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:228
-#, c-format
+#: src/scan-code.l:232
 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:250
+#: src/scan-code.l:254
 #, 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:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr "tham chiếu đến: %c%s tại %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
-msgstr "có lẽ khoảng: %c"
+msgstr "có lẽ có ý là: %c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ", ẩn %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " ở %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, 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:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
-msgstr "số nguyên ở ngoại phạm vi: %s"
+msgstr "số nguyên nằm ngoài phạm vi: %s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "sai tham chiếu: %s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, 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 '$'"
+msgstr "lỗi sai cú pháp sau '%c', cần số nguyên, chữ, '_', '[', hoặc '$'"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, 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:632
+#: src/scan-code.l:633
 #, 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:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr "tham chiếu không đúng chỗ: %s"
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
-msgstr "tham chiếu mơ hồ: %s"
+msgstr "tham chiếu chưa rõ ràng: %s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, 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:758
+#: src/scan-code.l:759
 #, 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:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr "$$ của %s không khai báo kiểu"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr "$%s của %s không khai báo kiểu"
@@ -685,67 +713,67 @@ msgstr "dấu phẩy ',' thất lạc được đối đãi như là khoảng tr
 #: src/scan-gram.l:222
 #, c-format
 msgid "invalid directive: %s"
-msgstr "chi thị không hợp lệ: %s"
+msgstr "ch thị không hợp lệ: %s"
 
 #: src/scan-gram.l:250
 #, c-format
 msgid "invalid identifier: %s"
 msgstr "định danh không hợp lệ: %s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "ký tự không hợp lệ: %s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "ký tự không hợp lệ"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
-msgstr "một định danh không mong đợi trong tên đặt trong dấu ngoặc: %s"
+msgstr "không cần một định danh trong tên đặt trong dấu ngoặc: %s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
-msgstr "một định danh được mong chờ"
+msgstr "cần một định danh"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "ký tự không hợp lệ trong tên đặt trong dấu ngoặc: %s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "ký tự không hợp lệ trong tên đặt trong dấu ngoặc"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr "ký tự trống theo kiểu văn chương"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr "các ký tự mở rộng trong câu chữ"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "ký tự vô giá trị không hợp lệ"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr "gặp số sai nằm sau \\-escape: %s"
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr "gặp ký tự sai nằm sau \\-escape: %s"
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, c-format
 msgid "missing %s at end of file"
 msgstr "thiếu %s tại kết thúc tập tin"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, c-format
 msgid "missing %s at end of line"
-msgstr "thiếu %s tại kết thúc dòng"
+msgstr "thiếu %s tại cuối dòng"
 
 #: src/scan-skel.l:146
 #, c-format
@@ -777,84 +805,84 @@ msgstr "POSIX Yacc cấm chỉ sự va chạm trong các tên ký hiệu: %s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "quá nhiều ký hiệu trong ngữ pháp nhập vào (giới hạn %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s khai báo lại cho %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s khai báo lại cho <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "ký hiệu %s đã được định nghĩa lại"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "ký hiệu %s đã được khai báo lại"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
-msgstr "đang định nghĩa lại số thứ tự hiệu bài người dùng của %s"
+msgstr "đang định nghĩa lại số thứ tự thẻ bài người dùng của %s"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
-"ký hiệu %s được dùng, nhưng chưa được định nghĩa như là hiệu bài, cũng không "
+"ký hiệu %s được dùng, nhưng chưa được định nghĩa như là thẻ bài, cũng không "
 "có quy tắc"
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
-msgstr "ký hiệu %s sử dụng nhiều hơn một chuỗi nghĩa chữ"
+msgstr "ký hiệu %s sử dụng cho nhiều hơn một chuỗi nghĩa chữ"
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr "ký hiệu %s nhận nhiều hơn một chuỗi nghĩa chữ"
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr "số thẻ người dùng %d khai báo lại cho %s"
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr "khai báo trước đây cho %s"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "chưa định nghĩa ký hiệu bắt đầu %s"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
-msgstr "ký hiệu bắt đầu %s là một hiệụ bài"
+msgstr "ký hiệu bắt đầu %s là một thẻ bài"
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr "khai báo lại cho %%destructor có thẻ mặc định"
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr "khai báo lại cho %%destructor không có thẻ mặc định"
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr "khai báo lại cho %%printer có thẻ mặc định"
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr "khai báo lại cho %%printer không có thẻ mặc định"
@@ -922,12 +950,12 @@ msgstr "chuyển hướng stdin của bison từ tập tin tạm gặp lỗi"
 #: lib/argmatch.c:133
 #, c-format
 msgid "invalid argument %s for %s"
-msgstr "đối sô không hợp lệ %s cho %s"
+msgstr "đối s không hợp lệ %s cho %s"
 
 #: lib/argmatch.c:134
 #, c-format
 msgid "ambiguous argument %s for %s"
-msgstr "đối số mơ hồ %s cho %s"
+msgstr "đối số chưa rõ ràng %s cho %s"
 
 #: lib/argmatch.c:153
 msgid "Valid arguments are:"
@@ -946,7 +974,7 @@ msgstr "%u bitset_sets (bộ bộ bit), %u đã lưu tạm (%.2f%%)\n"
 #: lib/bitset_stats.c:183
 #, c-format
 msgid "%u bitset_resets, %u cached (%.2f%%)\n"
-msgstr "%u bitset_resets (lập lại bộ bit), %u đã lưu tạm (%.2f%%)\n"
+msgstr "%u bitset_resets (đặt lại bộ bit), %u đã lưu tạm (%.2f%%)\n"
 
 #: lib/bitset_stats.c:186
 #, c-format
@@ -976,7 +1004,7 @@ msgid ""
 "Bitset statistics:\n"
 "\n"
 msgstr ""
-"Thống kê bộ bit:\n"
+"Thống kê bít:\n"
 "\n"
 
 #: lib/bitset_stats.c:215
@@ -1012,69 +1040,69 @@ msgstr "Lỗi hệ thống không rõ"
 #: lib/getopt.c:547 lib/getopt.c:576
 #, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%s: tùy chọn \"%s\" chưa rõ ràng; khả năng là:"
+msgstr "%s: tùy chọn “%s” chưa rõ ràng; khả năng là:"
 
 #: lib/getopt.c:624 lib/getopt.c:628
 #, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%s: tùy chọn \"--%s\" không cho phép đối số\n"
+msgstr "%s: tùy chọn “--%s” không cho phép đối số\n"
 
 #: lib/getopt.c:637 lib/getopt.c:642
 #, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%s: tùy chọn \"%c%s\" không cho phép đối số\n"
+msgstr "%s: tùy chọn “%c%s” không cho phép đối số\n"
 
 #: lib/getopt.c:685 lib/getopt.c:704
 #, c-format
 msgid "%s: option '--%s' requires an argument\n"
-msgstr "%s: tùy chọn \"--%s\" yêu cầu một đối số\n"
+msgstr "%s: tùy chọn “--%s” yêu cầu một đối số\n"
 
 #: lib/getopt.c:742 lib/getopt.c:745
 #, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%s: không nhận ra tùy chọn \"--%s\"\n"
+msgstr "%s: không nhận ra tùy chọn “--%s”\n"
 
 #: lib/getopt.c:753 lib/getopt.c:756
 #, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%s: không nhận ra tùy chọn \"%c%s\"\n"
+msgstr "%s: không nhận ra tùy chọn “%c%s”\n"
 
 #: lib/getopt.c:805 lib/getopt.c:808
 #, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s: tùy chọn không hợp lệ -- \"%c\"\n"
+msgstr "%s: tùy chọn không hợp lệ -- “%c”\n"
 
 #: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106
 #, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s: tùy chọn yêu cầu một đối số -- \"%c\"\n"
+msgstr "%s: tùy chọn yêu cầu một đối số -- “%c”\n"
 
 #: lib/getopt.c:934 lib/getopt.c:950
 #, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s: tùy chọn \"-W %s\" vẫn mơ hồ\n"
+msgstr "%s: tùy chọn “-W %s” chưa rõ ràng\n"
 
 #: lib/getopt.c:974 lib/getopt.c:992
 #, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s: tùy chọn \"-W %s\" không cho phép đối số\n"
+msgstr "%s: tùy chọn “-W %s” không cho phép đối số\n"
 
 #: lib/getopt.c:1013 lib/getopt.c:1031
 #, c-format
 msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s: tùy chọn \"-W %s\" yêu cầu một đối số\n"
+msgstr "%s: tùy chọn “-W %s” yêu cầu một đối số\n"
 
 #: lib/obstack.c:413 lib/obstack.c:415 lib/xalloc-die.c:34
 msgid "memory exhausted"
-msgstr "cạn bộ nhớ"
+msgstr "hết bộ nhớ"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "không thể tạo ống dẫn"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1103,11 +1131,11 @@ msgstr "tiến trình con %s bị lỗi"
 #. and use glyphs suitable for your language.
 #: lib/quotearg.c:312
 msgid "`"
-msgstr "\""
+msgstr ""
 
 #: lib/quotearg.c:313
 msgid "'"
-msgstr "\""
+msgstr ""
 
 #: lib/timevar.c:475
 msgid ""
@@ -1119,7 +1147,7 @@ msgstr ""
 
 #: lib/timevar.c:525
 msgid " TOTAL                 :"
-msgstr " TỔNG                 :"
+msgstr " TỔNG                  :"
 
 #: lib/timevar.c:561
 #, c-format
@@ -1129,12 +1157,12 @@ msgstr "thời gian theo %s: %ld.%06ld (%ld%%)\n"
 #: lib/w32spawn.h:43
 #, c-format
 msgid "_open_osfhandle failed"
-msgstr "_open_osfhandle bị lỗi"
+msgstr "_open_osfhandle gặp lỗi"
 
 #: lib/w32spawn.h:84
 #, c-format
 msgid "cannot restore fd %d: dup2 failed"
-msgstr "không thể phục hồi bộ mô tả tập tin %d: dup2 bị lỗi"
+msgstr "không thể phục hồi bộ mô tả tập tin %d: dup2 gặp lỗi"
 
 #: lib/wait-process.c:223 lib/wait-process.c:255 lib/wait-process.c:317
 #, c-format
@@ -1146,12 +1174,12 @@ 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 "state %d"
+#~ msgstr "tình trạng %d"
+
 #~ msgid "stray '@'"
 #~ msgstr "lạc '@'"
 
-#~ msgid "I/O error"
-#~ msgstr "Lỗi V/R"
-
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
 #~ msgstr ""
@@ -1184,4 +1212,4 @@ msgstr "tiến trình con %s đã nhận tín hiệu nghiệm trọng %d"
 #~ msgstr "Tạo cơ chế phân tích kiểu LALR(1) và GLR.\n"
 
 #~ msgid "tokens %s and %s both assigned number %d"
-#~ msgstr "cả hiệu bài %s lẫn %s đều được gán số %d"
+#~ msgstr "cả thẻ bài %s lẫn %s đều được gán số %d"
index bc30860..05bdaa2 100644 (file)
Binary files a/po/zh_CN.gmo and b/po/zh_CN.gmo differ
index 82f985b..e0e3754 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,12 +17,17 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "警告"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+#, fuzzy
+msgid "error"
+msgstr "I/O 错误"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "致命错误"
 
@@ -103,17 +108,17 @@ msgstr "拒绝覆盖输入文件 %s"
 msgid "conflicting outputs to file %s"
 msgstr "到文件 %s 的输出冲突"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "尝试“%s --help”了解更多信息。\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
 msgstr "用法:%s [选项]... 文件\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
@@ -121,16 +126,16 @@ msgid ""
 "\n"
 msgstr ""
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
 msgstr "长选项的强制参数对短选项也是强制的。\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
 msgstr "可选项也是如此。\n"
 
-#: src/getargs.c:295
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -141,15 +146,15 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
 
-#: src/getargs.c:307
+#: src/getargs.c:329
 #, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -159,10 +164,9 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:325
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -176,25 +180,24 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:340
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
 
-#: src/getargs.c:354
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -205,55 +208,84 @@ msgid ""
 "  `none'         disable the report\n"
 msgstr ""
 
-#: src/getargs.c:364
-#, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+
+#: src/getargs.c:395
+#, fuzzy, c-format
+msgid "Report bugs to <%s>.\n"
 msgstr ""
 "\n"
 "向 <%s> 报告问题。\n"
 
-#: src/getargs.c:380
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr ""
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr ""
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr ""
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr ""
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "由 Robert Corbett 和 Richard Stallman 编写。\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "版权所有 (C) %d Free Software Foundation, Inc.\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
 msgstr ""
 
-#: src/getargs.c:410
+#: src/getargs.c:458
 #, c-format
 msgid "multiple skeleton declarations are invalid"
 msgstr ""
 
-#: src/getargs.c:428
+#: src/getargs.c:476
 #, fuzzy, c-format
 msgid "%s: invalid language"
 msgstr "无效的语言“%s”"
 
-#: src/getargs.c:431
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
 msgstr "多语言声明是无效的"
 
-#: src/getargs.c:693
+#: src/getargs.c:747
 #, fuzzy, c-format
 msgid "%s: missing operand"
 msgstr "“%s”后缺少操作符"
 
-#: src/getargs.c:695
+#: src/getargs.c:749
 #, fuzzy, c-format
 msgid "extra operand %s"
 msgstr "额外的操作符“%s”"
@@ -266,7 +298,7 @@ msgstr "空"
 msgid "Grammar"
 msgstr "语法"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -279,7 +311,7 @@ msgstr ""
 "// 主页:<%s>。\n"
 "\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "行号溢出"
@@ -293,38 +325,37 @@ msgstr "列号溢出"
 msgid "rule useless in parser due to conflicts"
 msgstr "由于冲突,解析器中的规则不起作用"
 
-#: src/muscle-tab.c:436
+#: src/muscle-tab.c:450
 #, fuzzy, c-format
 msgid "%%define variable %s redefined"
 msgstr "重新定义了 %%define 变量“%s”"
 
-#: src/muscle-tab.c:439
-#, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
 msgstr "上次定义"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, fuzzy, c-format
 msgid "%s: undefined %%define variable %s"
 msgstr "%%define 变量 %s 的值无效:“%s”"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, fuzzy, c-format
 msgid "invalid value for %%define Boolean variable %s"
 msgstr "%%define 布尔型变量 %s 的值无效"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, fuzzy, c-format
 msgid "invalid value for %%define variable %s: %s"
 msgstr "%%define 变量 %s 的值无效:“%s”"
 
-#: src/muscle-tab.c:599
+#: src/muscle-tab.c:613
 #, fuzzy, c-format
 msgid "accepted value: %s"
 msgstr "接受的值:“%s”"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "参数声明中缺少识别符"
@@ -362,9 +393,9 @@ msgstr "接受"
 msgid "$default"
 msgstr "$default"
 
-#: src/print.c:373
-#, c-format
-msgid "state %d"
+#: src/print.c:373 src/print_graph.c:78
+#, fuzzy, c-format
+msgid "State %d"
 msgstr "状态 %d"
 
 #: src/print.c:409
@@ -394,72 +425,71 @@ msgstr "由于冲突,解析器中的规则不起作用"
 msgid "multiple %s declarations"
 msgstr "多次 %s 定义"
 
-#: src/reader.c:132
+#: src/reader.c:133
 #, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "上次声明"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
 msgstr ""
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
 msgstr ""
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr ""
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr ""
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "未使用的值:$%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "未设置的值:$$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
 msgstr ""
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr ""
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s 只影响 GLR 解析器"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s 后面只能跟正数"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "规则过长"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "输入语法中没有规则"
@@ -507,97 +537,95 @@ msgstr ""
 msgid "stray '%s'"
 msgstr ""
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
 msgstr ""
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
 msgstr ""
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
 msgstr "使用了 YYFAIL,它已经废弃并将被移除"
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
 msgstr ""
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
 msgstr "可能指:%c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
 msgstr ""
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
 msgstr " 位于 %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
 msgstr ""
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整数超出范围:%s"
 
-#: src/scan-code.l:609
+#: src/scan-code.l:610
 #, c-format
 msgid "invalid reference: %s"
 msgstr "无效引用:%s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, fuzzy, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
 msgstr "“%c”后语法错误,应为整数、字母、“_”、“[”或“$”"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
 msgstr ""
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
 msgstr ""
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
 msgstr ""
 
-#: src/scan-code.l:662
+#: src/scan-code.l:663
 #, c-format
 msgid "ambiguous reference: %s"
 msgstr ""
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
 msgstr ""
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
 msgstr ""
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
 msgstr ""
@@ -617,57 +645,59 @@ msgstr ""
 msgid "invalid identifier: %s"
 msgstr "无效标识符:%s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "无效字符:%s"
+#: src/scan-gram.l:295
+#, fuzzy
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "无效字符:%s"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
 msgstr ""
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
 msgstr "应有一个标识符"
 
-#: src/scan-gram.l:377
-#, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr ""
+#: src/scan-gram.l:381
+#, fuzzy
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "无效字符:%s"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
 msgstr ""
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
 msgstr ""
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "无效的空字符"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
 #, c-format
 msgid "invalid number after \\-escape: %s"
 msgstr ""
 
-#: src/scan-gram.l:567
+#: src/scan-gram.l:573
 #, c-format
 msgid "invalid character after \\-escape: %s"
 msgstr ""
 
-#: src/scan-gram.l:891
+#: src/scan-gram.l:901
 #, fuzzy, c-format
 msgid "missing %s at end of file"
 msgstr "文件末尾缺少“%s”"
 
-#: src/scan-gram.l:902
+#: src/scan-gram.l:912
 #, fuzzy, c-format
 msgid "missing %s at end of line"
 msgstr "行尾缺少“%s”"
@@ -702,82 +732,82 @@ msgstr "POSIX Yacc 禁止符号名中有破折号:%s"
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "输入语法中的符号过多(限制为 %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr ""
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "符号 %s 重复定义"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
 msgstr "符号 %s 重复声明"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
 msgstr ""
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
 msgstr ""
 
-#: src/symtab.c:411
+#: src/symtab.c:415
 #, c-format
 msgid "symbol %s used more than once as a literal string"
 msgstr ""
 
-#: src/symtab.c:414
+#: src/symtab.c:418
 #, c-format
 msgid "symbol %s given more than one literal string"
 msgstr ""
 
-#: src/symtab.c:530
+#: src/symtab.c:535
 #, c-format
 msgid "user token number %d redeclaration for %s"
 msgstr ""
 
-#: src/symtab.c:532
+#: src/symtab.c:539
 #, c-format
 msgid "previous declaration for %s"
 msgstr ""
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "起始符号 %s 未定义"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
 msgstr ""
 
-#: src/symtab.c:927
+#: src/symtab.c:935
 #, c-format
 msgid "redeclaration for default tagged %%destructor"
 msgstr ""
 
-#: src/symtab.c:940
+#: src/symtab.c:950
 #, c-format
 msgid "redeclaration for default tagless %%destructor"
 msgstr ""
 
-#: src/symtab.c:953
+#: src/symtab.c:965
 #, c-format
 msgid "redeclaration for default tagged %%printer"
 msgstr ""
 
-#: src/symtab.c:966
+#: src/symtab.c:980
 #, c-format
 msgid "redeclaration for default tagless %%printer"
 msgstr ""
@@ -993,13 +1023,13 @@ msgstr "%s:“-W %s”选项需要一个参数\n"
 msgid "memory exhausted"
 msgstr "内存耗尽"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
 #, c-format
 msgid "cannot create pipe"
 msgstr "无法创建管道"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
@@ -1071,8 +1101,8 @@ msgstr "%s 子进程"
 msgid "%s subprocess got fatal signal %d"
 msgstr "%s 子进程收到致命信号 %d"
 
-#~ msgid "I/O error"
-#~ msgstr "I/O 错误"
+#~ msgid "state %d"
+#~ msgstr "状态 %d"
 
 #~ msgid ""
 #~ "undefined %%define variable `%s' passed to muscle_percent_define_get_loc"
index 7c02c89..9400773 100644 (file)
Binary files a/po/zh_TW.gmo and b/po/zh_TW.gmo differ
index b00e4a3..0a7f888 100644 (file)
@@ -1,15 +1,15 @@
 # Traditional Chinese Messages for bison.
 # Copyright (C) 2006, 07 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
-# Wei-Lun Chao <chaoweilun@gmail.com>, 2006, 07.
+# Wei-Lun Chao <bluebat@member.fsf.org>, 2006, 2007, 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.3a\n"
+"Project-Id-Version: bison 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2013-03-27 23:36+0800\n"
+"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
@@ -17,29 +17,33 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: src/complain.c:116 src/complain.c:127 src/complain.c:136 src/complain.c:184
-#: src/complain.c:194
+#: src/complain.c:120 src/complain.c:131 src/complain.c:140 src/complain.c:188
+#: src/complain.c:198
 msgid "warning"
 msgstr "警告"
 
-#: src/complain.c:204 src/complain.c:211
+#: src/complain.c:151 src/complain.c:160 src/complain.c:167
+msgid "error"
+msgstr "錯誤"
+
+#: src/complain.c:208 src/complain.c:215
 msgid "fatal error"
 msgstr "嚴重錯誤"
 
 #: src/conflicts.c:77
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as shift"
-msgstr "    在規則 %d 與記號 %s 之間的衝突以偏移來解決"
+msgstr "    在規則 %d 與字組 %s 之間的衝突以偏移來解決"
 
 #: src/conflicts.c:86
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as reduce"
-msgstr "    在規則 %d 與記號 %s 之間的衝突以縮減來解決"
+msgstr "    在規則 %d 與字組 %s 之間的衝突以縮減來解決"
 
 #: src/conflicts.c:94
 #, c-format
 msgid "    Conflict between rule %d and token %s resolved as an error"
-msgstr "    在規則 %d 與記號 %s 之間的衝突以視為錯誤來解決"
+msgstr "    在規則 %d 與字組 %s 之間的衝突以視為錯誤來解決"
 
 #: src/conflicts.c:492
 #, c-format
@@ -79,14 +83,14 @@ msgid_plural "expected %d reduce/reduce conflicts"
 msgstr[0] "預期有 %d 項縮減/縮減衝突"
 
 #: src/files.c:114
-#, fuzzy, c-format
+#, c-format
 msgid "%s: cannot open"
-msgstr "無法開啟檔案「%s」"
+msgstr "%s:無法開啟"
 
 #: src/files.c:130
 #, c-format
 msgid "input/output error"
-msgstr ""
+msgstr "輸入/輸出錯誤"
 
 #: src/files.c:133
 #, c-format
@@ -96,42 +100,45 @@ msgstr "無法關閉檔案"
 #: src/files.c:352
 #, c-format
 msgid "refusing to overwrite the input file %s"
-msgstr ""
+msgstr "拒絕覆寫輸入檔案 %s"
 
 #: src/files.c:362
 #, c-format
 msgid "conflicting outputs to file %s"
 msgstr "輸出至檔案 %s 時發生衝突"
 
-#: src/getargs.c:271
+#: src/getargs.c:292
 #, c-format
 msgid "Try `%s --help' for more information.\n"
 msgstr "請嘗試執行「%s --help」來獲取更多資訊。\n"
 
-#: src/getargs.c:280
+#: src/getargs.c:301
 #, c-format
 msgid "Usage: %s [OPTION]... FILE\n"
-msgstr "用法:%s [選項]... 檔案\n"
+msgstr "用法:%s [選項] 檔案\n"
 
-#: src/getargs.c:281
+#: src/getargs.c:302
 msgid ""
 "Generate a deterministic LR or generalized LR (GLR) parser employing\n"
 "LALR(1), IELR(1), or canonical LR(1) parser tables.  IELR(1) and\n"
 "canonical LR(1) support is experimental.\n"
 "\n"
 msgstr ""
+"產生確定性 LR 或一般化 LR (GLR) 剖析器會用到\n"
+"LALR(1),IELR(1),或規範的 LR(1) 剖析器表格。 IELR(1) 和\n"
+"規範的 LR(1) 支援是實驗性質。\n"
+"\n"
 
-#: src/getargs.c:288
+#: src/getargs.c:309
 msgid ""
 "Mandatory arguments to long options are mandatory for short options too.\n"
-msgstr ""
+msgstr "長選項的必要引數對於短選項也同樣必要。\n"
 
-#: src/getargs.c:291
+#: src/getargs.c:312
 msgid "The same is true for optional arguments.\n"
-msgstr ""
+msgstr "對於選擇性引數而言是相同的。\n"
 
-#: src/getargs.c:295
-#, fuzzy
+#: src/getargs.c:316
 msgid ""
 "\n"
 "Operation modes:\n"
@@ -142,20 +149,26 @@ msgid ""
 "      --print-datadir        output directory containing skeletons and XSLT\n"
 "  -y, --yacc                 emulate POSIX Yacc\n"
 "  -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n"
+"  -f, --feature[=FEATURE]    activate miscellaneous features\n"
 "\n"
 msgstr ""
-"操作模式:\n"
-"  -h, --help                 顯示此說明並離開\n"
-"  -V, --version              輸出版本資訊並離開\n"
-"      --print-localedir      輸出包含語區相依資料的目錄\n"
-"  -y, --yacc                 模擬 POSIX yacc\n"
-
-#: src/getargs.c:307
-#, fuzzy, c-format
+"\n"
+"作業模式:\n"
+"  -h, --help                 顯示這份說明然後離開\n"
+"  -V, --version              輸出版本資訊然後離開\n"
+"      --print-localedir      輸出包含語區依存的資料目錄\n"
+"      --print-datadir        輸出包含架構和 XSLT 的目錄\n"
+"  -y, --yacc                 模擬 POSIX Yacc\n"
+"  -W, --warnings[=分類]      報告屬於該分類的警告\n"
+"  -f, --feature[=特色]       啟用雜項特色\n"
+"\n"
+
+# c-format
+#: src/getargs.c:329
+#, c-format
 msgid ""
 "Parser:\n"
 "  -L, --language=LANGUAGE          specify the output programming language\n"
-"                                   (this is an experimental feature)\n"
 "  -S, --skeleton=FILE              specify the skeleton to use\n"
 "  -t, --debug                      instrument the parser for debugging\n"
 "      --locations                  enable location support\n"
@@ -165,19 +178,20 @@ msgid ""
 "                                   deprecated by '-Dapi.prefix=PREFIX'\n"
 "  -l, --no-lines                   don't generate '#line' directives\n"
 "  -k, --token-table                include a table of token names\n"
-"\n"
 msgstr ""
 "剖析器:\n"
-"  -S, --skeleton=FILE        指定所使用的架構\n"
-"  -t, --debug                提供用於偵錯的剖析器\n"
-"      --locations            啟用位置計算\n"
-"  -p, --name-prefix=PREFIX   前置 PREFIX 於外部符號\n"
-"  -l, --no-lines             不產生「#line」指令\n"
-"  -n, --no-parser            只產生表格\n"
-"  -k, --token-table          包含記號名稱表格\n"
-
-#: src/getargs.c:325
-#, fuzzy
+"  -L, --language=語言              指定輸出程式語言\n"
+"  -S, --skeleton=檔案              指定使用的架構\n"
+"  -t, --debug                      提供剖析器用於偵錯\n"
+"      --locations                  啟用位置支援\n"
+"  -D, --define=名稱[=值]           類似於『%define 名稱「值」』\n"
+"  -F, --force-define=名稱[=值]     強制變更『%define 名稱「值」』\n"
+"  -p, --name-prefix=前綴           前置前綴為外部符號\n"
+"                                   由『-Dapi.prefix=前綴』所取代\n"
+"  -l, --no-lines                   不產生『#line』指令\n"
+"  -k, --token-table                包含字組名稱的表格\n"
+
+#: src/getargs.c:346
 msgid ""
 "Output:\n"
 "      --defines[=FILE]       also produce a header file\n"
@@ -191,32 +205,46 @@ msgid ""
 "  -g, --graph[=FILE]         also output a graph of the automaton\n"
 "  -x, --xml[=FILE]           also output an XML report of the automaton\n"
 "                             (the XML schema is experimental)\n"
-"\n"
 msgstr ""
 "輸出:\n"
-"  -d, --defines              同時產生標頭檔案\n"
-"  -r, --report=THINGS        同時在自動裝置上產生細節\n"
-"  -v, --verbose              如同「--report=state」\n"
-"  -b, --file-prefix=PREFIX   指定用於輸出檔案的 PREFIX\n"
-"  -o, --output=FILE          保留輸出到 FILE\n"
-"  -g, --graph                同時產生自動裝置 VCG 的描述\n"
-
-#: src/getargs.c:340
+"      --defines[=檔案]       也產生標頭檔\n"
+"  -d                         但是同樣無法指定檔案 (用於 POSIX Yacc)\n"
+"  -r, --report=事件          也於自動作業時產生細節\n"
+"      --report-file=檔案     寫入報告到檔案\n"
+"  -v, --verbose              如同『--report=狀態』\n"
+"  -b, --file-prefix=前綴     指定輸出檔案的前綴\n"
+"  -o, --output=檔案          留下輸出到檔案\n"
+"  -g, --graph[=檔案]         也輸出圖形的自動裝置\n"
+"  -x, --xml[=檔案]           也輸出自動作業的 XML 報告\n"
+"                             (XML 結構描述為實驗性質)\n"
+
+#: src/getargs.c:361
 msgid ""
 "Warning categories include:\n"
 "  `midrule-values'  unset or unused midrule values\n"
 "  `yacc'            incompatibilities with POSIX Yacc\n"
 "  `conflicts-sr'    S/R conflicts (enabled by default)\n"
 "  `conflicts-rr'    R/R conflicts (enabled by default)\n"
+"  `deprecated'      obsolete constructs\n"
 "  `other'           all other warnings (enabled by default)\n"
 "  `all'             all the warnings\n"
 "  `no-CATEGORY'     turn off warnings in CATEGORY\n"
 "  `none'            turn off all the warnings\n"
 "  `error'           treat warnings as errors\n"
-"\n"
 msgstr ""
-
-#: src/getargs.c:354
+"警告分類包含:\n"
+"  `midrule-values'  未設定或未使用的中段值\n"
+"  `yacc'            與 POSIX Yacc 不相容\n"
+"  `conflicts-sr'    S/R 衝突 (預設啟用)\n"
+"  `conflicts-rr'    R/R 衝突 (預設啟用)\n"
+"  `deprecated'      淘汰的建構\n"
+"  `other'           所有其他警告 (預設啟用)\n"
+"  `all'             所有警告\n"
+"  `no-CATEGORY'     在分類中關閉警告\n"
+"  `none'            關閉所有警告\n"
+"  `error'           將警告當作錯誤\n"
+
+#: src/getargs.c:376
 msgid ""
 "THINGS is a list of comma separated words that can include:\n"
 "  `state'        describe the states\n"
@@ -229,33 +257,67 @@ msgstr ""
 "THINGS 是以逗號所分隔的字詞清單,其中可以包含:\n"
 "  `state'        描述狀態\n"
 "  `itemset'      完成核心項目集合並附有它們的結束\n"
-"  `lookahead'    明確地將預估記號關聯到項目\n"
+"  `lookahead'    明確地將預估字組關聯到項目\n"
 "  `solved'       描述正在解決的偏移/縮減衝突\n"
 "  `all'          包含所有以上的資訊\n"
 "  `none'         停用報告\n"
 
-#: src/getargs.c:364
-#, fuzzy, c-format
+#: src/getargs.c:387
 msgid ""
-"\n"
-"Report bugs to <%s>.\n"
-msgstr "回報錯誤請寄 <"
+"FEATURE is a list of comma separated words that can include:\n"
+"  `caret'        show errors with carets\n"
+"  `all'          all of the above\n"
+"  `none'         disable all of the above\n"
+"  "
+msgstr ""
+"FEATURE 是逗號分隔的字詞清單可以包含:\n"
+"  `caret'        以插字符號顯示錯誤\n"
+"  `all'          以上全部\n"
+"  `none'         停用以上全部\n"
+"  "
 
-#: src/getargs.c:380
+#: src/getargs.c:395
+#, c-format
+msgid "Report bugs to <%s>.\n"
+msgstr "將錯誤通報給 <%s>。\n"
+
+#: src/getargs.c:396
+#, c-format
+msgid "%s home page: <%s>.\n"
+msgstr "%s 首頁:<%s>。\n"
+
+#: src/getargs.c:397
+msgid "General help using GNU software: <http://www.gnu.org/gethelp/>.\n"
+msgstr "使用 GNU 軟體的一般說明:<http://www.gnu.org/gethelp/>。\n"
+
+#. TRANSLATORS: Replace LANG_CODE in this URL with your language
+#. code <http://translationproject.org/team/LANG_CODE.html> to
+#. form one of the URLs at http://translationproject.org/team/.
+#. Otherwise, replace the entire URL with your translation team's
+#. email address.
+#: src/getargs.c:410
+msgid "Report translation bugs to <http://translationproject.org/team/>.\n"
+msgstr "報告翻譯錯誤給 <http://translationproject.org/team/>。\n"
+
+#: src/getargs.c:412
+msgid "For complete documentation, run: info bison.\n"
+msgstr "要取得完整文件請執行:info bison。\n"
+
+#: src/getargs.c:428
 #, c-format
 msgid "bison (GNU Bison) %s"
 msgstr "bison (GNU Bison) %s"
 
-#: src/getargs.c:382
+#: src/getargs.c:430
 msgid "Written by Robert Corbett and Richard Stallman.\n"
 msgstr "由 Robert Corbett 與 Richard Stallman 編寫。\n"
 
-#: src/getargs.c:386
+#: src/getargs.c:434
 #, c-format
 msgid "Copyright (C) %d Free Software Foundation, Inc.\n"
 msgstr "版權所有 (C) %d 自由軟體基金會。\n"
 
-#: src/getargs.c:389
+#: src/getargs.c:437
 msgid ""
 "This is free software; see the source for copying conditions.  There is NO\n"
 "warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.\n"
@@ -263,30 +325,29 @@ msgstr ""
 "這是自由軟體;請參考原始碼的版權聲明。本軟體不提供任何保證,甚至不會包括\n"
 "可售性或適用於任何特定目的的保證。\n"
 
-#: src/getargs.c:410
-#, fuzzy, c-format
+#: src/getargs.c:458
+#, c-format
 msgid "multiple skeleton declarations are invalid"
-msgstr "多重 %s 宣告"
+msgstr "多重架構宣告無效"
 
-#: src/getargs.c:428
-#, fuzzy, c-format
+#: src/getargs.c:476
+#, c-format
 msgid "%s: invalid language"
-msgstr "無效的字元:%s"
+msgstr "%s:無效的語言"
 
-#: src/getargs.c:431
-#, fuzzy
+#: src/getargs.c:479
 msgid "multiple language declarations are invalid"
-msgstr "多重 %s 宣告"
+msgstr "多重語言宣告無效"
 
-#: src/getargs.c:693
-#, fuzzy, c-format
+#: src/getargs.c:747
+#, c-format
 msgid "%s: missing operand"
-msgstr "「%s」之後缺少了運算元"
+msgstr "%s:缺少運算元"
 
-#: src/getargs.c:695
-#, fuzzy, c-format
+#: src/getargs.c:749
+#, c-format
 msgid "extra operand %s"
-msgstr "多餘的運算元「%s」"
+msgstr "額外運算元 %s"
 
 #: src/gram.c:112
 msgid "empty"
@@ -296,7 +357,7 @@ msgstr "空白"
 msgid "Grammar"
 msgstr "文法"
 
-#: src/graphviz.c:43
+#: src/graphviz.c:45
 #, c-format
 msgid ""
 "// Generated by %s.\n"
@@ -304,54 +365,56 @@ msgid ""
 "// Home page: <%s>.\n"
 "\n"
 msgstr ""
+"// 由 %s 所產生。\n"
+"// 將錯誤通報給 <%s>。\n"
+"// 首頁:<%s>。\n"
+"\n"
 
-#: src/location.c:93 src/scan-gram.l:855
+#: src/location.c:93 src/scan-gram.l:859
 #, c-format
 msgid "line number overflow"
 msgstr "列號溢位"
 
 #: src/location.c:95
-#, fuzzy, c-format
+#, c-format
 msgid "column number overflow"
-msgstr "列號溢位"
+msgstr "欄數溢位"
 
 #: src/main.c:146
-#, fuzzy
 msgid "rule useless in parser due to conflicts"
-msgstr "由於發生衝突導致規則一直無法縮減"
+msgstr "規則由於衝突而在剖析器中無用"
 
-#: src/muscle-tab.c:436
-#, fuzzy, c-format
+#: src/muscle-tab.c:450
+#, c-format
 msgid "%%define variable %s redefined"
-msgstr "符號 %s 被重新定義"
+msgstr "%%define 變數 %s 被重新定義"
 
-#: src/muscle-tab.c:439
-#, fuzzy, c-format
+#: src/muscle-tab.c:453
 msgid "previous definition"
-msgstr "前次宣告"
+msgstr "前一個定義"
 
-#: src/muscle-tab.c:478 src/muscle-tab.c:492 src/muscle-tab.c:544
-#: src/muscle-tab.c:609
+#: src/muscle-tab.c:490 src/muscle-tab.c:504 src/muscle-tab.c:556
+#: src/muscle-tab.c:624
 #, c-format
 msgid "%s: undefined %%define variable %s"
-msgstr ""
+msgstr "%s:未定義的 %%define 變數 %s"
 
-#: src/muscle-tab.c:538
+#: src/muscle-tab.c:550
 #, c-format
 msgid "invalid value for %%define Boolean variable %s"
-msgstr ""
+msgstr "無效的值用於 %%define 布林變數 %s"
 
-#: src/muscle-tab.c:596
+#: src/muscle-tab.c:609
 #, c-format
 msgid "invalid value for %%define variable %s: %s"
-msgstr ""
+msgstr "無效的值用於 %%define 變數 %s:%s"
 
-#: src/muscle-tab.c:599
-#, fuzzy, c-format
+#: src/muscle-tab.c:613
+#, c-format
 msgid "accepted value: %s"
-msgstr "未使用的值:$%d"
+msgstr "被接受的值:%s"
 
-#: src/parse-gram.y:746
+#: src/parse-gram.y:747
 #, c-format
 msgid "missing identifier in parameter declaration"
 msgstr "在參數宣告中缺少識別項"
@@ -359,7 +422,7 @@ msgstr "在參數宣告中缺少識別項"
 #: src/print.c:47
 #, c-format
 msgid " type %d is %s\n"
-msgstr "類型 %d 為 %s\n"
+msgstr " 類型 %d 為 %s\n"
 
 #: src/print.c:164
 #, c-format
@@ -389,9 +452,9 @@ msgstr "接受"
 msgid "$default"
 msgstr "$預設"
 
-#: src/print.c:373
+#: src/print.c:373 src/print_graph.c:78
 #, c-format
-msgid "state %d"
+msgid "State %d"
 msgstr "狀態 %d"
 
 #: src/print.c:409
@@ -405,7 +468,7 @@ msgstr "非終結語詞,附有它們出現處的規則"
 #: src/print.c:465
 #, c-format
 msgid " on left:"
-msgstr "於左側:"
+msgstr " 於左側:"
 
 #: src/print.c:482
 #, c-format
@@ -413,121 +476,115 @@ msgid " on right:"
 msgstr "於右側:"
 
 #: src/print.c:510
-#, fuzzy
 msgid "Rules useless in parser due to conflicts"
-msgstr "由於發生衝突導致規則一直無法縮減"
+msgstr "規則由於衝突而在剖析器中無用"
 
 #: src/reader.c:62
 #, c-format
 msgid "multiple %s declarations"
 msgstr "多重 %s 宣告"
 
-#: src/reader.c:132
-#, fuzzy, c-format
+#: src/reader.c:133
+#, c-format
 msgid "result type clash on merge function %s: <%s> != <%s>"
-msgstr "結果類型與合併功能相抵觸「%s」:<%s> != <%s>"
+msgstr "結果型態抵觸發生於合併函式 %s:<%s>!=<%s>"
 
-#: src/reader.c:135 src/symtab.c:154 src/symtab.c:162 src/symtab.c:929
-#: src/symtab.c:942 src/symtab.c:955 src/symtab.c:968
-#, c-format
+#: src/reader.c:139 src/symtab.c:156 src/symtab.c:166 src/symtab.c:938
+#: src/symtab.c:953 src/symtab.c:968 src/symtab.c:983
 msgid "previous declaration"
 msgstr "前次宣告"
 
-#: src/reader.c:201
+#: src/reader.c:205
 #, c-format
 msgid "duplicated symbol name for %s ignored"
-msgstr ""
+msgstr "重複的符號名稱用於 %s 被忽略"
 
-#: src/reader.c:245
+#: src/reader.c:249
 #, c-format
 msgid "rule given for %s, which is a token"
-msgstr "用於 %s 這項記號的規則"
+msgstr "用於 %s 這項字組的規則"
 
-#: src/reader.c:300
+#: src/reader.c:304
 #, c-format
 msgid "type clash on default action: <%s> != <%s>"
 msgstr "類型與預設動作相抵觸:<%s> != <%s>"
 
-#: src/reader.c:306
+#: src/reader.c:310
 #, c-format
 msgid "empty rule for typed nonterminal, and no action"
 msgstr "空白規則用於賦予類型的非終結語詞,以及沒有動作"
 
-#: src/reader.c:324
+#: src/reader.c:328
 #, c-format
 msgid "unused value: $%d"
 msgstr "未使用的值:$%d"
 
-#: src/reader.c:326
+#: src/reader.c:330
 msgid "unset value: $$"
 msgstr "解除設定值:$$"
 
-#: src/reader.c:337
+#: src/reader.c:341
 #, c-format
 msgid "token for %%prec is not defined: %s"
-msgstr ""
+msgstr "用於 %%prec 的字組未定義:%s"
 
-#: src/reader.c:427 src/reader.c:441 src/reader.c:454
+#: src/reader.c:431 src/reader.c:445 src/reader.c:458
 #, c-format
 msgid "only one %s allowed per rule"
 msgstr "每個規則只允許一個 %s"
 
-#: src/reader.c:437 src/reader.c:452
+#: src/reader.c:441 src/reader.c:456
 #, c-format
 msgid "%s affects only GLR parsers"
 msgstr "%s 只影響 GLR 剖析器"
 
-#: src/reader.c:439
+#: src/reader.c:443
 #, c-format
 msgid "%s must be followed by positive number"
 msgstr "%s 必須在正數之後"
 
-#: src/reader.c:550
+#: src/reader.c:554
 #, c-format
 msgid "rule is too long"
 msgstr "規則太長"
 
-#: src/reader.c:668
+#: src/reader.c:672
 #, c-format
 msgid "no rules in the input grammar"
 msgstr "在輸入文法中沒有規則"
 
 #: src/reduce.c:241
-#, fuzzy
 msgid "rule useless in grammar"
-msgstr "在輸入文法中沒有規則"
+msgstr "規則在文法中無用"
 
 #: src/reduce.c:302
 #, c-format
 msgid "nonterminal useless in grammar: %s"
-msgstr ""
+msgstr "非終結語詞在文法中無用:%s"
 
 #: src/reduce.c:350
-#, fuzzy
 msgid "Nonterminals useless in grammar"
-msgstr "非終結語詞,附有它們出現處的規則"
+msgstr "非終結語詞在文法中無用"
 
 #: src/reduce.c:363
-#, fuzzy
 msgid "Terminals unused in grammar"
-msgstr "在輸入文法中沒有規則"
+msgstr "終端機在文法中未使用"
 
 #: src/reduce.c:372
-#, fuzzy
 msgid "Rules useless in grammar"
-msgstr "在輸入文法中沒有規則"
+msgstr "規則在文法中無用"
 
 #: src/reduce.c:385
 #, c-format
 msgid "%d nonterminal useless in grammar"
 msgid_plural "%d nonterminals useless in grammar"
-msgstr[0] ""
+msgstr[0] "%d 非終結語詞在文法中無用"
 
 #: src/reduce.c:390
-#, fuzzy, c-format
+#, c-format
 msgid "%d rule useless in grammar"
 msgid_plural "%d rules useless in grammar"
-msgstr[0] "在輸入文法中沒有規則"
+msgstr[0] "%d 規則在文法中無用"
 
 #: src/reduce.c:419
 #, c-format
@@ -537,107 +594,105 @@ msgstr "啟始符號 %s 不衍生任何句子"
 #: src/scan-code.l:188
 #, c-format
 msgid "stray '%s'"
-msgstr ""
+msgstr "零星的『%s』"
 
-#: src/scan-code.l:227
-#, c-format
+#: src/scan-code.l:229
 msgid "a ';' might be needed at the end of action code"
-msgstr ""
+msgstr "『;』可能需要在動作編碼的結尾"
 
-#: src/scan-code.l:228
-#, c-format
+#: src/scan-code.l:232
 msgid "future versions of Bison will not add the ';'"
-msgstr ""
+msgstr "未來的 Bison 版本將不會加入『;』"
 
-#: src/scan-code.l:250
+#: src/scan-code.l:254
 #, c-format
 msgid "use of YYFAIL, which is deprecated and will be removed"
-msgstr ""
+msgstr "YYFAIL 將不宜再用而會被移除"
 
-#: src/scan-code.l:427 src/scan-code.l:430
+#: src/scan-code.l:431 src/scan-code.l:434
 #, c-format
 msgid "refers to: %c%s at %s"
-msgstr ""
+msgstr "參考:%c%s 於 %s"
 
-#: src/scan-code.l:446
+#: src/scan-code.l:450
 #, c-format
 msgid "possibly meant: %c"
-msgstr ""
+msgstr "可能意指:%c"
 
-#: src/scan-code.l:455
+#: src/scan-code.l:459
 #, c-format
 msgid ", hiding %c"
-msgstr ""
+msgstr ",隱藏 %c"
 
-#: src/scan-code.l:463
+#: src/scan-code.l:467
 #, c-format
 msgid " at %s"
-msgstr ""
+msgstr " 於 %s"
 
-#: src/scan-code.l:468
+#: src/scan-code.l:472
 #, c-format
 msgid ", cannot be accessed from mid-rule action at $%d"
-msgstr ""
+msgstr ",無法從 位於 $%d 的 mid-rule 動作存取"
 
-#: src/scan-code.l:520 src/scan-gram.l:777
+#: src/scan-code.l:521 src/scan-gram.l:783
 #, c-format
 msgid "integer out of range: %s"
 msgstr "整數超過範圍:%s"
 
-#: src/scan-code.l:609
-#, fuzzy, c-format
+#: src/scan-code.l:610
+#, c-format
 msgid "invalid reference: %s"
-msgstr "無效的指令:%s"
+msgstr "無效的參考:%s"
 
-#: src/scan-code.l:618
+#: src/scan-code.l:619
 #, c-format
 msgid "syntax error after '%c', expecting integer, letter, '_', '[', or '$'"
-msgstr ""
+msgstr "語法錯誤發生於『%c』之後,預期為整數、字母、『_』、『[』或『$』"
 
-#: src/scan-code.l:625
+#: src/scan-code.l:626
 #, c-format
 msgid "symbol not found in production before $%d: %.*s"
-msgstr ""
+msgstr "在 $%d 之前的結果中找不到符號:%.*s"
 
-#: src/scan-code.l:632
+#: src/scan-code.l:633
 #, c-format
 msgid "symbol not found in production: %.*s"
-msgstr ""
+msgstr "在結果中找不到符號:%.*s"
 
-#: src/scan-code.l:647
+#: src/scan-code.l:648
 #, c-format
 msgid "misleading reference: %s"
-msgstr ""
+msgstr "誤導的參考:%s"
 
-#: src/scan-code.l:662
-#, fuzzy, c-format
+#: src/scan-code.l:663
+#, c-format
 msgid "ambiguous reference: %s"
-msgstr "%2$s 的引數 %1$s 不明確"
+msgstr "模稜兩可的參考:%s"
 
-#: src/scan-code.l:699
+#: src/scan-code.l:700
 #, c-format
 msgid "explicit type given in untyped grammar"
-msgstr ""
+msgstr "在未定型態文法中給定明確的型態"
 
-#: src/scan-code.l:758
+#: src/scan-code.l:759
 #, c-format
 msgid "$$ for the midrule at $%d of %s has no declared type"
-msgstr ""
+msgstr "$$ 對於在 %2$s 中 $%1$d 的中段沒有任何宣告型態"
 
-#: src/scan-code.l:763
+#: src/scan-code.l:764
 #, c-format
 msgid "$$ of %s has no declared type"
-msgstr ""
+msgstr "%s 中的 $$ 沒有任何宣告型態"
 
-#: src/scan-code.l:785
+#: src/scan-code.l:786
 #, c-format
 msgid "$%s of %s has no declared type"
-msgstr ""
+msgstr "%2$s 中的 $%1$s 沒有任何宣告型態"
 
 #: src/scan-gram.l:149
-#, fuzzy, c-format
+#, c-format
 msgid "stray ',' treated as white space"
-msgstr "零星的「,」會被視為空白"
+msgstr "零星的 ',' 將視為空白"
 
 #: src/scan-gram.l:222
 #, c-format
@@ -645,79 +700,79 @@ msgid "invalid directive: %s"
 msgstr "無效的指令:%s"
 
 #: src/scan-gram.l:250
-#, fuzzy, c-format
+#, c-format
 msgid "invalid identifier: %s"
-msgstr "無效的指令:%s"
+msgstr "無效的識別碼:%s"
 
-#: src/scan-gram.l:294
-#, c-format
-msgid "invalid character: %s"
-msgstr "無效的字元:%s"
+#: src/scan-gram.l:295
+msgid "invalid character"
+msgid_plural "invalid characters"
+msgstr[0] "無效字元"
 
-#: src/scan-gram.l:352
+#: src/scan-gram.l:354
 #, c-format
 msgid "unexpected identifier in bracketed name: %s"
-msgstr ""
+msgstr "中括號內未預期的識別名稱:%s"
 
-#: src/scan-gram.l:374
+#: src/scan-gram.l:376
 #, c-format
 msgid "an identifier expected"
-msgstr ""
+msgstr "預期是一個識別碼"
 
-#: src/scan-gram.l:377
-#, fuzzy, c-format
-msgid "invalid character in bracketed name: %s"
-msgstr "無效的字元:%s"
+#: src/scan-gram.l:381
+msgid "invalid character in bracketed name"
+msgid_plural "invalid characters in bracketed name"
+msgstr[0] "在中括號內的名稱有無效字元"
 
-#: src/scan-gram.l:475 src/scan-gram.l:496
+#: src/scan-gram.l:481 src/scan-gram.l:502
 #, c-format
 msgid "empty character literal"
-msgstr ""
+msgstr "空的字元實字"
 
-#: src/scan-gram.l:480 src/scan-gram.l:501
+#: src/scan-gram.l:486 src/scan-gram.l:507
 #, c-format
 msgid "extra characters in character literal"
-msgstr ""
+msgstr "額外字元於字元實字"
 
-#: src/scan-gram.l:512
+#: src/scan-gram.l:518
 #, c-format
 msgid "invalid null character"
 msgstr "無效的空字元"
 
-#: src/scan-gram.l:525 src/scan-gram.l:535 src/scan-gram.l:555
-#, fuzzy, c-format
+#: src/scan-gram.l:531 src/scan-gram.l:541 src/scan-gram.l:561
+#, c-format
 msgid "invalid number after \\-escape: %s"
-msgstr "無效的空字元:%s"
+msgstr "無效數字於 \\-escape 之後:%s"
 
-#: src/scan-gram.l:567
-#, fuzzy, c-format
+#: src/scan-gram.l:573
+#, c-format
 msgid "invalid character after \\-escape: %s"
-msgstr "無效的字元:%s"
+msgstr "\\-跳脫符號之後的無效字元:%s"
 
-#: src/scan-gram.l:891
-#, fuzzy, c-format
+#: src/scan-gram.l:901
+#, c-format
 msgid "missing %s at end of file"
-msgstr "æª\94æ¡\88æ\9c«ç«¯ç¼ºå°\91ã\80\8c%sã\80\8d"
+msgstr "æ\96¼æª\94æ¡\88çµ\90尾缺å°\91 %s"
 
-#: src/scan-gram.l:902
-#, fuzzy, c-format
+#: src/scan-gram.l:912
+#, c-format
 msgid "missing %s at end of line"
-msgstr "列尾缺少「%s」"
+msgstr " 於列尾缺少 %s"
 
 #: src/scan-skel.l:146
 #, c-format
 msgid "unclosed %s directive in skeleton"
-msgstr ""
+msgstr "在架構中有未關閉的 %s 指令"
 
 #: src/scan-skel.l:291
 #, c-format
 msgid "too few arguments for %s directive in skeleton"
-msgstr ""
+msgstr "在架構中的 %s 指令引數太少"
 
 #: src/scan-skel.l:298
 #, c-format
 msgid "too many arguments for %s directive in skeleton"
-msgstr ""
+msgstr "在架構中的 %s 指令引數太多"
 
 #: src/symlist.c:211
 #, c-format
@@ -727,152 +782,152 @@ msgstr "無效的 $ 值:$%d"
 #: src/symtab.c:71
 #, c-format
 msgid "POSIX Yacc forbids dashes in symbol names: %s"
-msgstr ""
+msgstr "POSIX Yacc 在符號名稱中禁用橫線:%s"
 
 #: src/symtab.c:91
 #, c-format
 msgid "too many symbols in input grammar (limit is %d)"
 msgstr "在輸入文法中太多符號 (限制為 %d)"
 
-#: src/symtab.c:153
+#: src/symtab.c:154
 #, c-format
 msgid "%s redeclaration for %s"
 msgstr "%s 重複宣告了 %s"
 
-#: src/symtab.c:161
+#: src/symtab.c:164
 #, c-format
 msgid "%s redeclaration for <%s>"
 msgstr "%s 重複宣告了 <%s>"
 
-#: src/symtab.c:328
+#: src/symtab.c:332
 #, c-format
 msgid "symbol %s redefined"
 msgstr "符號 %s 被重新定義"
 
-#: src/symtab.c:342
+#: src/symtab.c:346
 #, c-format
 msgid "symbol %s redeclared"
-msgstr "符號 %s 被重宣告"
+msgstr "符號 %s 被重宣告"
 
-#: src/symtab.c:363
+#: src/symtab.c:367
 #, c-format
 msgid "redefining user token number of %s"
-msgstr "重新定義 %s 的使用者記號數目"
+msgstr "重新定義 %s 的使用者字組數目"
 
-#: src/symtab.c:391
+#: src/symtab.c:395
 #, c-format
 msgid "symbol %s is used, but is not defined as a token and has no rules"
-msgstr "符號 %s 已使用過,但是並未定義為記號也沒有規則"
+msgstr "符號 %s 已使用過,但是並未定義為字組也沒有規則"
 
-#: src/symtab.c:411
-#, fuzzy, c-format
+#: src/symtab.c:415
+#, c-format
 msgid "symbol %s used more than once as a literal string"
-msgstr "符號「%s」被超過一次做為常值字串使用"
+msgstr "符號 %s 超過一次使用為實字字串"
 
-#: src/symtab.c:414
-#, fuzzy, c-format
+#: src/symtab.c:418
+#, c-format
 msgid "symbol %s given more than one literal string"
-msgstr "符號「%s」給予一個以上的原文字串"
+msgstr "符號 %s 給定了超過一個實字字串"
 
-#: src/symtab.c:530
-#, fuzzy, c-format
+#: src/symtab.c:535
+#, c-format
 msgid "user token number %d redeclaration for %s"
-msgstr "%s 重複宣告了 %s"
+msgstr "使用者字組數字 %d 被重複宣告為 %s"
 
-#: src/symtab.c:532
-#, fuzzy, c-format
+#: src/symtab.c:539
+#, c-format
 msgid "previous declaration for %s"
-msgstr "前次宣告"
+msgstr "%s 的前一個宣告"
 
-#: src/symtab.c:908
+#: src/symtab.c:915
 #, c-format
 msgid "the start symbol %s is undefined"
 msgstr "未定義起始符號 %s"
 
-#: src/symtab.c:912
+#: src/symtab.c:919
 #, c-format
 msgid "the start symbol %s is a token"
-msgstr "起始符號 %s 是一項記號"
+msgstr "起始符號 %s 是一項字組"
 
-#: src/symtab.c:927
-#, fuzzy, c-format
+#: src/symtab.c:935
+#, c-format
 msgid "redeclaration for default tagged %%destructor"
-msgstr "重複宣告了預設的 %%destructor"
+msgstr "對於預設有標籤 %%destructor 的重複宣告"
 
-#: src/symtab.c:940
-#, fuzzy, c-format
+#: src/symtab.c:950
+#, c-format
 msgid "redeclaration for default tagless %%destructor"
-msgstr "重複宣告了預設的 %%destructor"
+msgstr "對於預設無標籤 %%destructor 的重複宣告"
 
-#: src/symtab.c:953
-#, fuzzy, c-format
+#: src/symtab.c:965
+#, c-format
 msgid "redeclaration for default tagged %%printer"
-msgstr "重複宣告了預設的 %%printer"
+msgstr "對於預設有標籤 %%printer 的重複宣告"
 
-#: src/symtab.c:966
-#, fuzzy, c-format
+#: src/symtab.c:980
+#, c-format
 msgid "redeclaration for default tagless %%printer"
-msgstr "重複宣告了預設的 %%printer"
+msgstr "對於預設無標籤 %%printer 的重複宣告"
 
 #: djgpp/subpipe.c:63 djgpp/subpipe.c:286 djgpp/subpipe.c:288
 #, c-format
 msgid "removing of '%s' failed"
-msgstr ""
+msgstr "『%s』的移除失敗"
 
 #: djgpp/subpipe.c:85 djgpp/subpipe.c:92
 #, c-format
 msgid "creation of a temporary file failed"
-msgstr ""
+msgstr "暫存檔的建立失敗"
 
 #: djgpp/subpipe.c:127
 #, c-format
 msgid "saving stdin failed"
-msgstr ""
+msgstr "儲存標準輸入時失敗"
 
 #: djgpp/subpipe.c:131
 #, c-format
 msgid "saving stdout failed"
-msgstr ""
+msgstr "儲存標準輸出時失敗"
 
 #: djgpp/subpipe.c:153 djgpp/subpipe.c:197 djgpp/subpipe.c:258
 #, c-format
 msgid "opening of tmpfile failed"
-msgstr ""
+msgstr "開啟暫存檔時失敗"
 
 #: djgpp/subpipe.c:157
 #, c-format
 msgid "redirecting bison's stdout to the temporary file failed"
-msgstr ""
+msgstr "將 bison 的標準輸出重導至暫存檔時失敗"
 
 #: djgpp/subpipe.c:201
 #, c-format
 msgid "redirecting m4's stdin from the temporary file failed"
-msgstr ""
+msgstr "將 m4 的標準輸入重導自暫存檔時失敗"
 
 #: djgpp/subpipe.c:212
 #, c-format
 msgid "opening of a temporary file failed"
-msgstr ""
+msgstr "開啟暫存檔時失敗"
 
 #: djgpp/subpipe.c:218
 #, c-format
 msgid "redirecting m4's stdout to a temporary file failed"
-msgstr ""
+msgstr "重新導向 m4 的標準輸出到暫存檔時失敗"
 
 #: djgpp/subpipe.c:234
-#, fuzzy, c-format
+#, c-format
 msgid "subsidiary program '%s' interrupted"
-msgstr "無法執行輔助程式「%s」"
+msgstr "附加程式『%s』被中斷"
 
 #: djgpp/subpipe.c:241
-#, fuzzy, c-format
+#, c-format
 msgid "subsidiary program '%s' not found"
-msgstr "無法執行輔助程式「%s」"
+msgstr "找不到附加程式『%s』"
 
 #: djgpp/subpipe.c:265
 #, c-format
 msgid "redirecting bison's stdin from the temporary file failed"
-msgstr ""
+msgstr "從暫存檔重新導向 bison 的標準輸入時失敗"
 
 #: lib/argmatch.c:133
 #, c-format
@@ -940,104 +995,100 @@ msgid "Accumulated runs = %u\n"
 msgstr "累積的執行 = %u\n"
 
 #: lib/bitset_stats.c:259 lib/bitset_stats.c:264
-#, fuzzy
 msgid "cannot read stats file"
-msgstr "無法讀取統計檔"
+msgstr "無法讀取統計檔"
 
 #: lib/bitset_stats.c:261
-#, fuzzy, c-format
+#, c-format
 msgid "bad stats file size\n"
-msgstr "不當的統計檔大小。\n"
+msgstr "不當的統計檔案大小\n"
 
 #: lib/bitset_stats.c:287 lib/bitset_stats.c:289
-#, fuzzy
 msgid "cannot write stats file"
-msgstr "無法寫入統計檔"
+msgstr "無法寫入統計檔"
 
 #: lib/bitset_stats.c:292
-#, fuzzy
 msgid "cannot open stats file for writing"
-msgstr "寫入時無法開啟統計檔。"
+msgstr "無法開啟統計檔案用於寫入"
 
 #: lib/closeout.c:112
-#, fuzzy
 msgid "write error"
-msgstr "å\9a´é\87\8d錯誤"
+msgstr "寫å\85¥錯誤"
 
 #: lib/error.c:188
 msgid "Unknown system error"
 msgstr "不明的系統錯誤"
 
 #: lib/getopt.c:547 lib/getopt.c:576
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '%s' is ambiguous; possibilities:"
-msgstr "%sï¼\9aé\81¸é \85ã\80\8c%sã\80\8dä¸\8dæ\98\8e確\n"
+msgstr "%sï¼\9aé\81¸é \85ã\80\8e%sã\80\8fæ\98¯æ¨¡ç¨\9cå\85©å\8f¯ç\9a\84ï¼\9bå\8f¯è\83½æ\80§ï¼\9a"
 
 #: lib/getopt.c:624 lib/getopt.c:628
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '--%s' doesn't allow an argument\n"
-msgstr "%sï¼\9aé\81¸é \85ã\80\8c--%sã\80\8dä¸\8då\8f¯é\85\8då\90\88å¼\95æ\95¸ä½¿ç\94¨\n"
+msgstr "%sï¼\9aé\81¸é \85ã\80\8e--%sã\80\8fä¸\8då\85\81許å¼\95æ\95¸\n"
 
 #: lib/getopt.c:637 lib/getopt.c:642
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '%c%s' doesn't allow an argument\n"
-msgstr "%sï¼\9aé\81¸é \85ã\80\8c%c%sã\80\8dä¸\8då\8f¯é\85\8då\90\88å¼\95æ\95¸ä½¿ç\94¨\n"
+msgstr "%sï¼\9aé\81¸é \85ã\80\8e%c%sã\80\8fä¸\8då\85\81許å¼\95æ\95¸\n"
 
 #: lib/getopt.c:685 lib/getopt.c:704
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '--%s' requires an argument\n"
-msgstr "%sï¼\9aé\81¸é \85ã\80\8c%sã\80\8dé\9c\80è¦\81引數\n"
+msgstr "%sï¼\9aé\81¸é \85ã\80\8e--%sã\80\8fé\9c\80è¦\81ä¸\80å\80\8b引數\n"
 
 #: lib/getopt.c:742 lib/getopt.c:745
-#, fuzzy, c-format
+#, c-format
 msgid "%s: unrecognized option '--%s'\n"
-msgstr "%sï¼\9aç\84¡æ³\95è­\98å\88¥ç\9a\84é\81¸é \85ã\80\8c--%sã\80\8d\n"
+msgstr "%sï¼\9aç\84¡æ³\95辨è­\98ç\9a\84é\81¸é \85ã\80\8e--%sã\80\8f\n"
 
 #: lib/getopt.c:753 lib/getopt.c:756
-#, fuzzy, c-format
+#, c-format
 msgid "%s: unrecognized option '%c%s'\n"
-msgstr "%sï¼\9aç\84¡æ³\95è­\98å\88¥ç\9a\84é\81¸é \85ã\80\8c%c%sã\80\8d\n"
+msgstr "%sï¼\9aç\84¡æ³\95辨è­\98ç\9a\84é\81¸é \85ã\80\8e%c%sã\80\8f\n"
 
 #: lib/getopt.c:805 lib/getopt.c:808
-#, fuzzy, c-format
+#, c-format
 msgid "%s: invalid option -- '%c'\n"
-msgstr "%s:無效的選項 ─ %c\n"
+msgstr "%s:無效的選項 --『%c』\n"
 
 #: lib/getopt.c:861 lib/getopt.c:878 lib/getopt.c:1088 lib/getopt.c:1106
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option requires an argument -- '%c'\n"
-msgstr "%s:選項需要引數 ─ %c\n"
+msgstr "%s:選項需要一個引數 --『%c』\n"
 
 #: lib/getopt.c:934 lib/getopt.c:950
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '-W %s' is ambiguous\n"
-msgstr "%s:選項「-W %s」不明確\n"
+msgstr "%s:選項 -W %s 是模稜兩可的\n"
 
 #: lib/getopt.c:974 lib/getopt.c:992
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '-W %s' doesn't allow an argument\n"
-msgstr "%s:選項「-W %s」不可配合引數使用\n"
+msgstr "%s:選項 -W %s 不允許引數\n"
 
 #: lib/getopt.c:1013 lib/getopt.c:1031
-#, fuzzy, c-format
+#, c-format
 msgid "%s: option '-W %s' requires an argument\n"
-msgstr "%s:選項「%s」需要引數\n"
+msgstr "%s:選項 -W %s 需要一個引數\n"
 
 #: lib/obstack.c:413 lib/obstack.c:415 lib/xalloc-die.c:34
 msgid "memory exhausted"
 msgstr "記憶體耗盡"
 
-#: lib/spawn-pipe.c:138 lib/spawn-pipe.c:141 lib/spawn-pipe.c:262
-#: lib/spawn-pipe.c:265
-#, fuzzy, c-format
+#: lib/spawn-pipe.c:140 lib/spawn-pipe.c:143 lib/spawn-pipe.c:264
+#: lib/spawn-pipe.c:267
+#, c-format
 msgid "cannot create pipe"
-msgstr "無法關閉檔案"
+msgstr "無法建立管線"
 
-#: lib/spawn-pipe.c:232 lib/spawn-pipe.c:346 lib/wait-process.c:282
+#: lib/spawn-pipe.c:234 lib/spawn-pipe.c:348 lib/wait-process.c:282
 #: lib/wait-process.c:356
 #, c-format
 msgid "%s subprocess failed"
-msgstr ""
+msgstr "%s 子程序失敗"
 
 #. TRANSLATORS:
 #. Get translations for open and closing quotation marks.
@@ -1088,77 +1139,19 @@ msgstr "%s 中的時間:%ld.%06ld (%ld%%)\n"
 #: lib/w32spawn.h:43
 #, c-format
 msgid "_open_osfhandle failed"
-msgstr ""
+msgstr "_open_osfhandle 失敗"
 
 #: lib/w32spawn.h:84
 #, c-format
 msgid "cannot restore fd %d: dup2 failed"
-msgstr ""
+msgstr "無法還原 fd %d:dup2 失敗"
 
 #: lib/wait-process.c:223 lib/wait-process.c:255 lib/wait-process.c:317
 #, c-format
 msgid "%s subprocess"
-msgstr ""
+msgstr "%s 子程序"
 
 #: lib/wait-process.c:274 lib/wait-process.c:346
 #, c-format
 msgid "%s subprocess got fatal signal %d"
-msgstr ""
-
-#~ msgid "I/O error"
-#~ msgstr "輸入/輸出錯誤"
-
-#~ msgid "GNU bison generates LALR(1) and GLR parsers.\n"
-#~ msgstr "GNU bison 產生 LALR(1) 與 GLR 剖析器。\n"
-
-#~ msgid ""
-#~ "If a long option shows an argument as mandatory, then it is mandatory\n"
-#~ "for the equivalent short option also.  Similarly for optional arguments.\n"
-#~ msgstr ""
-#~ "如果某個長選項必須使用引數,在對等的短選項中這些引數也是必須的。\n"
-#~ "選擇性的引數也有類似的規定。\n"
-
-#~ msgid "Rules never reduced"
-#~ msgstr "永不縮減的規則"
-
-#~ msgid "useless rule"
-#~ msgstr "沒用到的規則"
-
-#~ msgid "useless nonterminal: %s"
-#~ msgstr "沒用到的非終結符號:%s"
-
-#~ msgid "Useless nonterminals"
-#~ msgstr "沒用到的非終結符號"
-
-#~ msgid "Terminals which are not used"
-#~ msgstr "沒用到的終結符號"
-
-#~ msgid "Useless rules"
-#~ msgstr "沒用到的規則"
-
-#~ msgid "%d rule never reduced\n"
-#~ msgid_plural "%d rules never reduced\n"
-#~ msgstr[0] "%d 條規則永不縮減\n"
-
-#~ msgid "%d useless nonterminal"
-#~ msgid_plural "%d useless nonterminals"
-#~ msgstr[0] "%d 項沒用到的非終結符號"
-
-#~ msgid " and "
-#~ msgstr " 和 "
-
-#~ msgid "%d useless rule"
-#~ msgid_plural "%d useless rules"
-#~ msgstr[0] "%d 條沒用到的規則"
-
-#~ msgid "invalid escape sequence: %s"
-#~ msgstr "無效的跳脫序列:%s"
-
-#~ msgid "unrecognized escape sequence: %s"
-#~ msgstr "無法辨識的跳脫序列:%s"
-
-#~ msgid "tokens %s and %s both assigned number %d"
-#~ msgstr "記號 %s 與 %s 兩者都指派了數字 %d"
-
-#~ msgid "%s: illegal option -- %c\n"
-#~ msgstr "%s:不合法的選項 ─ %c\n"
+msgstr "%s 子程序得到嚴重信號 %d"
index 0b17815..30d62d8 100644 (file)
@@ -26,6 +26,7 @@ pt_BR
 ro
 ru
 sl
+sq
 sr
 sv
 th
index 2a71983..32753a0 100644 (file)
@@ -32,13 +32,16 @@ gettextsrcdir = $(datadir)/gettext/po
 INSTALL = @INSTALL@
 INSTALL_DATA = @INSTALL_DATA@
 
-# We use $(mkdir_p).
+# Define $(MKDIR_P).
 # In automake <= 1.9.x, $(mkdir_p) is defined either as "mkdir -p --" or as
 # "$(mkinstalldirs)" or as "$(install_sh) -d". For these automake versions,
 # @install_sh@ does not start with $(SHELL), so we add it.
 # In automake >= 1.10, @mkdir_p@ is derived from ${MKDIR_P}, which is defined
 # either as "/path/to/mkdir -p" or ".../install-sh -c -d". For these automake
 # versions, $(mkinstalldirs) and $(install_sh) are unused.
+# Gnulib provides a backport of autoconf 2.60's AC_PROG_MKDIR_P,
+# with a fix from autoconf 2.62 for interoperability with automake 1.9.6,
+# so use $(MKDIR_P) in the rest of this makefile.
 mkinstalldirs = $(SHELL) @install_sh@ -d
 install_sh = $(SHELL) @install_sh@
 MKDIR_P = @MKDIR_P@
@@ -212,7 +215,7 @@ install: install-exec install-data
 install-exec:
 install-data: install-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
          for file in $(DISTFILES.common) Makevars.template; do \
            $(INSTALL_DATA) $(srcdir)/$$file \
                            $(DESTDIR)$(gettextsrcdir)/$$file; \
@@ -230,7 +233,7 @@ install-data-yes: all
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
+         $(MKDIR_P) $(DESTDIR)$$dir; \
          if test -r $$cat; then realcat=$$cat; else realcat=$(srcdir)/$$cat; fi; \
          $(INSTALL_DATA) $$realcat $(DESTDIR)$$dir/$(DOMAIN).mo; \
          echo "installing $$realcat as $(DESTDIR)$$dir/$(DOMAIN).mo"; \
@@ -271,7 +274,7 @@ installdirs: installdirs-exec installdirs-data
 installdirs-exec:
 installdirs-data: installdirs-data-@USE_NLS@
        if test "$(PACKAGE)" = "gettext-tools"; then \
-         $(mkdir_p) $(DESTDIR)$(gettextsrcdir); \
+         $(MKDIR_P) $(DESTDIR)$(gettextsrcdir); \
        else \
          : ; \
        fi
@@ -282,7 +285,7 @@ installdirs-data-yes:
          cat=`basename $$cat`; \
          lang=`echo $$cat | sed -e 's/\.gmo$$//'`; \
          dir=$(localedir)/$$lang/LC_MESSAGES; \
-         $(mkdir_p) $(DESTDIR)$$dir; \
+         $(MKDIR_P) $(DESTDIR)$$dir; \
          for lc in '' $(EXTRA_LOCALE_CATEGORIES); do \
            if test -n "$$lc"; then \
              if (cd $(DESTDIR)$(localedir)/$$lang && LC_ALL=C ls -l -d $$lc 2>/dev/null) | grep ' -> ' >/dev/null; then \
index 6182dc3..876d552 100644 (file)
Binary files a/runtime-po/ast.gmo and b/runtime-po/ast.gmo differ
index 03ebe3c..9bd6b3c 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "fallu de sistasis: nun puede facese copia de seguridá"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sistasis ye ambigüa"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "fallu de sistasis"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "fallu de sistasis, %s nun esperáu"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memoria escosada"
index 8ecd7e5..55ec42d 100644 (file)
@@ -6,9 +6,9 @@
 #, fuzzy
 msgid ""
 msgstr ""
-"Project-Id-Version: bison 2.6.2\n"
+"Project-Id-Version: bison 2.7.12-4996\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Type: text/plain; charset=CHARSET\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr ""
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr ""
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr ""
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr ""
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr ""
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr ""
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr ""
index 5a10239..4bc0565 100644 (file)
Binary files a/runtime-po/da.gmo and b/runtime-po/da.gmo differ
index 24db3fe..fad2ba2 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,46 +20,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "syntaksfejl: kan ikke lave sikkerhedskopi"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "syntaks er tvetydig"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksfejl"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksfejl, uventet %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksfejl, uventet %s, forventede %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "hukommelsen opbrugt"
index 877592a..485ab26 100644 (file)
Binary files a/runtime-po/de.gmo and b/runtime-po/de.gmo differ
index 943833e..deeb030 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,47 +17,47 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "Syntaxfehler: Kann nicht zurück gehen"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "Syntax ist mehrdeutig"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "Syntaxfehler"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "Syntaxfehler, unerwartetes %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "Syntaxfehler, unerwartetes %s, hatte %s erwartet"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "Speicher ausgeschöpft"
index 8c2d331..97ba990 100644 (file)
Binary files a/runtime-po/el.gmo and b/runtime-po/el.gmo differ
index 4b734d7..63a77c7 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.4\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "συντακτικό σφάλμα: δεν μπορώ να κάνω πίσω"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "ασαφής σύνταξη"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "συντακτικό σφάλμα"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s ή %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "συντακτικό σφάλμα, αναπάντεχο %s, αναμενόμενο %s ή %s ή %s ή %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "η μνήμη εξαντλήθηκε"
index 85f7922..2912747 100644 (file)
Binary files a/runtime-po/eo.gmo and b/runtime-po/eo.gmo differ
index 723d1c2..9bd6802 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,46 +16,46 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "sintaks-eraro: ni ne povas sekurkopii"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintakso estas plursenca"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaks-eraro"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaks-eraro, neatendita %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "sintaks-eraro, neatendita %s, ni atendis %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memoro eluzita"
index 6bf1b72..a1ec8ff 100644 (file)
Binary files a/runtime-po/es.gmo and b/runtime-po/es.gmo differ
index e1c06c4..5eff718 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -40,46 +40,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr ""
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr ""
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr ""
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr ""
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr ""
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr ""
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memoria agotada"
index 64193d8..43dcbf8 100644 (file)
Binary files a/runtime-po/et.gmo and b/runtime-po/et.gmo differ
index 191489d..2c313d9 100644 (file)
@@ -1,61 +1,61 @@
 # This file is distributed under the same license as the bison package.
 # Estonian translations for bison.
 # Copyright (C) 2001 Free Software Foundation, Inc.
-# Toomas Soome <Toomas.Soome@microlink.ee>, 2011.
+# Toomas Soome <Toomas.Soome@microlink.ee>, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.5-rc1\n"
+"Project-Id-Version: bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2011-05-03 22:19+0300\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2013-04-04 00:39+0300\n"
 "Last-Translator: Toomas Soome <Toomas.Soome@microlink.ee>\n"
 "Language-Team: Estonian <linux-ee@lists.eenet.ee>\n"
 "Language: et\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=ISO-8859-15\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
-msgstr "süntaksi viga: ei saa toetada"
+msgstr "süntaksi viga: ei saa toetada"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
-msgstr "süntaks on segane"
+msgstr "süntaks on segane"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
-msgstr "süntaksi viga"
+msgstr "süntaksi viga"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
-msgstr "süntaksi viga, ootamatu %s"
+msgstr "süntaksi viga, ootamatu %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
-msgstr "süntaksi viga, ootamatu %s, ootasin %s"
+msgstr "süntaksi viga, ootamatu %s, ootasin %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
-msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s"
+msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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"
+msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s või %s"
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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"
+msgstr "süntaksi viga, ootamatu %s, ootasin %s või %s või %s või %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
-msgstr "mälu on otsas"
+msgstr "mälu on otsas"
index f624671..d97d8bb 100644 (file)
Binary files a/runtime-po/fi.gmo and b/runtime-po/fi.gmo differ
index 1b91a0f..4d97930 100644 (file)
@@ -1,62 +1,64 @@
-# translation of @grep@.po to @Finnish@
-# Copyright © 2007 Free Software Foundation, Inc.
+# Finnish messages for bison-runtime.
+# Copyright © 2007, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
-#
 # Jorma Karvonen <karvjorm@users.sf.net>, 2007.
+# Jorma Karvonen <karvonen.jorma@gmail.com>, 2012.
+#
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.3a\n"
+"Project-Id-Version: bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 17:25+0200\n"
+"Last-Translator: Jorma Karvonen <karvonen.jorma@gmail.com>\n"
 "Language-Team: Finnish <translation-team-fi@lists.sourceforge.net>\n"
 "Language: fi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "X-Generator: KBabel 1.11.2\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "syntaksivirhe: ei voida tehdä varmuuskopiota"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "syntaksi on moniselitteinen"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksivirhe"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksivirhe, odottamaton %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksivirhe, odottamaton %s, odotetaan %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "muisti loppui"
index 1109170..9b74e1b 100644 (file)
Binary files a/runtime-po/fr.gmo and b/runtime-po/fr.gmo differ
index 9443299..d79275e 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8-bit\n"
 "Plural-Forms: nplurals=2; plural=(n > 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "erreur de syntaxe: ne peut reculer"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "syntaxe ambiguë"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erreur de syntaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erreur de syntaxe, %s inattendu"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erreur de syntaxe, %s inattendu, attendait %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "mémoire épuisée"
index a5c7222..491dd16 100644 (file)
Binary files a/runtime-po/ga.gmo and b/runtime-po/ga.gmo differ
index e601da8..2229c96 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,47 +16,47 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "earráid chomhréire: ní féidir cúlú"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 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:2426
-#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "earráid chomhréire"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "earráid chomhréire, %s gan choinne"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "cuimhne ídithe"
index 83c5682..ae48a66 100644 (file)
Binary files a/runtime-po/gl.gmo and b/runtime-po/gl.gmo differ
index c3ae965..02fc72c 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -21,46 +21,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n!=1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "erro de sintaxe: non foi posible realizar unha copia de seguridade"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambigua"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, non se agardaba %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memoria esgotada"
index c8009a7..20fc73c 100644 (file)
Binary files a/runtime-po/hr.gmo and b/runtime-po/hr.gmo differ
index bd2b067..65aad83 100644 (file)
@@ -1,15 +1,15 @@
-# Translation of bison-runtime to Croatian
-# Copyright (C) 2002, 2012 Free Software Foundation, Inc.
+# Translation of bison-runtime to Croatian.
+# Copyright © 2002, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
 # Denis Lackovic <delacko@fly.srk.fer.hr>, 2002.
 # Tomislav Krznar <tomislav.krznar@gmail.com>, 2012.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.5\n"
+"Project-Id-Version: bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-04-03 21:42+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-15 10:44+0100\n"
 "Last-Translator: Tomislav Krznar <tomislav.krznar@gmail.com>\n"
 "Language-Team: Croatian <lokalizacija@linux.hr>\n"
 "Language: hr\n"
@@ -17,48 +17,48 @@ msgstr ""
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
-"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2)\n"
+"%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "sintaksna greška: ne mogu napraviti sigurnosnu kopiju"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 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:2426
-#: data/lalr1.cc:912 data/lalr1.cc:932 data/yacc.c:1336 data/yacc.c:1851
+#: data/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaksna greška"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaksna greška, neočekivani %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memorija iscrpljena"
index dc2a869..fd8e110 100644 (file)
Binary files a/runtime-po/hu.gmo and b/runtime-po/hu.gmo differ
index b003aef..2f317c9 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "szintaktikai hiba: nem menthető"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "kétértelmű szintaxis"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "szintaktikai hiba"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "szintaktikai hiba, nem várt %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "a memória kiürült"
index 61b6de9..13e79bf 100644 (file)
Binary files a/runtime-po/id.gmo and b/runtime-po/id.gmo differ
index 17ad58f..6a1d313 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,49 +19,49 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: KBabel 1.10\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "kesalahan sintaks: tidak dapat membackup"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintaks rancu"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "kesalahan sintaks"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "kesalahan sintaks, %s tidak diharapkan"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "kesalahan sintaks, %s tidak diharapkan, mengharapkan %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memori habis"
index ed6acd7..391b677 100644 (file)
Binary files a/runtime-po/it.gmo and b/runtime-po/it.gmo differ
index 4daca8a..e034652 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,46 +20,46 @@ msgstr ""
 "First-Translator: Paolo Bonzini <bonzini@gnu.org>\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "errore di sintassi: impossibile tornare indietro"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "la sintassi è ambigua"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "errore di sintassi"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "errore di sintassi, %s non atteso"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "errore di sintassi, ricevuto %s anziché %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memoria esaurita"
index 10d355d..6ddd87d 100644 (file)
Binary files a/runtime-po/ja.gmo and b/runtime-po/ja.gmo differ
index 2ee79e2..9804884 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,47 +17,47 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "構文エラー: バックアップすることができません"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "構文が曖昧です"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "構文エラー"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "構文エラー、予期しない %s です"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "構文エラー、予期しない %s です。予期されるのは %s です"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "構文エラー、予期しない %s です。予期されるのは %s または %s です"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "構文エラー、予期しない %s です。予期されるのは %s、%s、%s、または %s です。"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "メモリを使い果たしました"
index 2642ebe..ea68ef2 100644 (file)
Binary files a/runtime-po/ky.gmo and b/runtime-po/ky.gmo differ
index 85c4dce..a6b9285 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,46 +18,46 @@ msgstr ""
 "X-Poedit-Language: Kyrgyz\n"
 "X-Poedit-Country: KYRGYZSTAN\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "синтаксис катасы: көчурмө алынган жок"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "синтаксис анык эмес"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксис катасы"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s күтүлүүдө"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s же %s күтүлүүдө"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "синтаксис катасы, күтүлбөгөн %s, %s же %s же %s же %s күтүлүүдө"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "эс колдонулуп бүттүү"
index be32e56..b1b8d8f 100644 (file)
Binary files a/runtime-po/lt.gmo and b/runtime-po/lt.gmo differ
index 360ffe5..4851056 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,46 +19,46 @@ msgstr ""
 "Plural-Forms:  nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n"
 "%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "sintaksės klaida: negalima grįžti"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintaksė dviprasmė"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintaksės klaida"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintaksės klaida, netikėtas %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "baigėsi atmintis"
index bd9e035..4a43a70 100644 (file)
Binary files a/runtime-po/lv.gmo and b/runtime-po/lv.gmo differ
index 6c557c6..3f8248f 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,46 +20,46 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
 "2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "sintakses kļūda: nevar dublēt datus"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintakse ir divdomīga"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "sintakses kļūda"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "sintakses kļūda, negaidīts %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "izsmelta atmiņa"
index e5767ba..39f99c8 100644 (file)
Binary files a/runtime-po/ms.gmo and b/runtime-po/ms.gmo differ
index 61caec9..d319268 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,47 +18,47 @@ msgstr ""
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: KBabel 0.9.5\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "ralat sintaks: tidak dapat mengundur"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintaks adalah kabur"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "ralat sintaks"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "ralat sintaks, tidak menjangka %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "ralat sintaks, tidak menjangka %s, menjangka %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "kehabisan memori"
index a99ceab..f1b2a65 100644 (file)
Binary files a/runtime-po/nb.gmo and b/runtime-po/nb.gmo differ
index dc38ff6..720daec 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -32,46 +32,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "syntaksfeil: kan ikke gå tilbake"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "syntaksen er flertydig"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaksfeil"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaksfeil, uforventet %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaksfeil, uforventet %s, forventet %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "minne er uttømt"
index 21d2abd..c434f84 100644 (file)
Binary files a/runtime-po/nl.gmo and b/runtime-po/nl.gmo differ
index 0773f61..06d7467 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "syntaxfout: kan niet terugkeren"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "syntax is niet eenduidig"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaxfout"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "syntaxfout, %s onverwacht"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "syntaxfout, %s onverwacht (%s verwacht)"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "geen geheugen meer beschikbaar"
index 9c54723..f1a7e76 100644 (file)
Binary files a/runtime-po/pl.gmo and b/runtime-po/pl.gmo differ
index eba3731..eb5747f 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,47 +18,47 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
 "|| n%100>=20) ? 1 : 2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "błąd składni: nie można cofnąć przesunięcia symbolu leksykalnego"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "składnia jest niejednoznaczna"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "błąd składni"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "błąd składni, niespodziewany symbol %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "pamięć wyczerpana"
index 6066f88..c823095 100644 (file)
Binary files a/runtime-po/pt.gmo and b/runtime-po/pt.gmo differ
index c0e6c00..7ba4578 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,46 +19,46 @@ msgstr ""
 "X-Poedit-Country: PORTUGAL\n"
 "X-Poedit-SourceCharset: utf-8\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "erro de sintaxe: não é possível voltar"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambígua"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, %s inesperado"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "erro de sintaxe, %s inesperado, esperando %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memória exausta"
index a488371..406c33e 100644 (file)
Binary files a/runtime-po/pt_BR.gmo and b/runtime-po/pt_BR.gmo differ
index 496e7fb..170a775 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,46 +16,46 @@ msgstr ""
 "Content-Type: text/plain; charset=ISO-8859-1\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "erro de sintaxe: não é possível voltar"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "a sintaxe é ambígua"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "erro de sintaxe"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "erro de sintaxe, %s não esperado"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "falta de memória"
index 19d5152..61d517c 100644 (file)
Binary files a/runtime-po/ro.gmo and b/runtime-po/ro.gmo differ
index 3d0679e..7af3ec4 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,46 +20,46 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n==1 ? 0 : (n==0 || ((n%100) > 0 && (n"
 "%100) < 20)) ? 1 : 2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "eroare de sintaxã: nu pot da înapoi"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "sintaxa este ambiguã"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "eroare de sintaxã"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "eroare de sintaxã, %s neaºteptat"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "memorie epuizatã"
index ecd8808..6c9060c 100644 (file)
Binary files a/runtime-po/ru.gmo and b/runtime-po/ru.gmo differ
index 4fb0d60..7548206 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,47 +20,47 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "синтаксическая ошибка: не удалось создать резервную копию"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "неоднозначный синтаксис"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксическая ошибка"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксическая ошибка, непредвиденная %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксическая ошибка, непредвиденная %s, ожидается %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксическая ошибка, непредвиденная %s, ожидается %s или %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "синтаксическая ошибка, непредвиденная %s, ожидается %s или %s, или %s, или %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "недостаточно памяти"
index d10ce47..38218cf 100644 (file)
Binary files a/runtime-po/sl.gmo and b/runtime-po/sl.gmo differ
index 31c0991..5d5620c 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -19,46 +19,46 @@ msgstr ""
 "Plural-Forms: nplurals=4; plural=(n%100==1 ? 1 : n%100==2 ? 2 : n%100==3 || n"
 "%100==4 ? 3 : 0);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "skladenjska napaka: vrnitev ni mogoča"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "dvoumna skladnja"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "skladenjska napaka"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "skladenjska napaka, nepričakovan %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "zmanjkalo je pomnilnika"
diff --git a/runtime-po/sq.gmo b/runtime-po/sq.gmo
new file mode 100644 (file)
index 0000000..c7b7f8c
Binary files /dev/null and b/runtime-po/sq.gmo differ
diff --git a/runtime-po/sq.po b/runtime-po/sq.po
new file mode 100644 (file)
index 0000000..e1cd0ff
--- /dev/null
@@ -0,0 +1,62 @@
+# Albanian translation of bison-runtime
+# Copyright (C) 2012 Free Software Foundation, Inc.
+# This file is distributed under the same license as the bison package.
+# Agron Selimaj <linuxmaster@verizon.net>, 2012.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: bison-runtime 2.6.2\n"
+"Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-10-08 21:35+0500\n"
+"Last-Translator: Agron Selimaj <linuxmaster@verizon.net>\n"
+"Language-Team: Albanian <translation-team-sq@lists.sourceforge.net>\n"
+"Language: sq\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: data/glr.c:838 data/yacc.c:771
+msgid "syntax error: cannot back up"
+msgstr "gabim sintaksor: nuk mund të ruaj një kopje"
+
+#: data/glr.c:1712
+msgid "syntax is ambiguous"
+msgstr "sintaksa është e ngjashme me të tjera"
+
+#: data/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
+#: data/yacc.c:1857
+msgid "syntax error"
+msgstr "gabim sintaksor"
+
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
+#, c-format
+msgid "syntax error, unexpected %s"
+msgstr "gabim sintaksor, %s i papritur"
+
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
+#, c-format
+msgid "syntax error, unexpected %s, expecting %s"
+msgstr "gabim sintaksor, %s i papritur, pritet %s"
+
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
+#, c-format
+msgid "syntax error, unexpected %s, expecting %s or %s"
+msgstr "gabim sintaksor, %s i papritur, pritet %s ose %s"
+
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
+#, c-format
+msgid "syntax error, unexpected %s, expecting %s or %s or %s"
+msgstr "gabim sintaksor, %s i papritur, pritet %s ose %s ose %s"
+
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
+#, c-format
+msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
+msgstr "gabim sintaksor, %s i papritur, pritet %s ose %s ose %s ose %s"
+
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
+msgid "memory exhausted"
+msgstr "nuk mbeti kujtesë më"
index 762b417..463f742 100644 (file)
Binary files a/runtime-po/sr.gmo and b/runtime-po/sr.gmo differ
index a3e1321..a042630 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -18,47 +18,47 @@ msgstr ""
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 "X-Generator: Virtaal 0.7.0\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "грешка синтаксе: не могу да се вратим горе "
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "синтакса је нејасна"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "грешка синтаксе"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "грешка синтаксе, није очекивано %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "грешка синтаксе, није очекивано %s, очекивано је %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "грешка синтаксе, није очекивано %s, очекивано је %s или %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "грешка синтаксе, није очекивано %s, очекивано је %s или %s или %s или %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "меморија је потрошена"
index 52bdabb..e2778c1 100644 (file)
Binary files a/runtime-po/sv.gmo and b/runtime-po/sv.gmo differ
index f265e46..9bdbee5 100644 (file)
@@ -1,64 +1,64 @@
 # Swedish messages for bison.
-# Copyright © 2001-2006, 2008, 2010 Free Software Foundation, Inc.
+# Copyright © 2001-2006, 2008, 2010, 2012 Free Software Foundation, Inc.
 # This file is distributed under the same license as the bison package.
-# Göran Uddeborg <goeran@uddeborg.se>, 2001-2006, 2008, 2010.
+# Göran Uddeborg <goeran@uddeborg.se>, 2001-2006, 2008, 2010, 2012.
 #
-# $Revision: 1.26 $
+# $Revision: 1.31 $
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.4.3\n"
+"Project-Id-Version: bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 21:10+0100\n"
+"Last-Translator: Göran Uddeborg <goeran@uddeborg.se>\n"
 "Language-Team: Swedish <tp-sv@listor.tp-sv.se>\n"
 "Language: sv\n"
 "MIME-Version: 1.0\n"
-"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=2; plural=(n != 1);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "syntaxfel: kan inte backa"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "tvetydig syntax"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "syntaxfel"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
-msgstr "syntaxfel, oväntad %s"
+msgstr "syntaxfel, oväntad %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
-msgstr "syntaxfel, oväntad %s, förväntade %s"
+msgstr "syntaxfel, oväntad %s, förväntade %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
-msgstr "syntaxfel, oväntad %s, förväntade %s eller %s"
+msgstr "syntaxfel, oväntad %s, förväntade %s eller %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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"
+msgstr "syntaxfel, oväntad %s, förväntade %s eller %s eller %s"
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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"
+msgstr "syntaxfel, oväntad %s, förväntade %s eller %s eller %s eller %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "minnet slut"
index b07abf1..498a152 100644 (file)
Binary files a/runtime-po/th.gmo and b/runtime-po/th.gmo differ
index 2f6e415..1355a42 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -20,46 +20,46 @@ msgstr ""
 "X-Generator: Lokalize 1.0\n"
 "Plural-Forms: nplurals=2; plural=n != 1;\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์: ไม่สามารถสำรองข้อมูล"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "วากยสัมพันธ์คลุมเครือไม่ชัดเจน"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s หรือ %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "ข้อผิดพลาดวากยสัมพันธ์, ไม่คาดว่าจะเป็น %s, คาดว่าจะเป็น %s หรือ %s หรือ %s หรือ %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "หน่วยความจำถูกใช้จนหมดสิ้น"
index 31e819c..70612ca 100644 (file)
Binary files a/runtime-po/tr.gmo and b/runtime-po/tr.gmo differ
index 48c1ec4..a8e8609 100644 (file)
@@ -1,62 +1,65 @@
 # Turkish translations for GNU Bison messages.
 # Copyright (C) 2001 Free Software Foundation, Inc.
-# Altuð Bayram <altugbayram_2000@yahoo.com>, 2001.
-# Çaðrý Çöltekin <cagri@xs4all.nl>, 2003 - 2005
+# This file is distributed under the same license as the bison package.
 #
+# Altuð Bayram <altugbayram_2000@yahoo.com>, 2001.
+# Çaðrý Çöltekin <cagri@xs4all.nl>, 2003 - 2005.
+# Volkan Gezer <vlkngzr@gmail.com>, 2013.
 msgid ""
 msgstr ""
-"Project-Id-Version: GNU bison 2.0\n"
+"Project-Id-Version: GNU bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2013-03-17 19:16+0100\n"
+"Last-Translator: Volkan Gezer <vlkngzr@gmail.com>\n"
 "Language-Team: Turkish <gnu-tr-u12a@lists.sourceforge.net>\n"
 "Language: tr\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=ISO-8859-9\n"
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
+"X-Generator: Lokalize 1.5\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
-msgstr ""
+msgstr "sözdizimi hatasý: yedeklenemiyor"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
-msgstr ""
+msgstr "sözdizimi belirsiz"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
-msgstr ""
+msgstr "sözdizimi hatasý"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
-msgstr ""
+msgstr "sözdizimi hatasý, beklenmeyen %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
-msgstr ""
+msgstr "sözdizimi hatasý, beklenmeyen %s, beklenen %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
-msgstr ""
+msgstr "sözdizimi hatasý, beklenmeyen %s, beklenen %s veya %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s"
-msgstr ""
+msgstr "sözdizimi hatasý, beklenmeyen %s, beklenen %s veya %s veya %s"
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
-msgstr ""
+msgstr "sözdizimi hatasý, beklenmeyen %s, beklenen %s veya %s veya %s veya %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "bellek tükendi"
index 1dd9a47..3b6be22 100644 (file)
Binary files a/runtime-po/uk.gmo and b/runtime-po/uk.gmo differ
index bee7e1e..69d02e5 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -17,47 +17,47 @@ msgstr ""
 "Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n"
 "%10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "синтаксична помилка: не вдається зробити резервну копію"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "синтаксис неоднозначний"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "синтаксична помилка"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "синтаксична помилка, неочікуваний %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "синтаксична помилка, неочікуваний %s, очікувалось %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "синтаксична помилка, неочікуваний %s, очікувалось %s або %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr ""
 "синтаксична помилка, неочікуваний %s, очікувалось %s, або %s, або %s, або %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "пам'ять вичерпано'"
index 916697e..3834fdc 100644 (file)
Binary files a/runtime-po/vi.gmo and b/runtime-po/vi.gmo differ
index 7bcdcfc..9a22b8d 100644 (file)
@@ -6,62 +6,61 @@
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.5.90\n"
+"Project-Id-Version: bison-runtime-2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\n"
-"POT-Creation-Date: 2012-08-03 09:44+0200\n"
-"PO-Revision-Date: 2012-07-06 07:13+0700\n"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2012-12-09 08:31+0700\n"
 "Last-Translator: Trần Ngọc Quân <vnwildman@gmail.com>\n"
 "Language-Team: Vietnamese <translation-team-vi@lists.sourceforge.net>\n"
 "Language: vi\n"
 "MIME-Version: 1.0\n"
 "Content-Type: text/plain; charset=UTF-8\n"
 "Content-Transfer-Encoding: 8bit\n"
+"Team-Website: <http://translationproject.org/team/vi.html>\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 "X-Generator: LocFactoryEditor 1.8\n"
-"X-Poedit-Language: Vietnamese\n"
-"X-Poedit-Country: VIET NAM\n"
-"X-Poedit-SourceCharset: utf-8\n"
+"X-Poedit-SourceCharset: UTF-8\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "lỗi cú pháp: không thể sao lưu dự phòng"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
-msgstr "cú pháp không rõ ràng"
+msgstr "cú pháp chưa rõ ràng"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "lỗi cú pháp"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, 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:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, 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"
+msgstr "lỗi cú pháp, gặp %s bất thường, cần %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, 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"
+msgstr "lỗi cú pháp, gặp %s bất thường, cần %s hoặc %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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"
+msgstr "lỗi cú pháp, gặp %s bất thường, cần %s hoặc %s hay %s"
 
-#: data/glr.c:2124 data/lalr1.cc:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, 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 "
+msgstr "lỗi cú pháp, gặp %s bất thường, cần %s hoặc %s hoặc %s hay %s "
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
-msgstr "cạn bộ nhớ"
+msgstr "hết bộ nhớ"
index 0145dbc..f9a40e5 100644 (file)
Binary files a/runtime-po/zh_CN.gmo and b/runtime-po/zh_CN.gmo differ
index 47aba92..a2026b4 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-08-03 09:44+0200\n"
+"POT-Creation-Date: 2013-04-15 13:59+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"
@@ -16,46 +16,46 @@ msgstr ""
 "Content-Type: text/plain; charset=utf-8\n"
 "Content-Transfer-Encoding: 8bit\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "语法错误:不能备份"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "语法有歧义"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "语法错误"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "语法错误,非预期的 %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "语法错误,非预期的 %s,需要 %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "语法错误,非预期的 %s,需要 %s 或 %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "语法错误,非预期的 %s,需要 %s,%s,%s 或 %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "内存耗尽"
index 0fd3f56..f75c67d 100644 (file)
Binary files a/runtime-po/zh_TW.gmo and b/runtime-po/zh_TW.gmo differ
index 7993070..fea16a1 100644 (file)
@@ -1,14 +1,15 @@
-# Traditional Chinese Messages for bison-runtime
+# Traditional Chinese Messages for bison-runtime.
 # Copyright (C) 2005 Free Software Foundation, Inc.
-# Wei-Lun Chao <chaoweilun@pcmail.com.tw>, 2005
+# This file is distributed under the same license as the bison package.
+# Wei-Lun Chao <bluebat@member.fsf.org>, 2005, 2013.
 #
 msgid ""
 msgstr ""
-"Project-Id-Version: bison-runtime 2.1\n"
+"Project-Id-Version: bison-runtime 2.6.90\n"
 "Report-Msgid-Bugs-To: bug-bison@gnu.org\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"
+"POT-Creation-Date: 2013-04-15 13:59+0200\n"
+"PO-Revision-Date: 2013-02-12 23:31+0800\n"
+"Last-Translator: Wei-Lun Chao <bluebat@member.fsf.org>\n"
 "Language-Team: Chinese (traditional) <zh-l10n@linux.org.tw>\n"
 "Language: zh_TW\n"
 "MIME-Version: 1.0\n"
@@ -16,46 +17,46 @@ msgstr ""
 "Content-Transfer-Encoding: 8bit\n"
 "Plural-Forms: nplurals=1; plural=0;\n"
 
-#: data/glr.c:882 data/yacc.c:739
+#: data/glr.c:838 data/yacc.c:771
 msgid "syntax error: cannot back up"
 msgstr "語法錯誤:無法備份"
 
-#: data/glr.c:1756
+#: data/glr.c:1712
 msgid "syntax is ambiguous"
 msgstr "語法不明確"
 
-#: 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/glr.c:1997 data/glr.c:2077 data/glr.c:2117 data/glr.c:2382
+#: data/lalr1.cc:941 data/lalr1.cc:961 data/yacc.c:1346 data/yacc.c:1851
 #: data/yacc.c:1857
 msgid "syntax error"
 msgstr "語法錯誤"
 
-#: data/glr.c:2120 data/lalr1.cc:913 data/yacc.c:1337
+#: data/glr.c:2078 data/lalr1.cc:942 data/yacc.c:1347
 #, c-format
 msgid "syntax error, unexpected %s"
 msgstr "語法錯誤,預期之外的 %s"
 
-#: data/glr.c:2121 data/lalr1.cc:914 data/yacc.c:1338
+#: data/glr.c:2079 data/lalr1.cc:943 data/yacc.c:1348
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s"
 
-#: data/glr.c:2122 data/lalr1.cc:915 data/yacc.c:1339
+#: data/glr.c:2080 data/lalr1.cc:944 data/yacc.c:1349
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s 或 %s"
 
-#: data/glr.c:2123 data/lalr1.cc:916 data/yacc.c:1340
+#: data/glr.c:2081 data/lalr1.cc:945 data/yacc.c:1350
 #, 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:917 data/yacc.c:1341
+#: data/glr.c:2082 data/lalr1.cc:946 data/yacc.c:1351
 #, c-format
 msgid "syntax error, unexpected %s, expecting %s or %s or %s or %s"
 msgstr "語法錯誤,預期之外的 %s,預期為 %s、%s、%s 或 %s"
 
-#: data/glr.c:2486 data/yacc.c:1418 data/yacc.c:1420 data/yacc.c:1613
-#: data/yacc.c:2006
+#: data/glr.c:2442 data/yacc.c:1431 data/yacc.c:1433 data/yacc.c:1611
+#: data/yacc.c:2008
 msgid "memory exhausted"
 msgstr "記憶體耗盡"
index 4c1e0ae..b14c675 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR's inadequacy annotation list.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 3088a83..afa3d21 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR's inadequacy annotation list.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 838685b..9510b40 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR's inadequacy list.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index d8120dd..d205dd5 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR's inadequacy list.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 37bfe81..62cdb2b 100644 (file)
--- a/src/LR0.c
+++ b/src/LR0.c
@@ -1,6 +1,6 @@
 /* Generate the LR(0) parser states for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 2000-2002, 2004-2007, 2009-2012 Free
+   Copyright (C) 1984, 1986, 1989, 2000-2002, 2004-2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 45f922a..976bcb2 100644 (file)
--- a/src/LR0.h
+++ b/src/LR0.h
@@ -1,6 +1,6 @@
 /* Generate the LR(0) parser states for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 2000-2002, 2009-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 2000-2002, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 511b905..9e61ff0 100644 (file)
@@ -1,6 +1,6 @@
 # Make bison/src.
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
index d81dce0..d0abc55 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -16,7 +16,7 @@
 
 # Make bison/src.
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
@@ -69,9 +69,9 @@ build_triplet = @build@
 host_triplet = @host@
 bin_PROGRAMS = bison$(EXEEXT)
 subdir = src
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
-       $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap \
-       parse-gram.c parse-gram.h scan-code.c scan-gram.c scan-skel.c
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am parse-gram.h \
+       parse-gram.c scan-code.c scan-skel.c scan-gram.c \
+       $(top_srcdir)/build-aux/depcomp $(top_srcdir)/build-aux/ylwrap
 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 \
@@ -87,6 +87,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -94,11 +95,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -266,6 +268,23 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
+# Read a list of newline-separated strings from the standard input,
+# and print each of them once, without duplicates.  Input order is
+# *not* preserved.
+am__uniquify_input = $(AWK) '\
+  BEGIN { nonempty = 0; } \
+  { items[$$0] = 1; nonempty = 1; } \
+  END { if (nonempty) { for (i in items) print i; }; } \
+'
+# Make sure the list of sources is unique.  This is necessary because,
+# e.g., the same source file might be shared among _SOURCES variables
+# for different programs/libraries.
+am__define_uniq_tagged_files = \
+  list='$(am__tagged_files)'; \
+  unique=`for i in $$list; do \
+    if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
+  done | $(am__uniquify_input)`
 ETAGS = etags
 CTAGS = ctags
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
@@ -285,6 +304,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -304,9 +324,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -578,6 +601,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -917,6 +941,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1103,6 +1128,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1113,6 +1139,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1243,6 +1270,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1337,6 +1365,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1480,9 +1509,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits src/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu src/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits src/Makefile
+         $(AUTOMAKE) --gnu src/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1510,10 +1539,11 @@ install-binPROGRAMS: $(bin_PROGRAMS)
        fi; \
        for p in $$list; do echo "$$p $$p"; done | \
        sed 's/$(EXEEXT)$$//' | \
-       while read p p1; do if test -f $$p; \
-         then echo "$$p"; echo "$$p"; else :; fi; \
+       while read p p1; do if test -f $$p \
+         then echo "$$p"; echo "$$p"; else :; fi; \
        done | \
-       sed -e 'p;s,.*/,,;n;h' -e 's|.*|.|' \
+       sed -e 'p;s,.*/,,;n;h' \
+           -e 's|.*|.|' \
            -e 'p;x;s,.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/' | \
        sed 'N;N;N;s,\n, ,g' | \
        $(AWK) 'BEGIN { files["."] = ""; dirs["."] = 1 } \
@@ -1534,29 +1564,14 @@ uninstall-binPROGRAMS:
        @list='$(bin_PROGRAMS)'; test -n "$(bindir)" || list=; \
        files=`for p in $$list; do echo "$$p"; done | \
          sed -e 'h;s,^.*/,,;s/$(EXEEXT)$$//;$(transform)' \
-             -e 's/$$/$(EXEEXT)/' `; \
+             -e 's/$$/$(EXEEXT)/' \
+       `; \
        test -n "$$list" || exit 0; \
        echo " ( cd '$(DESTDIR)$(bindir)' && rm -f" $$files ")"; \
        cd "$(DESTDIR)$(bindir)" && rm -f $$files
 
 clean-binPROGRAMS:
        -test -z "$(bin_PROGRAMS)" || rm -f $(bin_PROGRAMS)
-
-installcheck-binPROGRAMS: $(bin_PROGRAMS)
-       bad=0; pid=$$$$; list="$(bin_PROGRAMS)"; for p in $$list; do \
-         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
-          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
-         esac; \
-         f=`echo "$$p" | \
-            sed 's,^.*/,,;s/$(EXEEXT)$$//;$(transform);s/$$/$(EXEEXT)/'`; \
-         for opt in --help --version; do \
-           if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
-                2>c$${pid}_.err </dev/null \
-                && test -n "`cat c$${pid}_.out`" \
-                && test -z "`cat c$${pid}_.err`"; then :; \
-           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
-         done; \
-       done; rm -f c$${pid}_.???; exit $$bad
 parse-gram.h: parse-gram.c
        @if test ! -f $@; then rm -f parse-gram.c; else :; fi
        @if test ! -f $@; then $(MAKE) $(AM_MAKEFLAGS) parse-gram.c; else :; fi
@@ -1599,21 +1614,6 @@ uninstall-binSCRIPTS:
               sed -e 's,.*/,,;$(transform)'`; \
        dir='$(DESTDIR)$(bindir)'; $(am__uninstall_files_from_dir)
 
-installcheck-binSCRIPTS: $(bin_SCRIPTS)
-       bad=0; pid=$$$$; list="$(bin_SCRIPTS)"; for p in $$list; do \
-         case ' $(AM_INSTALLCHECK_STD_OPTIONS_EXEMPT) ' in \
-          *" $$p "* | *" $(srcdir)/$$p "*) continue;; \
-         esac; \
-         f=`echo "$$p" | sed 's,^.*/,,;$(transform)'`; \
-         for opt in --help --version; do \
-           if "$(DESTDIR)$(bindir)/$$f" $$opt >c$${pid}_.out \
-                2>c$${pid}_.err </dev/null \
-                && test -n "`cat c$${pid}_.out`" \
-                && test -z "`cat c$${pid}_.err`"; then :; \
-           else echo "$$f does not support $$opt" 1>&2; bad=1; fi; \
-         done; \
-       done; rm -f c$${pid}_.???; exit $$bad
-
 mostlyclean-compile:
        -rm -f *.$(OBJEXT)
 
@@ -1680,26 +1680,15 @@ distclean-compile:
 .y.c:
        $(AM_V_YACC)$(am__skipyacc) $(SHELL) $(YLWRAP) $< y.tab.c $@ y.tab.h `echo $@ | $(am__yacc_c2h)` y.output $*.output -- $(YACCCOMPILE)
 
-ID: $(HEADERS) $(SOURCES) $(LISP) $(TAGS_FILES)
-       list='$(SOURCES) $(HEADERS) $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
-       mkid -fID $$unique
-tags: TAGS
-
-TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
+ID: $(am__tagged_files)
+       $(am__define_uniq_tagged_files); mkid -fID $$unique
+tags: tags-am
+TAGS: tags
+
+tags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
        set x; \
        here=`pwd`; \
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+       $(am__define_uniq_tagged_files); \
        shift; \
        if test -z "$(ETAGS_ARGS)$$*$$unique"; then :; else \
          test -n "$$unique" || unique=$$empty_fix; \
@@ -1711,15 +1700,11 @@ TAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
              $$unique; \
          fi; \
        fi
-ctags: CTAGS
-CTAGS:  $(HEADERS) $(SOURCES)  $(TAGS_DEPENDENCIES) \
-               $(TAGS_FILES) $(LISP)
-       list='$(SOURCES) $(HEADERS)  $(LISP) $(TAGS_FILES)'; \
-       unique=`for i in $$list; do \
-           if test -f "$$i"; then echo $$i; else echo $(srcdir)/$$i; fi; \
-         done | \
-         $(AWK) '{ files[$$0] = 1; nonempty = 1; } \
-             END { if (nonempty) { for (i in files) print i; }; }'`; \
+ctags: ctags-am
+
+CTAGS: ctags
+ctags-am: $(TAGS_DEPENDENCIES) $(am__tagged_files)
+       $(am__define_uniq_tagged_files); \
        test -z "$(CTAGS_ARGS)$$unique" \
          || $(CTAGS) $(CTAGSFLAGS) $(AM_CTAGSFLAGS) $(CTAGS_ARGS) \
             $$unique
@@ -1728,9 +1713,10 @@ GTAGS:
        here=`$(am__cd) $(top_builddir) && pwd` \
          && $(am__cd) $(top_srcdir) \
          && gtags -i $(GTAGS_ARGS) "$$here"
+cscopelist: cscopelist-am
 
-cscopelist:  $(HEADERS) $(SOURCES) $(LISP)
-       list='$(SOURCES) $(HEADERS) $(LISP)'; \
+cscopelist-am: $(am__tagged_files)
+       list='$(am__tagged_files)'; \
        case "$(srcdir)" in \
          [\\/]* | ?:[\\/]*) sdir="$(srcdir)" ;; \
          *) sdir=$(subdir)/$(srcdir) ;; \
@@ -1870,7 +1856,7 @@ install-ps: install-ps-am
 
 install-ps-am:
 
-installcheck-am: installcheck-binPROGRAMS installcheck-binSCRIPTS
+installcheck-am:
 
 maintainer-clean: maintainer-clean-am
        -rm -rf ./$(DEPDIR)
@@ -1893,20 +1879,19 @@ uninstall-am: uninstall-binPROGRAMS uninstall-binSCRIPTS
 
 .MAKE: all check install install-am install-strip
 
-.PHONY: CTAGS GTAGS all all-am check check-am clean clean-binPROGRAMS \
-       clean-generic cscopelist ctags distclean distclean-compile \
-       distclean-generic distclean-tags distdir dvi dvi-am html \
-       html-am info info-am install install-am install-binPROGRAMS \
-       install-binSCRIPTS install-data install-data-am install-dvi \
-       install-dvi-am install-exec install-exec-am install-html \
-       install-html-am install-info install-info-am install-man \
-       install-pdf install-pdf-am install-ps install-ps-am \
-       install-strip installcheck installcheck-am \
-       installcheck-binPROGRAMS installcheck-binSCRIPTS installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-compile mostlyclean-generic pdf pdf-am ps ps-am \
-       tags uninstall uninstall-am uninstall-binPROGRAMS \
-       uninstall-binSCRIPTS
+.PHONY: CTAGS GTAGS TAGS all all-am check check-am clean \
+       clean-binPROGRAMS clean-generic cscopelist-am ctags ctags-am \
+       distclean distclean-compile distclean-generic distclean-tags \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-binPROGRAMS install-binSCRIPTS install-data \
+       install-data-am install-dvi install-dvi-am install-exec \
+       install-exec-am install-html install-html-am install-info \
+       install-info-am install-man install-pdf install-pdf-am \
+       install-ps install-ps-am install-strip installcheck \
+       installcheck-am installdirs maintainer-clean \
+       maintainer-clean-generic mostlyclean mostlyclean-compile \
+       mostlyclean-generic pdf pdf-am ps ps-am tags tags-am uninstall \
+       uninstall-am uninstall-binPROGRAMS uninstall-binSCRIPTS
 
 
 yacc:
index ce65f37..055594b 100644 (file)
@@ -1,6 +1,6 @@
 /* A simple, memory-efficient bitset implementation.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 4a32402..0e4dab3 100644 (file)
@@ -1,6 +1,6 @@
 /* A simple, memory-efficient bitset implementation.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 989cb26..43227f0 100644 (file)
@@ -1,6 +1,6 @@
 /* Associativity information.
 
-   Copyright (C) 2002, 2005-2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002, 2005-2006, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 54f9b65..4d9e759 100644 (file)
@@ -1,6 +1,6 @@
 /* Associativity information.
 
-   Copyright (C) 2002, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2006, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index d9bc5ff..c2223ca 100644 (file)
@@ -1,6 +1,6 @@
 /* Closures for Bison
 
-   Copyright (C) 1984, 1989, 2000-2002, 2004-2005, 2007, 2009-2012 Free
+   Copyright (C) 1984, 1989, 2000-2002, 2004-2005, 2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 0f96a8b..89f5600 100644 (file)
@@ -1,6 +1,6 @@
 /* Subroutines for bison
 
-   Copyright (C) 1984, 1989, 2000-2002, 2007, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2002, 2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index dee3c3b..7683f8c 100644 (file)
@@ -1,6 +1,6 @@
 /* Declaration for error-reporting function for Bison.
 
-   Copyright (C) 2000-2002, 2004-2006, 2009-2012 Free Software
+   Copyright (C) 2000-2002, 2004-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -74,11 +74,15 @@ error_message (location *loc,
   vfprintf (stderr, message, args);
   {
     size_t l = strlen (message);
-    if (l < 2 || message[l-2] != ':' || message[l-1] != ' ') {
-      putc ('\n', stderr);
-      fflush (stderr);
-    }
+    if (l < 2 || message[l - 2] != ':' || message[l - 1] != ' ')
+      {
+        putc ('\n', stderr);
+        fflush (stderr);
+        if (loc && feature_flag & feature_caret)
+          location_caret (stderr, *loc);
+      }
   }
+  fflush (stderr);
 }
 
 /** Wrap error_message() with varargs handling. */
@@ -124,7 +128,7 @@ warn_at_indent (location loc, unsigned *indent,
     return;
   set_warning_issued ();
   indent_ptr = indent;
-  ERROR_MESSAGE (&loc, _("warning"), message);
+  ERROR_MESSAGE (&loc, *indent ? NULL : _("warning"), message);
 }
 
 void
@@ -144,7 +148,7 @@ warn (const char *message, ...)
 void
 complain_at (location loc, const char *message, ...)
 {
-  ERROR_MESSAGE (&loc, NULL, message);
+  ERROR_MESSAGE (&loc, _("error"), message);
   complaint_issued = true;
 }
 
@@ -153,14 +157,14 @@ complain_at_indent (location loc, unsigned *indent,
                     const char *message, ...)
 {
   indent_ptr = indent;
-  ERROR_MESSAGE (&loc, NULL, message);
+  ERROR_MESSAGE (&loc, *indent ? NULL : _("error"), message);
   complaint_issued = true;
 }
 
 void
 complain (const char *message, ...)
 {
-  ERROR_MESSAGE (NULL, NULL, message);
+  ERROR_MESSAGE (NULL, _("error"), message);
   complaint_issued = true;
 }
 
index b893564..fe78e6f 100644 (file)
@@ -1,6 +1,6 @@
 /* Declaration for error-reporting function for Bison.
 
-   Copyright (C) 2000-2002, 2006, 2009-2012 Free Software Foundation,
+   Copyright (C) 2000-2002, 2006, 2009-2013 Free Software Foundation,
    Inc.
 
    This program is free software: you can redistribute it and/or modify
@@ -25,6 +25,9 @@
 extern "C" {
 # endif
 
+/* Sub-messages indent. */
+#define SUB_INDENT (4)
+
 /** Record that a warning is about to be issued, and treat it as an
     error if <tt>warnings_flag & warnings_error</tt>.  This is exported
     only for the sake of Yacc-compatible conflict reports in conflicts.c.
index ba0b6ed..4e05ab3 100644 (file)
@@ -1,6 +1,6 @@
 /* Find and resolve or report lookahead conflicts for bison,
 
-   Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 1992, 2000-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 5a03454..5df5787 100644 (file)
@@ -1,6 +1,6 @@
 /* Find and resolve or report lookahead conflicts for bison,
 
-   Copyright (C) 2000-2002, 2004, 2007, 2009-2012 Free Software
+   Copyright (C) 2000-2002, 2004, 2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index ce5a6a5..1f9bbc5 100644 (file)
@@ -1,6 +1,6 @@
 /* Match rules with nonterminals for bison,
 
-   Copyright (C) 1984, 1989, 2000-2003, 2005, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2003, 2005, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index f25e502..ea8dff7 100644 (file)
@@ -1,6 +1,6 @@
 /* Match rules with nonterminals for bison,
 
-   Copyright (C) 1984, 1989, 2000-2002, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2002, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index f698c7e..7b7a191 100644 (file)
@@ -1,6 +1,6 @@
 /* Open and close files for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 8f0bec0..ccc8870 100644 (file)
@@ -1,6 +1,6 @@
 /* File names and variables for bison,
 
-   Copyright (C) 1984, 1989, 2000-2002, 2006-2007, 2009-2012 Free
+   Copyright (C) 1984, 1989, 2000-2002, 2006-2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 9979841..f56b3f7 100644 (file)
@@ -1,6 +1,6 @@
 /* Common parts between scan-code.l, scan-gram.l, and scan-skel.l.
 
-   Copyright (C) 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 # error "FLEX_PREFIX not defined"
 #endif
 
-/* Whether this version of Flex is (strictly) greater than
-   Major.Minor.Subminor.  */
-#define FLEX_VERSION_GT(Major, Minor, Subminor)                         \
-  (defined YY_FLEX_MAJOR_VERSION                                        \
-   && (Major < YY_FLEX_MAJOR_VERSION                                    \
-       || (Major == YY_FLEX_MAJOR_VERSION                               \
-           && (defined YY_FLEX_MINOR_VERSION                            \
-               && (Minor < YY_FLEX_MINOR_VERSION                        \
-                   || (Minor == YY_FLEX_MINOR_VERSION                   \
-                       && defined YY_FLEX_SUBMINOR_VERSION              \
-                       && Subminor < YY_FLEX_SUBMINOR_VERSION))))))
+/* Flex full version as a number.  */
+#define FLEX_VERSION                    \
+  ((YY_FLEX_MAJOR_VERSION) * 1000000    \
+   + (YY_FLEX_MINOR_VERSION) * 1000     \
+   + (YY_FLEX_SUBMINOR_VERSION))
 
 /* Pacify "gcc -Wmissing-prototypes" when flex 2.5.31 is used.  */
-# if ! FLEX_VERSION_GT (2, 5, 31)
+# if FLEX_VERSION <= 2005031
 int   FLEX_PREFIX (get_lineno) (void);
 FILE *FLEX_PREFIX (get_in) (void);
 FILE *FLEX_PREFIX (get_out) (void);
@@ -65,7 +59,7 @@ int   FLEX_PREFIX (lex_destroy) (void);
    versions according to the Flex manual) leak memory if yylex_destroy is not
    invoked.  However, yylex_destroy is not defined before Flex 2.5.9, so give
    an implementation here that at least appears to work with Flex 2.5.4.  */
-#if ! FLEX_VERSION_GT (2, 5, 9)
+#if FLEX_VERSION <= 2005009
 # define yylex_destroy() yy_delete_buffer (YY_CURRENT_BUFFER)
 #endif
 
index 599cbba..94197f8 100644 (file)
@@ -1,6 +1,6 @@
 /* Parse command line arguments for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -49,7 +49,7 @@
 #include "quote.h"
 #include "uniqstr.h"
 
-bool debug_flag;
+bool debug;
 bool defines_flag;
 bool graph_flag;
 bool xml_flag;
@@ -63,6 +63,7 @@ bool error_verbose = false;
 bool nondeterministic_parser = false;
 bool glr_parser = false;
 
+int feature_flag = feature_none;
 int report_flag = report_none;
 int trace_flag = trace_none;
 int warnings_flag = warnings_conflicts_sr | warnings_conflicts_rr
@@ -257,6 +258,26 @@ static const int warnings_types[] =
 
 ARGMATCH_VERIFY (warnings_args, warnings_types);
 
+/*-----------------------.
+| --feature's handling.  |
+`-----------------------*/
+
+static const char * const feature_args[] =
+{
+  "none",
+  "caret", "diagnostics-show-caret",
+  "all",
+  0
+};
+
+static const int feature_types[] =
+{
+  feature_none,
+  feature_caret, feature_caret,
+  feature_all
+};
+
+ARGMATCH_VERIFY (feature_args, feature_types);
 
 /*-------------------------------------------.
 | Display the help message and exit STATUS.  |
@@ -301,13 +322,13 @@ Operation modes:\n\
       --print-datadir        output directory containing skeletons and XSLT\n\
   -y, --yacc                 emulate POSIX Yacc\n\
   -W, --warnings[=CATEGORY]  report the warnings falling in CATEGORY\n\
+  -f, --feature[=FEATURE]    activate miscellaneous features\n\
 \n\
 "), stdout);
 
       fputs (_("\
 Parser:\n\
   -L, --language=LANGUAGE          specify the output programming language\n\
-                                   (this is an experimental feature)\n\
   -S, --skeleton=FILE              specify the skeleton to use\n\
   -t, --debug                      instrument the parser for debugging\n\
       --locations                  enable location support\n\
@@ -317,8 +338,8 @@ Parser:\n\
                                    deprecated by '-Dapi.prefix=PREFIX'\n\
   -l, --no-lines                   don't generate '#line' directives\n\
   -k, --token-table                include a table of token names\n\
-\n\
 "), stdout);
+      putc ('\n', stdout);
 
       /* Keep -d and --defines separate so that ../build-aux/cross-options.pl
        * won't assume that -d also takes an argument.  */
@@ -334,8 +355,8 @@ Output:\n\
   -g, --graph[=FILE]         also output a graph of the automaton\n\
   -x, --xml[=FILE]           also output an XML report of the automaton\n\
                              (the XML schema is experimental)\n\
-\n\
 "), stdout);
+      putc ('\n', stdout);
 
       fputs (_("\
 Warning categories include:\n\
@@ -343,13 +364,14 @@ Warning categories include:\n\
   `yacc'            incompatibilities with POSIX Yacc\n\
   `conflicts-sr'    S/R conflicts (enabled by default)\n\
   `conflicts-rr'    R/R conflicts (enabled by default)\n\
+  `deprecated'      obsolete constructs\n\
   `other'           all other warnings (enabled by default)\n\
   `all'             all the warnings\n\
   `no-CATEGORY'     turn off warnings in CATEGORY\n\
   `none'            turn off all the warnings\n\
   `error'           treat warnings as errors\n\
-\n\
 "), stdout);
+      putc ('\n', stdout);
 
       fputs (_("\
 THINGS is a list of comma separated words that can include:\n\
@@ -360,8 +382,34 @@ THINGS is a list of comma separated words that can include:\n\
   `all'          include all the above information\n\
   `none'         disable the report\n\
 "), stdout);
+      putc ('\n', stdout);
 
-      printf (_("\nReport bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+      fputs (_("\
+FEATURE is a list of comma separated words that can include:\n\
+  `caret'        show errors with carets\n\
+  `all'          all of the above\n\
+  `none'         disable all of the above\n\
+  "), stdout);
+
+      putc ('\n', stdout);
+      printf (_("Report bugs to <%s>.\n"), PACKAGE_BUGREPORT);
+      printf (_("%s home page: <%s>.\n"), PACKAGE_NAME, PACKAGE_URL);
+      fputs (_("General help using GNU software: "
+               "<http://www.gnu.org/gethelp/>.\n"),
+             stdout);
+      /* Don't output this redundant message for English locales.
+         Note we still output for 'C' so that it gets included in the
+         man page.  */
+      const char *lc_messages = setlocale (LC_MESSAGES, NULL);
+      if (lc_messages && strcmp (lc_messages, "en_"))
+        /* TRANSLATORS: Replace LANG_CODE in this URL with your language
+           code <http://translationproject.org/team/LANG_CODE.html> to
+           form one of the URLs at http://translationproject.org/team/.
+           Otherwise, replace the entire URL with your translation team's
+           email address.  */
+        fputs (_("Report translation bugs to "
+                 "<http://translationproject.org/team/>.\n"), stdout);
+      fputs (_("For complete documentation, run: info bison.\n"), stdout);
     }
 
   exit (status);
@@ -451,6 +499,7 @@ static char const short_options[] =
   "W::"
   "b:"
   "d"
+  "f::"
   "e"
   "g::"
   "h"
@@ -503,6 +552,7 @@ static struct option const long_options[] =
 
   /* Output.  */
   { "defines",     optional_argument,   0,   'd' },
+  { "feature",     optional_argument,   0,   'f' },
 
   /* Operation modes.  */
   { "fixed-output-files", no_argument,  0,   'y' },
@@ -537,7 +587,7 @@ command_line_location (void)
 {
   location res;
   /* "<command line>" is used in GCC's messages about -D. */
-  boundary_set (&res.start, uniqstr_new ("<command line>"), optind, -1);
+  boundary_set (&res.start, uniqstr_new ("<command line>"), optind - 1, -1);
   res.end = res.start;
   return res;
 }
@@ -595,6 +645,10 @@ getargs (int argc, char *argv[])
        version ();
        exit (EXIT_SUCCESS);
 
+      case 'f':
+        FLAGS_ARGMATCH (feature, optarg);
+        break;
+
       case 'W':
        FLAGS_ARGMATCH (warnings, optarg);
        break;
@@ -646,7 +700,7 @@ getargs (int argc, char *argv[])
        break;
 
       case 't':
-       debug_flag = true;
+       debug = true;
        break;
 
       case 'v':
index 22538cf..63c6aa4 100644 (file)
@@ -1,6 +1,6 @@
 /* Parse command line arguments for bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -34,7 +34,7 @@ extern int skeleton_prio;
 /* for -I */
 extern char const *include;
 
-extern bool debug_flag;                        /* for -t */
+extern bool debug;                     /* for -t */
 extern bool defines_flag;              /* for -d */
 extern bool graph_flag;                        /* for -g */
 extern bool xml_flag;                  /* for -x */
@@ -130,6 +130,18 @@ enum warnings
 /** What warnings are issued.  */
 extern int warnings_flag;
 
+/*-------------.
+| --features.  |
+`-------------*/
+
+enum feature
+  {
+    feature_none  = 0,         /**< No additional feature.  */
+    feature_caret = 1 << 0,    /**< Enhance the output of errors with carets.  */
+    feature_all   = ~0         /**< All above features.  */
+  };
+/** What additional features to use.  */
+extern int feature_flag;
 
 /** Process the command line arguments.
  *
index d1b3804..69a4857 100644 (file)
@@ -1,6 +1,6 @@
 /* Allocate input grammar variables for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 2001-2003, 2005-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 2001-2003, 2005-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -308,11 +308,16 @@ grammar_rules_useless_report (const char *message)
   for (r = 0; r < nrules ; ++r)
     if (!rules[r].useful)
       {
-        warn_at (rules[r].location, "%s: ", message);
-        if (warnings_flag & warnings_other)
+        if (feature_flag & feature_caret)
+          warn_at (rules[r].location, "%s", message);
+        else
           {
-            rule_print (&rules[r], stderr);
-            fflush (stderr);
+            warn_at (rules[r].location, "%s: ", message);
+            if (warnings_flag & warnings_other)
+              {
+                rule_print (&rules[r], stderr);
+                fflush (stderr);
+              }
           }
       }
 }
index 3f75dd8..66cd317 100644 (file)
@@ -1,6 +1,6 @@
 /* Data definitions for internal representation of Bison's input.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2001-2007, 2009-2012 Free
+   Copyright (C) 1984, 1986, 1989, 1992, 2001-2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 46c22a8..5ee41e7 100644 (file)
@@ -1,6 +1,6 @@
 /* Output Graphviz specification of a state machine generated by Bison.
 
-   Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #include <quotearg.h>
 
 #include "files.h"
+#include "gram.h"
 #include "graphviz.h"
+#include "tables.h"
 
 /* Return an unambiguous printable representation for NAME, suitable
    for C strings.  Use slot 2 since the user may use slots 0 and 1.  */
 
-static char const *
+static char *
 quote (char const *name)
 {
   return quotearg_n_style (2, c_quoting_style, name);
@@ -51,17 +53,21 @@ start_graph (FILE *fout)
            "digraph %s\n"
            "{\n",
            quote (grammar_file));
+  fprintf (fout,
+           "  node [fontname = courier, shape = box, colorscheme = paired6]\n"
+           "  edge [fontname = courier]\n"
+           "\n");
 }
 
 void
 output_node (int id, char const *label, FILE *fout)
 {
-  fprintf (fout, "  %d [label=%s]\n", id, quote (label));
+  fprintf (fout, "  %d [label=\"%s\"]\n", id, label);
 }
 
 void
 output_edge (int source, int destination, char const *label,
-            char const *style, FILE *fout)
+             char const *style, FILE *fout)
 {
   fprintf (fout, "  %d -> %d [style=%s", source, destination, style);
   if (label)
@@ -69,6 +75,142 @@ output_edge (int source, int destination, char const *label,
   fputs ("]\n", fout);
 }
 
+char const *
+escape (char const *name)
+{
+  char *q = quote (name);
+  q[strlen (q) - 1] = '\0';
+  return q + 1;
+}
+
+static void
+no_reduce_bitset_init (state const *s, bitset *no_reduce_set)
+{
+  int n;
+  *no_reduce_set = bitset_create (ntokens, BITSET_FIXED);
+  bitset_zero (*no_reduce_set);
+  FOR_EACH_SHIFT (s->transitions, n)
+    bitset_set (*no_reduce_set, TRANSITION_SYMBOL (s->transitions, n));
+  for (n = 0; n < s->errs->num; ++n)
+    if (s->errs->symbols[n])
+      bitset_set (*no_reduce_set, s->errs->symbols[n]->number);
+}
+
+static void
+conclude_red (struct obstack *out, int source, rule_number ruleno,
+              bool enabled, bool first, FILE *fout)
+{
+  /* If no lookahead tokens were valid transitions, this reduction is
+     actually hidden, so cancel everything. */
+  if (first)
+    (void) obstack_finish0 (out);
+  else
+    {
+      char const *ed = enabled ? "" : "d";
+      char const *color = enabled ? ruleno ? "3" : "1" : "5";
+
+      /* First, build the edge's head. The name of reduction nodes is "nRm",
+         with n the source state and m the rule number. This is because we
+         don't want all the reductions bearing a same rule number to point to
+         the same state, since that is not the desired format. */
+      fprintf (fout, "  %1$d -> \"%1$dR%2$d%3$s\" [",
+               source, ruleno, ed);
+
+      /* (The lookahead tokens have been added to the beginning of the
+         obstack, in the caller function.) */
+      if (! obstack_empty_p (out))
+        {
+          char *label = obstack_finish0 (out);
+          fprintf (fout, "label=\"[%s]\", ", label);
+          obstack_free (out, label);
+        }
+
+      /* Then, the edge's tail. */
+      fprintf (fout, "style=solid]\n");
+
+      /* Build the associated diamond representation of the target rule. */
+      fprintf (fout, " \"%dR%d%s\" [label=\"",
+               source, ruleno, ed);
+      if (ruleno)
+        fprintf (fout, "R%d", ruleno);
+      else
+        fprintf (fout, "Acc");
+
+      fprintf (fout, "\", fillcolor=%s, shape=diamond, style=filled]\n",
+               color);
+    }
+}
+
+static bool
+print_token (struct obstack *out, bool first, char const *tok)
+{
+  char const *q = escape (tok);
+
+  if (! first)
+    obstack_sgrow (out, ", ");
+  obstack_sgrow (out, q);
+  return false;
+}
+
+void
+output_red (state const *s, reductions const *reds, FILE *fout)
+{
+  bitset no_reduce_set;
+  int j;
+  int source = s->number;
+
+  /* Two obstacks are needed: one for the enabled reductions, and one
+     for the disabled reductions, because in the end we want two
+     separate edges, even though in most cases only one will actually
+     be printed. */
+  struct obstack dout;
+  struct obstack eout;
+
+  no_reduce_bitset_init (s, &no_reduce_set);
+  obstack_init (&dout);
+  obstack_init (&eout);
+
+  for (j = 0; j < reds->num; ++j)
+    {
+      bool defaulted = false;
+      bool firstd = true;
+      bool firste = true;
+      rule_number ruleno = reds->rules[j]->number;
+      rule *default_reduction = NULL;
+
+      if (yydefact[s->number] != 0)
+        default_reduction = &rules[yydefact[s->number] - 1];
+
+      /* Build the lookahead tokens lists, one for enabled transitions and one
+         for disabled transistions. */
+      if (default_reduction && default_reduction == reds->rules[j])
+        defaulted = true;
+      if (reds->lookahead_tokens)
+        {
+          int i;
+          for (i = 0; i < ntokens; i++)
+            if (bitset_test (reds->lookahead_tokens[j], i))
+              {
+                if (bitset_test (no_reduce_set, i))
+                  firstd = print_token (&dout, firstd, symbols[i]->tag);
+                else
+                  {
+                    if (! defaulted)
+                      firste = print_token (&eout, firste, symbols[i]->tag);
+                    bitset_set (no_reduce_set, i);
+                  }
+              }
+        }
+
+      /* Do the actual output. */
+      conclude_red (&dout, source, ruleno, false, firstd, fout);
+      conclude_red (&eout, source, ruleno, true, firste && !defaulted, fout);
+    }
+  obstack_free (&dout, 0);
+  obstack_free (&eout, 0);
+  bitset_free (no_reduce_set);
+}
+
 void
 finish_graph (FILE *fout)
 {
index 556fdda..e8d0f0c 100644 (file)
@@ -1,6 +1,6 @@
 /* Output Graphviz specification of a state machine generated by Bison.
 
-   Copyright (C) 2006, 2010-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006, 2010-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 #ifndef GRAPHVIZ_H_
 # define GRAPHVIZ_H_
 
-/// Begin a Dot graph.
-/// \param fout   output stream.
+#include "state.h"
+
+/** Begin a Dot graph.
+ *
+ * \param fout   output stream.
+ */
 void start_graph (FILE *fout);
 
-/// Output a Dot node.
-/// \param id     identifier of the node
-/// \param label  human readable label of the node (no Dot escaping needed).
-/// \param fout   output stream.
+/** Output a Dot node.
+ *
+ * \param id     identifier of the node
+ * \param label  human readable label of the node (no Dot escaping needed).
+ * \param fout   output stream.
+ */
 void output_node (int id, char const *label, FILE *fout);
 
-/// Output a Dot edge.
-/// \param source       id of the source node
-/// \param destination  id of the target node
-/// \param label        human readable label of the edge
-///                     (no Dot escaping needed).  Can be 0.
-/// \param style        Dot style of the edge (e.g., "dotted" or "solid").
-/// \param fout         output stream.
+/** Output a Dot edge.
+ * \param source       id of the source node
+ * \param destination  id of the target node
+ * \param label        human readable label of the edge
+ *                     (no Dot escaping needed).  Can be 0.
+ * \param style        Dot style of the edge (e.g., "dotted" or "solid").
+ * \param fout         output stream.
+ */
 void output_edge (int source, int destination, char const *label,
-                 char const *style, FILE *fout);
+                  char const *style, FILE *fout);
+
+/** Output a reduction.
+ * \param s            current state
+ * \param reds         the set of reductions
+ * \param fout         output stream.
+ */
+void output_red (state const *s, reductions const *reds, FILE *fout);
 
-/// End a Dot graph.
-/// \param fout  output stream.
+/** End a Dot graph.
+ *
+ * \param fout  output stream.
+ */
 void finish_graph (FILE *fout);
 
+/** Escape a lookahead token.
+ *
+ * \param name         the token.
+ */
+char const *escape (char const *name);
+
 #endif /* ! GRAPHVIZ_H_ */
index cde2baa..4692de0 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR main implementation.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -758,8 +758,8 @@ ielr_compute_state (bitsetv follow_kernel_items, bitsetv always_follows,
                     if (!bitset_empty_p (lookaheads[i]))
                       break;
                   }
-                // bitset_equal_p uses the size of the first argument, so
-                // lookaheads[i] must be the second argument.
+                /* bitset_equal_p uses the size of the first argument,
+                   so lookaheads[i] must be the second argument.  */
                 else if (!bitset_equal_p ((*this_isocorep)->lookaheads[i],
                                           lookaheads[i]))
                   break;
@@ -1187,8 +1187,8 @@ ielr (void)
   free (to_state);
   if (lr_type == LR_TYPE__CANONICAL_LR)
     {
-      // Reduction lookaheads are computed in ielr_split_states above but are
-      // timed as part of phase 4.
+      /* Reduction lookaheads are computed in ielr_split_states above
+         but are timed as part of phase 4. */
       set_goto_map ();
     }
   else
index 7b22380..405c03e 100644 (file)
@@ -1,6 +1,6 @@
 /* IELR main implementation.
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 9866154..53d9a83 100644 (file)
@@ -1,6 +1,6 @@
 /* Compute lookahead criteria for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 2000-2012 Free Software Foundation,
+   Copyright (C) 1984, 1986, 1989, 2000-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 75e957e..f483315 100644 (file)
@@ -1,7 +1,7 @@
 /* Compute lookahead criteria for bison,
 
    Copyright (C) 1984, 1986, 1989, 2000, 2002, 2004, 2006-2007,
-   2009-2012 Free Software Foundation, Inc.
+   2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 11df5aa..f565b24 100644 (file)
@@ -1,6 +1,6 @@
 /* Locations for Bison
 
-   Copyright (C) 2002, 2005-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2005-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -107,7 +107,7 @@ location_print (FILE *out, location loc)
                   quotearg_n_style (3, escape_quoting_style, loc.start.file));
   if (0 <= loc.start.line)
     {
-      res += fprintf(out, ":%d", loc.start.line);
+      res += fprintf (out, ":%d", loc.start.line);
       if (0 <= loc.start.column)
         res += fprintf (out, ".%d", loc.start.column);
     }
@@ -118,7 +118,7 @@ location_print (FILE *out, location loc)
                                         loc.end.file));
       if (0 <= loc.end.line)
         {
-          res += fprintf(out, ":%d", loc.end.line);
+          res += fprintf (out, ":%d", loc.end.line);
           if (0 <= end_col)
             res += fprintf (out, ".%d", end_col);
         }
@@ -138,6 +138,81 @@ location_print (FILE *out, location loc)
   return res;
 }
 
+
+/* Persistant data used by location_caret to avoid reopening and rereading the
+   same file all over for each error.  */
+struct caret_info
+{
+  FILE *source;
+  size_t line;
+  size_t offset;
+};
+
+static struct caret_info caret_info = { NULL, 1, 0 };
+
+void
+cleanup_caret ()
+{
+  if (caret_info.source)
+    fclose (caret_info.source);
+}
+
+void
+location_caret (FILE *out, location loc)
+{
+  /* FIXME: find a way to support multifile locations, and only open once each
+     file. That would make the procedure future-proof.  */
+  if (! (caret_info.source
+         || (caret_info.source = fopen (loc.start.file, "r")))
+      || loc.start.column == -1 || loc.start.line == -1)
+    return;
+
+  /* If the line we want to quote is seekable (the same line as the previous
+     location), just seek it. If it was before, we lost track of it, so
+     return to the start of file.  */
+  if (caret_info.line <= loc.start.line)
+    fseek (caret_info.source, caret_info.offset, SEEK_SET);
+  else
+    {
+      caret_info.line = 1;
+      caret_info.offset = 0;
+      fseek (caret_info.source, caret_info.offset, SEEK_SET);
+    }
+
+  /* Advance to the line's position, keeping track of the offset.  */
+  while (caret_info.line < loc.start.line)
+    caret_info.line += fgetc (caret_info.source) == '\n';
+  caret_info.offset = ftell (caret_info.source);
+
+  /* Read the actual line.  Don't update the offset, so that we keep a pointer
+     to the start of the line.  */
+  {
+    char *buf = NULL;
+    size_t size = 0;
+    ssize_t len = getline (&buf, &size, caret_info.source);
+    if (0 < len)
+      {
+        /* The caret of a multiline location ends with the first line.  */
+        int end = loc.start.line != loc.end.line ? len : loc.end.column;
+
+        /* Quote the file, indent by a single column.  */
+        fputc (' ', out);
+        fwrite (buf, 1, len, out);
+
+        /* Print the caret, with the same indent as above.  */
+        fprintf (out, " %*s", loc.start.column - 1, "");
+        {
+          int i = loc.start.column;
+          do
+            fputc ('^', out);
+          while (++i < end);
+        }
+        fputc ('\n', out);
+      }
+    free (buf);
+  }
+}
+
 void
 boundary_set_from_string (boundary *bound, char *loc_str)
 {
index 4c2b410..2129a62 100644 (file)
@@ -1,6 +1,6 @@
 /* Locations for Bison
 
-   Copyright (C) 2002, 2004-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -88,7 +88,7 @@ typedef struct
 
 } location;
 
-#define YYLTYPE location
+#define GRAM_LTYPE location
 
 #define EMPTY_LOCATION_INIT {{NULL, 0, 0}, {NULL, 0, 0}}
 extern location const empty_location;
@@ -102,6 +102,13 @@ void location_compute (location *loc,
    characters.  */
 unsigned location_print (FILE *out, location loc);
 
+/* Free any allocated ressources and close any open file handles that are
+   left-over by the usage of location_caret.  */
+void cleanup_caret (void);
+
+/* Output to OUT the line and caret corresponding to location LOC.  */
+void location_caret (FILE *out, location loc);
+
 /* Return -1, 0, 1, depending whether a is before, equal, or
    after b.  */
 static inline int
index 0396b0f..ef59b1f 100644 (file)
@@ -1,6 +1,6 @@
 /* Top level entry point of Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000-2002, 2004-2012 Free
+   Copyright (C) 1984, 1986, 1989, 1992, 1995, 2000-2002, 2004-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -216,5 +216,7 @@ main (int argc, char *argv[])
   timevar_stop (TV_TOTAL);
   timevar_print (stderr);
 
+  cleanup_caret ();
+
   return complaint_issued ? EXIT_FAILURE : EXIT_SUCCESS;
 }
index bd1fd17..97c26ea 100644 (file)
@@ -1,6 +1,6 @@
 /* Muscle table manager for Bison.
 
-   Copyright (C) 2001-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -396,47 +396,61 @@ muscle_user_name_list_grow (char const *key, char const *user_name,
   muscle_grow (key, "]]", "");
 }
 
+/** If the \a variable name is obsolete, return the name to use,
+ * otherwise \a variable. */
+static
+char const *
+muscle_percent_variable_update (char const *variable)
+{
+  typedef struct
+  {
+    const char *obsolete;
+    const char *updated;
+  } conversion_type;
+  const conversion_type conversion[] =
+    {
+      { "api.push_pull", "api.push-pull", },
+      { "location_type", "api.location.type", },
+      { "lr.keep_unreachable_states", "lr.keep-unreachable-states", },
+    };
+  char const *res = variable;
+  int i;
+  for (i = 0; i < ARRAY_CARDINALITY (conversion); ++i)
+    if (STREQ (conversion[i].obsolete, variable))
+      {
+        res = conversion[i].updated;
+        break;
+      }
+  return res;
+}
+
 void
-muscle_percent_define_insert (char const *variable, location variable_loc,
+muscle_percent_define_insert (char const *var, location variable_loc,
                               char const *value,
                               muscle_percent_define_how how)
 {
-  char *variable_tr = NULL;
-  char const *name;
-  char const *loc_name;
-  char const *syncline_name;
-  char const *how_name;
-
-  /* Permit certain names with underscores for backward compatibility.  */
-  if (0 == strcmp (variable, "api.push_pull")
-      || 0 == strcmp (variable, "lr.keep_unreachable_states"))
-    {
-      variable_tr = strdup (variable);
-      tr (variable_tr, '_', '-');
-      variable = variable_tr;
-    }
-
-  name = UNIQSTR_CONCAT ("percent_define(", variable, ")");
-  loc_name = UNIQSTR_CONCAT ("percent_define_loc(", variable, ")");
-  syncline_name =
+  /* Backward compatibility.  */
+  char const *variable = muscle_percent_variable_update (var);
+  char const *name = UNIQSTR_CONCAT ("percent_define(", variable, ")");
+  char const *loc_name = UNIQSTR_CONCAT ("percent_define_loc(", variable, ")");
+  char const *syncline_name =
     UNIQSTR_CONCAT ("percent_define_syncline(", variable, ")");
-  how_name = UNIQSTR_CONCAT ("percent_define_how(", variable, ")");
+  char const *how_name = UNIQSTR_CONCAT ("percent_define_how(", variable, ")");
 
   /* Command-line options are processed before the grammar file.  */
   if (how == MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE
       && muscle_find_const (name))
     {
+      unsigned i = 0;
       muscle_percent_define_how how_old =
         atoi (muscle_find_const (how_name));
       if (how_old == MUSCLE_PERCENT_DEFINE_F)
-        {
-          free (variable_tr);
-          return;
-        }
-      complain_at (variable_loc, _("%%define variable %s redefined"),
-                   quote (variable));
-      complain_at (muscle_percent_define_get_loc (variable),
-                   _("previous definition"));
+        return;
+      complain_at_indent (variable_loc, &i,
+                          _("%%define variable %s redefined"), quote (variable));
+      i += SUB_INDENT;
+      complain_at_indent (muscle_percent_define_get_loc (variable), &i,
+                          _("previous definition"));
     }
 
   MUSCLE_INSERT_STRING (name, value);
@@ -447,8 +461,6 @@ muscle_percent_define_insert (char const *variable, location variable_loc,
   muscle_user_name_list_grow ("percent_define_user_variables", variable,
                               variable_loc);
   MUSCLE_INSERT_INT (how_name, how);
-
-  free (variable_tr);
 }
 
 char *
@@ -591,12 +603,15 @@ muscle_percent_define_check_values (char const * const *values)
             }
           if (!*values)
             {
+              unsigned i = 0;
               location loc = muscle_percent_define_get_loc (*variablep);
-              complain_at(loc,
-                          _("invalid value for %%define variable %s: %s"),
-                          quote (*variablep), quote_n (1, value));
+              complain_at_indent (loc, &i,
+                                _("invalid value for %%define variable %s: %s"),
+                                  quote (*variablep), quote_n (1, value));
+              i += SUB_INDENT;
               for (values = variablep + 1; *values; ++values)
-                complain_at (loc, _("accepted value: %s"), quote (*values));
+                complain_at_indent (loc, &i, _("accepted value: %s"),
+                                    quote (*values));
             }
           else
             {
index 696103f..6278f3b 100644 (file)
@@ -1,6 +1,6 @@
 /* Muscle table manager for Bison,
 
-   Copyright (C) 2001-2003, 2006-2007, 2009-2012 Free Software
+   Copyright (C) 2001-2003, 2006-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index bf7a3f7..1693767 100644 (file)
@@ -1,6 +1,6 @@
 /* Named symbol references for Bison
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 00c972c..9ae9d62 100644 (file)
@@ -1,6 +1,6 @@
 /* Named symbol references for Bison
 
-   Copyright (C) 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 1e7f5d1..209b3d2 100644 (file)
@@ -1,6 +1,6 @@
 /* Calculate which nonterminals can expand into the null string for Bison.
 
-   Copyright (C) 1984, 1989, 2000-2006, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2006, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index f7b2912..63a8ae3 100644 (file)
@@ -1,6 +1,6 @@
 /* Part of the bison parser generator,
 
-   Copyright (C) 2000, 2002, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2002, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index e77a2d1..ed25db0 100644 (file)
@@ -1,6 +1,6 @@
 /* Output the generated parsing program for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2012 Free Software
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -41,8 +41,6 @@
 #include "symtab.h"
 #include "tables.h"
 
-# define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
-
 static struct obstack format_obstack;
 
 
@@ -628,7 +626,7 @@ prepare (void)
     use_push_for_pull_flag = true;
 
   /* Flags. */
-  MUSCLE_INSERT_BOOL ("debug_flag", debug_flag);
+  MUSCLE_INSERT_BOOL ("debug_flag", debug);
   MUSCLE_INSERT_BOOL ("defines_flag", defines_flag);
   MUSCLE_INSERT_BOOL ("error_verbose_flag", error_verbose);
   MUSCLE_INSERT_BOOL ("glr_flag", glr_parser);
index 6c428d5..f82a7ac 100644 (file)
@@ -1,6 +1,6 @@
 /* Output the generated parsing program for bison,
 
-   Copyright (C) 2000-2003, 2006-2007, 2009-2012 Free Software
+   Copyright (C) 2000-2003, 2006-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index a04f2f2..2a8c996 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.1.12-3153-dirty.  */
+/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
 
 /* Bison implementation for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2013 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
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.6.1.12-3153-dirty"
+#define YYBISON_VERSION "2.7.12-4996"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -58,7 +58,9 @@
 /* Pull parsers.  */
 #define YYPULL 1
 
-
+/* Substitute the type names.  */
+#define YYSTYPE         GRAM_STYPE
+#define YYLTYPE         GRAM_LTYPE
 /* Substitute the variable and function names.  */
 #define yyparse         gram_parse
 #define yylex           gram_lex
 #define yylloc          gram_lloc
 
 /* Copy the first part of user declarations.  */
-/* Line 336 of yacc.c  */
+/* Line 371 of yacc.c  */
 #line 1 "parse-gram.y"
 /* Bison Grammar Parser                             -*- C -*-
 
-   Copyright (C) 2002-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -94,6 +96,7 @@
 #include <config.h>
 #include "system.h"
 
+#include "c-ctype.h"
 #include "complain.h"
 #include "conflicts.h"
 #include "files.h"
@@ -165,8 +168,8 @@ current_lhs(symbol *sym, location loc, named_ref *ref)
 #define YYTYPE_UINT16 uint_fast16_t
 #define YYTYPE_UINT8 uint_fast8_t
 
-/* Line 336 of yacc.c  */
-#line 170 "parse-gram.c"
+/* Line 371 of yacc.c  */
+#line 173 "parse-gram.c"
 
 # ifndef YY_NULL
 #  if defined __cplusplus && 201103L <= __cplusplus
@@ -186,22 +189,30 @@ current_lhs(symbol *sym, location loc, named_ref *ref)
 
 /* 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
+#ifndef YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED
+# define YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED
 /* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
+#ifndef GRAM_DEBUG
+# if defined YYDEBUG
+#  if YYDEBUG
+#   define GRAM_DEBUG 1
+#  else
+#   define GRAM_DEBUG 0
+#  endif
+# else /* ! defined YYDEBUG */
+#  define GRAM_DEBUG 1
+# endif /* ! defined YYDEBUG */
+#endif  /* ! defined GRAM_DEBUG */
+#if GRAM_DEBUG
 extern int gram_debug;
 #endif
 
 /* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
+#ifndef GRAM_TOKENTYPE
+# define GRAM_TOKENTYPE
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
-   enum yytokentype {
+   enum gram_tokentype {
      GRAM_EOF = 0,
      STRING = 258,
      INT = 259,
@@ -320,11 +331,11 @@ extern int gram_debug;
 
 
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+#if ! defined GRAM_STYPE && ! defined GRAM_STYPE_IS_DECLARED
+typedef union GRAM_STYPE
 {
-/* Line 350 of yacc.c  */
-#line 114 "parse-gram.y"
+/* Line 387 of yacc.c  */
+#line 115 "parse-gram.y"
 
   symbol *symbol;
   symbol_list *list;
@@ -337,25 +348,25 @@ typedef union YYSTYPE
   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
+/* Line 387 of yacc.c  */
+#line 353 "parse-gram.c"
+} GRAM_STYPE;
+# define GRAM_STYPE_IS_TRIVIAL 1
+# define gram_stype GRAM_STYPE /* obsolescent; will be withdrawn */
+# define GRAM_STYPE_IS_DECLARED 1
 #endif
 
-#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
-typedef struct YYLTYPE
+#if ! defined GRAM_LTYPE && ! defined GRAM_LTYPE_IS_DECLARED
+typedef struct GRAM_LTYPE
 {
   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
+} GRAM_LTYPE;
+# define gram_ltype GRAM_LTYPE /* obsolescent; will be withdrawn */
+# define GRAM_LTYPE_IS_DECLARED 1
+# define GRAM_LTYPE_IS_TRIVIAL 1
 #endif
 
 
@@ -373,12 +384,12 @@ int gram_parse ();
 #endif
 #endif /* ! YYPARSE_PARAM */
 
-#endif /* !GRAM_Y_TAB_H  */
+#endif /* !YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED  */
 
 /* Copy the second part of user declarations.  */
 
-/* Line 353 of yacc.c  */
-#line 382 "parse-gram.c"
+/* Line 390 of yacc.c  */
+#line 393 "parse-gram.c"
 
 #ifdef short
 # undef short
@@ -431,24 +442,33 @@ typedef short int yytype_int16;
 # if defined YYENABLE_NLS && YYENABLE_NLS
 #  if ENABLE_NLS
 #   include <libintl.h> /* INFRINGES ON USER NAME SPACE */
-#   define YY_(msgid) dgettext ("bison-runtime", msgid)
+#   define YY_(Msgid) dgettext ("bison-runtime", Msgid)
 #  endif
 # endif
 # ifndef YY_
-#  define YY_(msgid) msgid
+#  define YY_(Msgid) Msgid
+# endif
+#endif
+
+#ifndef __attribute__
+/* This feature is available in gcc versions 2.5 and later.  */
+# if (! defined __GNUC__ || __GNUC__ < 2 \
+      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
+#  define __attribute__(Spec) /* empty */
 # endif
 #endif
 
 /* Suppress unused-variable warnings by "using" E.  */
 #if ! defined lint || defined __GNUC__
-# define YYUSE(e) ((void) (e))
+# define YYUSE(E) ((void) (E))
 #else
-# define YYUSE(e) /* empty */
+# define YYUSE(E) /* empty */
 #endif
 
+
 /* Identity function, used to suppress warnings about constant conditions.  */
 #ifndef lint
-# define YYID(n) (n)
+# define YYID(N) (N)
 #else
 #if (defined __STDC__ || defined __C99__FUNC__ \
      || defined __cplusplus || defined _MSC_VER)
@@ -513,8 +533,8 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-        || (defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL \
-            && defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+        || (defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL \
+            && defined GRAM_STYPE_IS_TRIVIAL && GRAM_STYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -631,7 +651,7 @@ static const yytype_uint8 yytranslate[] =
       55,    56,    57
 };
 
-#if YYDEBUG
+#if GRAM_DEBUG
 /* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
    YYRHS.  */
 static const yytype_uint16 yyprhs[] =
@@ -685,21 +705,21 @@ static const yytype_int8 yyrhs[] =
 /* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
 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,   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
+       0,   230,   230,   238,   240,   244,   245,   255,   256,   261,
+     262,   267,   268,   269,   270,   271,   272,   277,   286,   287,
+     288,   289,   290,   291,   292,   293,   294,   295,   296,   311,
+     312,   336,   337,   338,   339,   343,   344,   345,   349,   361,
+     373,   377,   381,   388,   403,   404,   408,   420,   420,   425,
+     425,   430,   441,   456,   457,   458,   462,   463,   468,   470,
+     475,   476,   481,   483,   488,   489,   493,   494,   495,   496,
+     501,   506,   511,   517,   523,   534,   535,   544,   545,   551,
+     552,   553,   560,   560,   568,   569,   570,   575,   577,   579,
+     581,   583,   585,   590,   592,   603,   604,   609,   610,   611,
+     620,   640,   642,   651,   656,   657,   662,   669,   671
 };
 #endif
 
-#if YYDEBUG || YYERROR_VERBOSE || 1
+#if GRAM_DEBUG || 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[] =
@@ -862,10 +882,10 @@ static const yytype_int16 yytable[] =
       42
 };
 
-#define yypact_value_is_default(yystate) \
-  ((yystate) == (-91))
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-91)))
 
-#define yytable_value_is_error(yytable_value) \
+#define yytable_value_is_error(Yytable_value) \
   YYID (0)
 
 static const yytype_uint8 yycheck[] =
@@ -955,10 +975,11 @@ do                                                              \
     }                                                          \
 while (YYID (0))
 
-
+/* Error token number */
 #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).  */
@@ -986,17 +1007,52 @@ while (YYID (0))
 #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
    we won't break user code: when these are the locations we know.  */
 
 #ifndef YY_LOCATION_PRINT
-# if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-#  define YY_LOCATION_PRINT(File, Loc)                 \
-     fprintf (File, "%d.%d-%d.%d",                     \
-             (Loc).first_line, (Loc).first_column,     \
-             (Loc).last_line,  (Loc).last_column)
+# if defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL
+
+/* Print *YYLOCP on YYO.  Private, do not rely on its existence. */
+
+__attribute__((__unused__))
+#if (defined __STDC__ || defined __C99__FUNC__ \
+     || defined __cplusplus || defined _MSC_VER)
+static unsigned
+yy_location_print_ (FILE *yyo, YYLTYPE const * const yylocp)
+#else
+static unsigned
+yy_location_print_ (yyo, yylocp)
+    FILE *yyo;
+    YYLTYPE const * const yylocp;
+#endif
+{
+  unsigned res = 0;
+  int end_col = 0 != yylocp->last_column ? yylocp->last_column - 1 : 0;
+  if (0 <= yylocp->first_line)
+    {
+      res += fprintf (yyo, "%d", yylocp->first_line);
+      if (0 <= yylocp->first_column)
+        res += fprintf (yyo, ".%d", yylocp->first_column);
+    }
+  if (0 <= yylocp->last_line)
+    {
+      if (yylocp->first_line < yylocp->last_line)
+        {
+          res += fprintf (yyo, "-%d", yylocp->last_line);
+          if (0 <= end_col)
+            res += fprintf (yyo, ".%d", end_col);
+        }
+      else if (0 <= end_col && yylocp->first_column < end_col)
+        res += fprintf (yyo, "-%d", end_col);
+    }
+  return res;
+ }
+
+#  define YY_LOCATION_PRINT(File, Loc)          \
+  yy_location_print_ (File, &(Loc))
+
 # else
 #  define YY_LOCATION_PRINT(File, Loc) ((void) 0)
 # endif
@@ -1004,7 +1060,6 @@ while (YYID (0))
 
 
 /* YYLEX -- calling `yylex' with the right arguments.  */
-
 #ifdef YYLEX_PARAM
 # define YYLEX yylex (&yylval, &yylloc, YYLEX_PARAM)
 #else
@@ -1012,7 +1067,7 @@ while (YYID (0))
 #endif
 
 /* Enable debugging if requested.  */
-#if YYDEBUG
+#if GRAM_DEBUG
 
 # ifndef YYFPRINTF
 #  include <stdio.h> /* INFRINGES ON USER NAME SPACE */
@@ -1069,133 +1124,134 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep, yylocationp)
   switch (yytype)
     {
       case 3: /* "string" */
-/* Line 809 of yacc.c  */
-#line 204 "parse-gram.y"
-       { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).chars)), stderr); };
-/* Line 809 of yacc.c  */
-#line 1077 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 205 "parse-gram.y"
+        { fputs (quotearg_style (c_quoting_style, ((*yyvaluep).chars)), stderr); };
+/* Line 818 of yacc.c  */
+#line 1132 "parse-gram.c"
+        break;
       case 4: /* "integer" */
-/* Line 809 of yacc.c  */
-#line 216 "parse-gram.y"
-       { fprintf (stderr, "%d", ((*yyvaluep).integer)); };
-/* Line 809 of yacc.c  */
-#line 1084 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 217 "parse-gram.y"
+        { fprintf (stderr, "%d", ((*yyvaluep).integer)); };
+/* Line 818 of yacc.c  */
+#line 1139 "parse-gram.c"
+        break;
       case 43: /* "{...}" */
-/* Line 809 of yacc.c  */
-#line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).code)); };
-/* Line 809 of yacc.c  */
-#line 1091 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 207 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).code)); };
+/* Line 818 of yacc.c  */
+#line 1146 "parse-gram.c"
+        break;
       case 44: /* "[identifier]" */
-/* Line 809 of yacc.c  */
-#line 211 "parse-gram.y"
-       { fprintf (stderr, "[%s]", ((*yyvaluep).uniqstr)); };
-/* Line 809 of yacc.c  */
-#line 1098 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 212 "parse-gram.y"
+        { fprintf (stderr, "[%s]", ((*yyvaluep).uniqstr)); };
+/* Line 818 of yacc.c  */
+#line 1153 "parse-gram.c"
+        break;
       case 45: /* "char" */
-/* Line 809 of yacc.c  */
-#line 198 "parse-gram.y"
-       { fputs (char_name (((*yyvaluep).character)), stderr); };
-/* Line 809 of yacc.c  */
-#line 1105 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 199 "parse-gram.y"
+        { fputs (char_name (((*yyvaluep).character)), stderr); };
+/* Line 818 of yacc.c  */
+#line 1160 "parse-gram.c"
+        break;
       case 46: /* "epilogue" */
-/* Line 809 of yacc.c  */
-#line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
-/* Line 809 of yacc.c  */
-#line 1112 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 207 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 818 of yacc.c  */
+#line 1167 "parse-gram.c"
+        break;
       case 48: /* "identifier" */
-/* Line 809 of yacc.c  */
-#line 210 "parse-gram.y"
-       { fputs (((*yyvaluep).uniqstr), stderr); };
-/* Line 809 of yacc.c  */
-#line 1119 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 211 "parse-gram.y"
+        { fputs (((*yyvaluep).uniqstr), stderr); };
+/* Line 818 of yacc.c  */
+#line 1174 "parse-gram.c"
+        break;
       case 49: /* "identifier:" */
-/* Line 809 of yacc.c  */
-#line 212 "parse-gram.y"
-       { fprintf (stderr, "%s:", ((*yyvaluep).uniqstr)); };
-/* Line 809 of yacc.c  */
-#line 1126 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 213 "parse-gram.y"
+        { fprintf (stderr, "%s:", ((*yyvaluep).uniqstr)); };
+/* Line 818 of yacc.c  */
+#line 1181 "parse-gram.c"
+        break;
       case 52: /* "%{...%}" */
-/* Line 809 of yacc.c  */
-#line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
-/* Line 809 of yacc.c  */
-#line 1133 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 207 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 818 of yacc.c  */
+#line 1188 "parse-gram.c"
+        break;
       case 54: /* "type" */
-/* Line 809 of yacc.c  */
-#line 213 "parse-gram.y"
-       { fprintf (stderr, "<%s>", ((*yyvaluep).uniqstr)); };
-/* Line 809 of yacc.c  */
-#line 1140 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 214 "parse-gram.y"
+        { fprintf (stderr, "<%s>", ((*yyvaluep).uniqstr)); };
+/* Line 818 of yacc.c  */
+#line 1195 "parse-gram.c"
+        break;
       case 71: /* symbol.prec */
-/* Line 809 of yacc.c  */
-#line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
-/* Line 809 of yacc.c  */
-#line 1147 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 220 "parse-gram.y"
+        { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 818 of yacc.c  */
+#line 1202 "parse-gram.c"
+        break;
       case 84: /* variable */
-/* Line 809 of yacc.c  */
-#line 210 "parse-gram.y"
-       { fputs (((*yyvaluep).uniqstr), stderr); };
-/* Line 809 of yacc.c  */
-#line 1154 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 211 "parse-gram.y"
+        { fputs (((*yyvaluep).uniqstr), stderr); };
+/* Line 818 of yacc.c  */
+#line 1209 "parse-gram.c"
+        break;
       case 85: /* content.opt */
-/* Line 809 of yacc.c  */
-#line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
-/* Line 809 of yacc.c  */
-#line 1161 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 207 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 818 of yacc.c  */
+#line 1216 "parse-gram.c"
+        break;
       case 86: /* braceless */
-/* Line 809 of yacc.c  */
-#line 206 "parse-gram.y"
-       { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
-/* Line 809 of yacc.c  */
-#line 1168 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 207 "parse-gram.y"
+        { fprintf (stderr, "{\n%s\n}", ((*yyvaluep).chars)); };
+/* Line 818 of yacc.c  */
+#line 1223 "parse-gram.c"
+        break;
       case 87: /* id */
-/* Line 809 of yacc.c  */
-#line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
-/* Line 809 of yacc.c  */
-#line 1175 "parse-gram.c"
-       break;
-      case 88: /* id_colon */
-/* Line 809 of yacc.c  */
+/* Line 818 of yacc.c  */
 #line 220 "parse-gram.y"
-       { fprintf (stderr, "%s:", ((*yyvaluep).symbol)->tag); };
-/* Line 809 of yacc.c  */
-#line 1182 "parse-gram.c"
-       break;
+        { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 818 of yacc.c  */
+#line 1230 "parse-gram.c"
+        break;
+      case 88: /* id_colon */
+/* Line 818 of yacc.c  */
+#line 221 "parse-gram.y"
+        { fprintf (stderr, "%s:", ((*yyvaluep).symbol)->tag); };
+/* Line 818 of yacc.c  */
+#line 1237 "parse-gram.c"
+        break;
       case 89: /* symbol */
-/* Line 809 of yacc.c  */
-#line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
-/* Line 809 of yacc.c  */
-#line 1189 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 220 "parse-gram.y"
+        { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 818 of yacc.c  */
+#line 1244 "parse-gram.c"
+        break;
       case 90: /* string_as_id */
-/* Line 809 of yacc.c  */
-#line 219 "parse-gram.y"
-       { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
-/* Line 809 of yacc.c  */
-#line 1196 "parse-gram.c"
-       break;
+/* Line 818 of yacc.c  */
+#line 220 "parse-gram.y"
+        { fprintf (stderr, "%s", ((*yyvaluep).symbol)->tag); };
+/* Line 818 of yacc.c  */
+#line 1251 "parse-gram.c"
+        break;
+
       default:
-       break;
+        break;
     }
 }
 
@@ -1301,12 +1357,12 @@ do {                                    \
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
 int yydebug;
-#else /* !YYDEBUG */
+#else /* !GRAM_DEBUG */
 # define YYDPRINTF(Args)
 # define YY_SYMBOL_PRINT(Title, Type, Value, Location)
 # define YY_STACK_PRINT(Bottom, Top)
 # define YY_REDUCE_PRINT(Rule)
-#endif /* !YYDEBUG */
+#endif /* !GRAM_DEBUG */
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
@@ -1337,7 +1393,7 @@ int yydebug;
    required.  Return 1 if memory is exhausted.  */
 static int
 yy_lac_stack_realloc (YYSIZE_T *yycapacity, YYSIZE_T yyadd,
-#if YYDEBUG
+#if GRAM_DEBUG
                       char const *yydebug_prefix,
                       char const *yydebug_suffix,
 #endif
@@ -1440,7 +1496,7 @@ do {                                                             \
    the parser stacks to try to find a new initial context in which the
    current lookahead is syntactically acceptable.  If it fails to find
    such a context, it discards the lookahead.  */
-#if YYDEBUG
+#if GRAM_DEBUG
 # define YY_LAC_DISCARD(Event)                                           \
 do {                                                                     \
   if (yy_lac_established)                                                \
@@ -1543,7 +1599,7 @@ yy_lac (yytype_int16 *yyesa, yytype_int16 **yyes,
         else
           {
             if (yy_lac_stack_realloc (yyes_capacity, 1,
-#if YYDEBUG
+#if GRAM_DEBUG
                                       " (", ")",
 #endif
                                       yyes, yyesa, &yyesp, yyes_prev))
@@ -1677,7 +1733,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 {
   YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
-  YYSIZE_T yysize1;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
   const char *yyformat = YY_NULL;
@@ -1738,14 +1793,16 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                     break;
                   }
                 yyarg[yycount++] = yytname[yyx];
-                yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
-                if (! (yysize <= yysize1
-                       && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-                  return 2;
-                yysize = yysize1;
+                {
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, yytname[yyx]);
+                  if (! (yysize <= yysize1
+                         && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+                    return 2;
+                  yysize = yysize1;
+                }
               }
         }
-# if YYDEBUG
+# if GRAM_DEBUG
       else if (yydebug)
         YYFPRINTF (stderr, "No expected tokens.\n");
 # endif
@@ -1766,10 +1823,12 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 # undef YYCASE_
     }
 
-  yysize1 = yysize + yystrlen (yyformat);
-  if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
-    return 2;
-  yysize = yysize1;
+  {
+    YYSIZE_T yysize1 = yysize + yystrlen (yyformat);
+    if (! (yysize <= yysize1 && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
+      return 2;
+    yysize = yysize1;
+  }
 
   if (*yymsg_alloc < yysize)
     {
@@ -1827,12 +1886,7 @@ yydestruct (yymsg, yytype, yyvaluep, yylocationp)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
-  switch (yytype)
-    {
-
-      default:
-       break;
-    }
+  YYUSE (yytype);
 }
 
 
@@ -1867,11 +1921,40 @@ yyparse ()
 /* The lookahead symbol.  */
 int yychar;
 
+
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
+#else
+/* Default value used for initialization, for pacifying older GCCs
+   or non-GCC compilers.  */
+static YYSTYPE yyval_default;
+# define YY_INITIAL_VALUE(Value) = Value
+#endif
+static YYLTYPE yyloc_default
+# if defined GRAM_LTYPE_IS_TRIVIAL && GRAM_LTYPE_IS_TRIVIAL
+  = { 1, 1, 1, 1 }
+# endif
+;
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
+#endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval;
+YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
 
 /* Location data for the lookahead symbol.  */
-YYLTYPE yylloc;
+YYLTYPE yylloc = yyloc_default;
+
 
     /* Number of syntax errors so far.  */
     int yynerrs;
@@ -1916,7 +1999,7 @@ YYLTYPE yylloc;
   int yyn;
   int yyresult;
   /* Lookahead token as an internal (translated) token number.  */
-  int yytoken;
+  int yytoken = 0;
   /* The variables used to return semantic value and location from the
      action routines.  */
   YYSTYPE yyval;
@@ -1935,10 +2018,9 @@ YYLTYPE yylloc;
      Keep to zero when no symbol should be popped.  */
   int yylen = 0;
 
-  yytoken = 0;
-  yyss = yyssa;
-  yyvs = yyvsa;
-  yyls = yylsa;
+  yyssp = yyss = yyssa;
+  yyvsp = yyvs = yyvsa;
+  yylsp = yyls = yylsa;
   yystacksize = YYINITDEPTH;
 
   yyes = yyesa;
@@ -1953,31 +2035,17 @@ YYLTYPE yylloc;
   yynerrs = 0;
   yychar = YYEMPTY; /* Cause a token to be read.  */
 
-  /* Initialize stack pointers.
-     Waste one element of value and location stack
-     so that they stay on the same level as the state stack.
-     The wasted elements are never initialized.  */
-  yyssp = yyss;
-  yyvsp = yyvs;
-  yylsp = yyls;
-
-#if defined YYLTYPE_IS_TRIVIAL && YYLTYPE_IS_TRIVIAL
-  /* Initialize the default location before parsing starts.  */
-  yylloc.first_line   = yylloc.last_line   = 1;
-  yylloc.first_column = yylloc.last_column = 1;
-#endif
-
 /* User initialization code.  */
-/* Line 1572 of yacc.c  */
-#line 106 "parse-gram.y"
+/* Line 1570 of yacc.c  */
+#line 107 "parse-gram.y"
 {
   /* Bison's grammar can initial empty locations, hence a default
      location is needed. */
   boundary_set (&yylloc.start, current_file, 1, 1);
   boundary_set (&yylloc.end, current_file, 1, 1);
 }
-/* Line 1572 of yacc.c  */
-#line 1981 "parse-gram.c"
+/* Line 1570 of yacc.c  */
+#line 2049 "parse-gram.c"
   yylsp[0] = yylloc;
   goto yysetstate;
 
@@ -2129,7 +2197,9 @@ yybackup:
   YY_LAC_DISCARD ("shift");
 
   yystate = yyn;
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
   *++yylsp = yylloc;
   goto yynewstate;
 
@@ -2170,7 +2240,7 @@ yyreduce:
       {
           case 6:
 /* Line 1787 of yacc.c  */
-#line 245 "parse-gram.y"
+#line 246 "parse-gram.y"
     {
       code_props plain_code;
       code_props_plain_init (&plain_code, (yyvsp[(1) - (1)].chars), (yylsp[(1) - (1)]));
@@ -2184,13 +2254,13 @@ yyreduce:
 
   case 7:
 /* Line 1787 of yacc.c  */
-#line 254 "parse-gram.y"
-    { debug_flag = true; }
+#line 255 "parse-gram.y"
+    { debug = true; }
     break;
 
   case 8:
 /* Line 1787 of yacc.c  */
-#line 256 "parse-gram.y"
+#line 257 "parse-gram.y"
     {
       muscle_percent_define_insert ((yyvsp[(2) - (3)].uniqstr), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].chars),
                                     MUSCLE_PERCENT_DEFINE_GRAMMAR_FILE);
@@ -2199,13 +2269,13 @@ yyreduce:
 
   case 9:
 /* Line 1787 of yacc.c  */
-#line 260 "parse-gram.y"
+#line 261 "parse-gram.y"
     { defines_flag = true; }
     break;
 
   case 10:
 /* Line 1787 of yacc.c  */
-#line 262 "parse-gram.y"
+#line 263 "parse-gram.y"
     {
       defines_flag = true;
       spec_defines_file = xstrdup ((yyvsp[(2) - (2)].chars));
@@ -2214,37 +2284,37 @@ yyreduce:
 
   case 11:
 /* Line 1787 of yacc.c  */
-#line 266 "parse-gram.y"
+#line 267 "parse-gram.y"
     { error_verbose = true; }
     break;
 
   case 12:
 /* Line 1787 of yacc.c  */
-#line 267 "parse-gram.y"
+#line 268 "parse-gram.y"
     { expected_sr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 13:
 /* Line 1787 of yacc.c  */
-#line 268 "parse-gram.y"
+#line 269 "parse-gram.y"
     { expected_rr_conflicts = (yyvsp[(2) - (2)].integer); }
     break;
 
   case 14:
 /* Line 1787 of yacc.c  */
-#line 269 "parse-gram.y"
+#line 270 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 15:
 /* Line 1787 of yacc.c  */
-#line 270 "parse-gram.y"
+#line 271 "parse-gram.y"
     { spec_file_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 16:
 /* Line 1787 of yacc.c  */
-#line 272 "parse-gram.y"
+#line 273 "parse-gram.y"
     {
       nondeterministic_parser = true;
       glr_parser = true;
@@ -2253,7 +2323,7 @@ yyreduce:
 
   case 17:
 /* Line 1787 of yacc.c  */
-#line 277 "parse-gram.y"
+#line 278 "parse-gram.y"
     {
       code_props action;
       code_props_symbol_action_init (&action, (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)]));
@@ -2266,67 +2336,67 @@ yyreduce:
 
   case 18:
 /* Line 1787 of yacc.c  */
-#line 285 "parse-gram.y"
+#line 286 "parse-gram.y"
     { language_argmatch ((yyvsp[(2) - (2)].chars), grammar_prio, (yylsp[(1) - (2)])); }
     break;
 
   case 19:
 /* Line 1787 of yacc.c  */
-#line 286 "parse-gram.y"
+#line 287 "parse-gram.y"
     { add_param ("lex_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 20:
 /* Line 1787 of yacc.c  */
-#line 287 "parse-gram.y"
+#line 288 "parse-gram.y"
     { locations_flag = true; }
     break;
 
   case 21:
 /* Line 1787 of yacc.c  */
-#line 288 "parse-gram.y"
+#line 289 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 22:
 /* Line 1787 of yacc.c  */
-#line 289 "parse-gram.y"
+#line 290 "parse-gram.y"
     { spec_name_prefix = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 23:
 /* Line 1787 of yacc.c  */
-#line 290 "parse-gram.y"
+#line 291 "parse-gram.y"
     { no_lines_flag = true; }
     break;
 
   case 24:
 /* Line 1787 of yacc.c  */
-#line 291 "parse-gram.y"
+#line 292 "parse-gram.y"
     { nondeterministic_parser = true; }
     break;
 
   case 25:
 /* Line 1787 of yacc.c  */
-#line 292 "parse-gram.y"
+#line 293 "parse-gram.y"
     { spec_outfile = (yyvsp[(2) - (2)].chars); }
     break;
 
   case 26:
 /* Line 1787 of yacc.c  */
-#line 293 "parse-gram.y"
+#line 294 "parse-gram.y"
     { spec_outfile = (yyvsp[(3) - (3)].chars); }
     break;
 
   case 27:
 /* Line 1787 of yacc.c  */
-#line 294 "parse-gram.y"
+#line 295 "parse-gram.y"
     { add_param ("parse_param", (yyvsp[(2) - (2)].code), (yylsp[(2) - (2)])); }
     break;
 
   case 28:
 /* Line 1787 of yacc.c  */
-#line 296 "parse-gram.y"
+#line 297 "parse-gram.y"
     {
       /* %pure-parser is deprecated in favor of `%define api.pure', so use
          `%define api.pure' in a backward-compatible manner here.  First, don't
@@ -2345,13 +2415,13 @@ yyreduce:
 
   case 29:
 /* Line 1787 of yacc.c  */
-#line 310 "parse-gram.y"
+#line 311 "parse-gram.y"
     { version_check (&(yylsp[(2) - (2)]), (yyvsp[(2) - (2)].chars)); }
     break;
 
   case 30:
 /* Line 1787 of yacc.c  */
-#line 312 "parse-gram.y"
+#line 313 "parse-gram.y"
     {
       char const *skeleton_user = (yyvsp[(2) - (2)].chars);
       if (mbschr (skeleton_user, '/'))
@@ -2379,25 +2449,25 @@ yyreduce:
 
   case 31:
 /* Line 1787 of yacc.c  */
-#line 335 "parse-gram.y"
+#line 336 "parse-gram.y"
     { token_table_flag = true; }
     break;
 
   case 32:
 /* Line 1787 of yacc.c  */
-#line 336 "parse-gram.y"
+#line 337 "parse-gram.y"
     { report_flag |= report_states; }
     break;
 
   case 33:
 /* Line 1787 of yacc.c  */
-#line 337 "parse-gram.y"
+#line 338 "parse-gram.y"
     { yacc_flag = true; }
     break;
 
   case 37:
 /* Line 1787 of yacc.c  */
-#line 345 "parse-gram.y"
+#line 346 "parse-gram.y"
     {
       grammar_start_symbol_set ((yyvsp[(2) - (2)].symbol), (yylsp[(2) - (2)]));
     }
@@ -2405,7 +2475,7 @@ yyreduce:
 
   case 38:
 /* Line 1787 of yacc.c  */
-#line 349 "parse-gram.y"
+#line 350 "parse-gram.y"
     {
       code_props code;
       code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
@@ -2421,7 +2491,7 @@ yyreduce:
 
   case 39:
 /* Line 1787 of yacc.c  */
-#line 361 "parse-gram.y"
+#line 362 "parse-gram.y"
     {
       code_props code;
       code_props_symbol_action_init (&code, (yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]));
@@ -2437,7 +2507,7 @@ yyreduce:
 
   case 40:
 /* Line 1787 of yacc.c  */
-#line 373 "parse-gram.y"
+#line 374 "parse-gram.y"
     {
       default_prec = true;
     }
@@ -2445,7 +2515,7 @@ yyreduce:
 
   case 41:
 /* Line 1787 of yacc.c  */
-#line 377 "parse-gram.y"
+#line 378 "parse-gram.y"
     {
       default_prec = false;
     }
@@ -2453,7 +2523,7 @@ yyreduce:
 
   case 42:
 /* Line 1787 of yacc.c  */
-#line 381 "parse-gram.y"
+#line 382 "parse-gram.y"
     {
       /* Do not invoke muscle_percent_code_grow here since it invokes
          muscle_user_name_list_grow.  */
@@ -2464,7 +2534,7 @@ yyreduce:
 
   case 43:
 /* Line 1787 of yacc.c  */
-#line 388 "parse-gram.y"
+#line 389 "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 ();
@@ -2473,19 +2543,19 @@ yyreduce:
 
   case 44:
 /* Line 1787 of yacc.c  */
-#line 402 "parse-gram.y"
+#line 403 "parse-gram.y"
     {}
     break;
 
   case 45:
 /* Line 1787 of yacc.c  */
-#line 403 "parse-gram.y"
+#line 404 "parse-gram.y"
     { muscle_code_grow ("union_name", (yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 46:
 /* Line 1787 of yacc.c  */
-#line 408 "parse-gram.y"
+#line 409 "parse-gram.y"
     {
       union_seen = true;
       muscle_code_grow ("stype", (yyvsp[(3) - (3)].chars), (yylsp[(3) - (3)]));
@@ -2495,13 +2565,13 @@ yyreduce:
 
   case 47:
 /* Line 1787 of yacc.c  */
-#line 419 "parse-gram.y"
+#line 420 "parse-gram.y"
     { current_class = nterm_sym; }
     break;
 
   case 48:
 /* Line 1787 of yacc.c  */
-#line 420 "parse-gram.y"
+#line 421 "parse-gram.y"
     {
       current_class = unknown_sym;
       current_type = NULL;
@@ -2510,13 +2580,13 @@ yyreduce:
 
   case 49:
 /* Line 1787 of yacc.c  */
-#line 424 "parse-gram.y"
+#line 425 "parse-gram.y"
     { current_class = token_sym; }
     break;
 
   case 50:
 /* Line 1787 of yacc.c  */
-#line 425 "parse-gram.y"
+#line 426 "parse-gram.y"
     {
       current_class = unknown_sym;
       current_type = NULL;
@@ -2525,7 +2595,7 @@ yyreduce:
 
   case 51:
 /* Line 1787 of yacc.c  */
-#line 430 "parse-gram.y"
+#line 431 "parse-gram.y"
     {
       symbol_list *list;
       tag_seen = true;
@@ -2537,7 +2607,7 @@ yyreduce:
 
   case 52:
 /* Line 1787 of yacc.c  */
-#line 441 "parse-gram.y"
+#line 442 "parse-gram.y"
     {
       symbol_list *list;
       ++current_prec;
@@ -2553,109 +2623,109 @@ yyreduce:
 
   case 53:
 /* Line 1787 of yacc.c  */
-#line 455 "parse-gram.y"
+#line 456 "parse-gram.y"
     { (yyval.assoc) = left_assoc; }
     break;
 
   case 54:
 /* Line 1787 of yacc.c  */
-#line 456 "parse-gram.y"
+#line 457 "parse-gram.y"
     { (yyval.assoc) = right_assoc; }
     break;
 
   case 55:
 /* Line 1787 of yacc.c  */
-#line 457 "parse-gram.y"
+#line 458 "parse-gram.y"
     { (yyval.assoc) = non_assoc; }
     break;
 
   case 56:
 /* Line 1787 of yacc.c  */
-#line 461 "parse-gram.y"
+#line 462 "parse-gram.y"
     { current_type = NULL; }
     break;
 
   case 57:
 /* Line 1787 of yacc.c  */
-#line 462 "parse-gram.y"
+#line 463 "parse-gram.y"
     { current_type = (yyvsp[(1) - (1)].uniqstr); tag_seen = true; }
     break;
 
   case 58:
 /* Line 1787 of yacc.c  */
-#line 468 "parse-gram.y"
+#line 469 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 59:
 /* Line 1787 of yacc.c  */
-#line 470 "parse-gram.y"
+#line 471 "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 1787 of yacc.c  */
-#line 474 "parse-gram.y"
+#line 475 "parse-gram.y"
     { (yyval.symbol) = (yyvsp[(1) - (1)].symbol); }
     break;
 
   case 61:
 /* Line 1787 of yacc.c  */
-#line 475 "parse-gram.y"
+#line 476 "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 1787 of yacc.c  */
-#line 481 "parse-gram.y"
+#line 482 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 63:
 /* Line 1787 of yacc.c  */
-#line 483 "parse-gram.y"
+#line 484 "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 1787 of yacc.c  */
-#line 487 "parse-gram.y"
+#line 488 "parse-gram.y"
     { (yyval.list) = (yyvsp[(1) - (1)].list); }
     break;
 
   case 65:
 /* Line 1787 of yacc.c  */
-#line 488 "parse-gram.y"
+#line 489 "parse-gram.y"
     { (yyval.list) = symbol_list_prepend ((yyvsp[(1) - (2)].list), (yyvsp[(2) - (2)].list)); }
     break;
 
   case 66:
 /* Line 1787 of yacc.c  */
-#line 492 "parse-gram.y"
+#line 493 "parse-gram.y"
     { (yyval.list) = symbol_list_sym_new ((yyvsp[(1) - (1)].symbol), (yylsp[(1) - (1)])); }
     break;
 
   case 67:
 /* Line 1787 of yacc.c  */
-#line 493 "parse-gram.y"
+#line 494 "parse-gram.y"
     { (yyval.list) = symbol_list_type_new ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 68:
 /* Line 1787 of yacc.c  */
-#line 494 "parse-gram.y"
+#line 495 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagged_new ((yylsp[(1) - (1)])); }
     break;
 
   case 69:
 /* Line 1787 of yacc.c  */
-#line 495 "parse-gram.y"
+#line 496 "parse-gram.y"
     { (yyval.list) = symbol_list_default_tagless_new ((yylsp[(1) - (1)])); }
     break;
 
   case 70:
 /* Line 1787 of yacc.c  */
-#line 501 "parse-gram.y"
+#line 502 "parse-gram.y"
     {
        current_type = (yyvsp[(1) - (1)].uniqstr);
        tag_seen = true;
@@ -2664,7 +2734,7 @@ yyreduce:
 
   case 71:
 /* Line 1787 of yacc.c  */
-#line 506 "parse-gram.y"
+#line 507 "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)]));
@@ -2673,7 +2743,7 @@ yyreduce:
 
   case 72:
 /* Line 1787 of yacc.c  */
-#line 511 "parse-gram.y"
+#line 512 "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)]));
@@ -2683,7 +2753,7 @@ yyreduce:
 
   case 73:
 /* Line 1787 of yacc.c  */
-#line 517 "parse-gram.y"
+#line 518 "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)]));
@@ -2693,7 +2763,7 @@ yyreduce:
 
   case 74:
 /* Line 1787 of yacc.c  */
-#line 523 "parse-gram.y"
+#line 524 "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)]));
@@ -2704,7 +2774,7 @@ yyreduce:
 
   case 81:
 /* Line 1787 of yacc.c  */
-#line 553 "parse-gram.y"
+#line 554 "parse-gram.y"
     {
       yyerrok;
     }
@@ -2712,13 +2782,13 @@ yyreduce:
 
   case 82:
 /* Line 1787 of yacc.c  */
-#line 559 "parse-gram.y"
+#line 560 "parse-gram.y"
     { current_lhs ((yyvsp[(1) - (2)].symbol), (yylsp[(1) - (2)]), (yyvsp[(2) - (2)].named_ref)); }
     break;
 
   case 83:
 /* Line 1787 of yacc.c  */
-#line 560 "parse-gram.y"
+#line 561 "parse-gram.y"
     {
     /* Free the current lhs. */
     current_lhs (0, (yylsp[(1) - (4)]), 0);
@@ -2727,86 +2797,86 @@ yyreduce:
 
   case 84:
 /* Line 1787 of yacc.c  */
-#line 567 "parse-gram.y"
+#line 568 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(1) - (1)])); }
     break;
 
   case 85:
 /* Line 1787 of yacc.c  */
-#line 568 "parse-gram.y"
+#line 569 "parse-gram.y"
     { grammar_current_rule_end ((yylsp[(3) - (3)])); }
     break;
 
   case 87:
 /* Line 1787 of yacc.c  */
-#line 574 "parse-gram.y"
+#line 575 "parse-gram.y"
     { grammar_current_rule_begin (current_lhs_symbol, current_lhs_location,
                                  current_lhs_named_ref); }
     break;
 
   case 88:
 /* Line 1787 of yacc.c  */
-#line 577 "parse-gram.y"
+#line 578 "parse-gram.y"
     { grammar_current_rule_symbol_append ((yyvsp[(2) - (3)].symbol), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
     break;
 
   case 89:
 /* Line 1787 of yacc.c  */
-#line 579 "parse-gram.y"
+#line 580 "parse-gram.y"
     { grammar_current_rule_action_append ((yyvsp[(2) - (3)].code), (yylsp[(2) - (3)]), (yyvsp[(3) - (3)].named_ref)); }
     break;
 
   case 90:
 /* Line 1787 of yacc.c  */
-#line 581 "parse-gram.y"
+#line 582 "parse-gram.y"
     { grammar_current_rule_prec_set ((yyvsp[(3) - (3)].symbol), (yylsp[(3) - (3)])); }
     break;
 
   case 91:
 /* Line 1787 of yacc.c  */
-#line 583 "parse-gram.y"
+#line 584 "parse-gram.y"
     { grammar_current_rule_dprec_set ((yyvsp[(3) - (3)].integer), (yylsp[(3) - (3)])); }
     break;
 
   case 92:
 /* Line 1787 of yacc.c  */
-#line 585 "parse-gram.y"
+#line 586 "parse-gram.y"
     { grammar_current_rule_merge_set ((yyvsp[(3) - (3)].uniqstr), (yylsp[(3) - (3)])); }
     break;
 
   case 93:
 /* Line 1787 of yacc.c  */
-#line 589 "parse-gram.y"
+#line 590 "parse-gram.y"
     { (yyval.named_ref) = 0; }
     break;
 
   case 94:
 /* Line 1787 of yacc.c  */
-#line 591 "parse-gram.y"
+#line 592 "parse-gram.y"
     { (yyval.named_ref) = named_ref_new((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 96:
 /* Line 1787 of yacc.c  */
-#line 603 "parse-gram.y"
+#line 604 "parse-gram.y"
     { (yyval.uniqstr) = uniqstr_new ((yyvsp[(1) - (1)].chars)); }
     break;
 
   case 97:
 /* Line 1787 of yacc.c  */
-#line 608 "parse-gram.y"
+#line 609 "parse-gram.y"
     { (yyval.chars) = ""; }
     break;
 
   case 98:
 /* Line 1787 of yacc.c  */
-#line 609 "parse-gram.y"
+#line 610 "parse-gram.y"
     { (yyval.chars) = (yyvsp[(1) - (1)].uniqstr); }
     break;
 
   case 100:
 /* Line 1787 of yacc.c  */
-#line 620 "parse-gram.y"
+#line 621 "parse-gram.y"
     {
       code_props plain_code;
       (yyvsp[(1) - (1)].code)[strlen ((yyvsp[(1) - (1)].code)) - 1] = '\n';
@@ -2819,13 +2889,13 @@ yyreduce:
 
   case 101:
 /* Line 1787 of yacc.c  */
-#line 640 "parse-gram.y"
+#line 641 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 102:
 /* Line 1787 of yacc.c  */
-#line 642 "parse-gram.y"
+#line 643 "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);
@@ -2835,13 +2905,13 @@ yyreduce:
 
   case 103:
 /* Line 1787 of yacc.c  */
-#line 650 "parse-gram.y"
+#line 651 "parse-gram.y"
     { (yyval.symbol) = symbol_from_uniqstr ((yyvsp[(1) - (1)].uniqstr), (yylsp[(1) - (1)])); }
     break;
 
   case 106:
 /* Line 1787 of yacc.c  */
-#line 662 "parse-gram.y"
+#line 663 "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);
@@ -2850,7 +2920,7 @@ yyreduce:
 
   case 108:
 /* Line 1787 of yacc.c  */
-#line 671 "parse-gram.y"
+#line 672 "parse-gram.y"
     {
       code_props plain_code;
       code_props_plain_init (&plain_code, (yyvsp[(2) - (2)].chars), (yylsp[(2) - (2)]));
@@ -2863,7 +2933,7 @@ yyreduce:
 
 
 /* Line 1787 of yacc.c  */
-#line 2867 "parse-gram.c"
+#line 2937 "parse-gram.c"
         default: break;
       }
     if (yychar_backup != yychar)
@@ -3038,7 +3108,9 @@ yyerrlab1:
      current lookahead token, the shift below will for sure.  */
   YY_LAC_DISCARD ("error recovery");
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   *++yyvsp = yylval;
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 
   yyerror_range[2] = yylloc;
   /* Using YYLLOC is tempting, but would change the location of
@@ -3111,8 +3183,8 @@ yyreturn:
 }
 
 
-/* Line 2048 of yacc.c  */
-#line 681 "parse-gram.y"
+/* Line 2050 of yacc.c  */
+#line 682 "parse-gram.y"
 
 
 
@@ -3170,11 +3242,11 @@ add_param (char const *type, char *decl, location loc)
   /* Strip the surrounding '{' and '}', and any blanks just inside
      the braces.  */
   --p;
-  while (isspace ((unsigned char) *p))
+  while (c_isspace ((unsigned char) *p))
     --p;
   p[1] = '\0';
   ++decl;
-  while (isspace ((unsigned char) *decl))
+  while (c_isspace ((unsigned char) *decl))
     ++decl;
 
   if (! name_start)
index 0cc4d54..19f2998 100644 (file)
@@ -1,8 +1,8 @@
-/* A Bison parser, made by GNU Bison 2.6.1.12-3153-dirty.  */
+/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
 
 /* Bison interface for Yacc-like parsers in C
    
-      Copyright (C) 1984, 1989-1990, 2000-2012 Free Software Foundation, Inc.
+      Copyright (C) 1984, 1989-1990, 2000-2013 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
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
-#ifndef GRAM__________SRC_PARSE_GRAM_H
-# define GRAM__________SRC_PARSE_GRAM_H
+#ifndef YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED
+# define YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED
 /* Enabling traces.  */
-#ifndef YYDEBUG
-# define YYDEBUG 1
-#endif
-#if YYDEBUG
+#ifndef GRAM_DEBUG
+# if defined YYDEBUG
+#  if YYDEBUG
+#   define GRAM_DEBUG 1
+#  else
+#   define GRAM_DEBUG 0
+#  endif
+# else /* ! defined YYDEBUG */
+#  define GRAM_DEBUG 1
+# endif /* ! defined YYDEBUG */
+#endif  /* ! defined GRAM_DEBUG */
+#if GRAM_DEBUG
 extern int gram_debug;
 #endif
 
 /* Tokens.  */
-#ifndef YYTOKENTYPE
-# define YYTOKENTYPE
+#ifndef GRAM_TOKENTYPE
+# define GRAM_TOKENTYPE
    /* Put the tokens into the symbol table, so that GDB and other debuggers
       know about them.  */
-   enum yytokentype {
+   enum gram_tokentype {
      GRAM_EOF = 0,
      STRING = 258,
      INT = 259,
@@ -164,11 +172,11 @@ extern int gram_debug;
 
 
 
-#if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+#if ! defined GRAM_STYPE && ! defined GRAM_STYPE_IS_DECLARED
+typedef union GRAM_STYPE
 {
-/* Line 2049 of yacc.c  */
-#line 114 "parse-gram.y"
+/* Line 2053 of yacc.c  */
+#line 115 "parse-gram.y"
 
   symbol *symbol;
   symbol_list *list;
@@ -181,25 +189,25 @@ typedef union YYSTYPE
   named_ref *named_ref;
 
 
-/* Line 2049 of yacc.c  */
-#line 186 "parse-gram.h"
-} YYSTYPE;
-# define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
-# define YYSTYPE_IS_DECLARED 1
+/* Line 2053 of yacc.c  */
+#line 194 "parse-gram.h"
+} GRAM_STYPE;
+# define GRAM_STYPE_IS_TRIVIAL 1
+# define gram_stype GRAM_STYPE /* obsolescent; will be withdrawn */
+# define GRAM_STYPE_IS_DECLARED 1
 #endif
 
-#if ! defined YYLTYPE && ! defined YYLTYPE_IS_DECLARED
-typedef struct YYLTYPE
+#if ! defined GRAM_LTYPE && ! defined GRAM_LTYPE_IS_DECLARED
+typedef struct GRAM_LTYPE
 {
   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
+} GRAM_LTYPE;
+# define gram_ltype GRAM_LTYPE /* obsolescent; will be withdrawn */
+# define GRAM_LTYPE_IS_DECLARED 1
+# define GRAM_LTYPE_IS_TRIVIAL 1
 #endif
 
 
@@ -217,4 +225,4 @@ int gram_parse ();
 #endif
 #endif /* ! YYPARSE_PARAM */
 
-#endif /* !GRAM__________SRC_PARSE_GRAM_H  */
+#endif /* !YY_GRAM__SRC_PARSE_GRAM_H_INCLUDED  */
index 02af75e..bbd7fba 100644 (file)
@@ -1,6 +1,6 @@
 %{/* Bison Grammar Parser                             -*- C -*-
 
-   Copyright (C) 2002-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -20,6 +20,7 @@
 #include <config.h>
 #include "system.h"
 
+#include "c-ctype.h"
 #include "complain.h"
 #include "conflicts.h"
 #include "files.h"
@@ -93,14 +94,14 @@ current_lhs(symbol *sym, location loc, named_ref *ref)
 %}
 
 %debug
-%verbose
+%define api.prefix "gram_"
+%define api.pure
+%define parse.lac full
 %defines
-%locations
-%pure-parser
 %error-verbose
-%define parse.lac full
-%name-prefix="gram_"
 %expect 0
+%locations
+%verbose
 
 %initial-action
 {
@@ -251,7 +252,7 @@ prologue_declaration:
                         plain_code.code, @1);
       code_scanner_last_string_free ();
     }
-| "%debug"                         { debug_flag = true; }
+| "%debug"                         { debug = true; }
 | "%define" variable content.opt
     {
       muscle_percent_define_insert ($2, @2, $3,
@@ -735,11 +736,11 @@ add_param (char const *type, char *decl, location loc)
   /* Strip the surrounding '{' and '}', and any blanks just inside
      the braces.  */
   --p;
-  while (isspace ((unsigned char) *p))
+  while (c_isspace ((unsigned char) *p))
     --p;
   p[1] = '\0';
   ++decl;
-  while (isspace ((unsigned char) *decl))
+  while (c_isspace ((unsigned char) *decl))
     ++decl;
 
   if (! name_start)
index e37a741..bdec56f 100644 (file)
@@ -1,6 +1,6 @@
 /* Print an xml on generated parser, for Bison,
 
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index c0ea2e7..251c203 100644 (file)
@@ -1,6 +1,6 @@
 /* Output an xml of the generated parser, for Bison.
 
-   Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index cb227aa..8a51517 100644 (file)
@@ -1,6 +1,6 @@
 /* Print information on generated parser, for bison,
 
-   Copyright (C) 1984, 1986, 1989, 2000-2005, 2007, 2009-2012 Free
+   Copyright (C) 1984, 1986, 1989, 2000-2005, 2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -370,7 +370,7 @@ static void
 print_state (FILE *out, state *s)
 {
   fputs ("\n\n", out);
-  fprintf (out, _("state %d"), s->number);
+  fprintf (out, _("State %d"), s->number);
   fputc ('\n', out);
   print_core (out, s);
   print_actions (out, s);
index f528aaf..e1e254a 100644 (file)
@@ -1,6 +1,6 @@
 /* Print information on generated parser, for bison,
 
-   Copyright (C) 2000, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index f5695a7..4769e4c 100644 (file)
@@ -1,6 +1,6 @@
 /* Output a graph of the generated parser, for Bison.
 
-   Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
 | Construct the node labels.  |
 `----------------------------*/
 
+/* Print the lhs of a rule in such a manner that there is no vertical
+   repetition, like in *.output files. */
+
+static void
+print_lhs (struct obstack *oout, rule *previous_rule, rule *r)
+{
+  if (previous_rule && STREQ (previous_rule->lhs->tag, r->lhs->tag))
+    {
+      int i;
+      for (i = 0; i < strlen (r->lhs->tag); ++i)
+        obstack_1grow (oout, ' ');
+      obstack_1grow (oout, '|');
+    }
+  else
+    {
+      obstack_sgrow (oout, escape (r->lhs->tag));
+      obstack_1grow (oout, ':');
+    }
+}
+
 static void
 print_core (struct obstack *oout, state *s)
 {
-  size_t i;
   item_number *sitems = s->items;
+  rule *previous_rule = NULL;
+  size_t i;
   size_t snritems = s->nitems;
 
   /* Output all the items of a state, not only its kernel.  */
@@ -54,7 +75,8 @@ print_core (struct obstack *oout, state *s)
       snritems = nitemset;
     }
 
-  obstack_printf (oout, "%d", s->number);
+  obstack_printf (oout, _("State %d"), s->number);
+  obstack_sgrow (oout, "\\n\\l");
   for (i = 0; i < snritems; i++)
     {
       item_number *sp;
@@ -64,43 +86,47 @@ print_core (struct obstack *oout, state *s)
       sp1 = sp = ritem + sitems[i];
 
       while (*sp >= 0)
-       sp++;
+        sp++;
 
       r = item_number_as_rule_number (*sp);
 
-      obstack_printf (oout, "\n%s -> ", rules[r].lhs->tag);
+      obstack_printf (oout, "%3d ", r);
+      print_lhs (oout, previous_rule, &rules[r]);
+      previous_rule = &rules[r];
 
       for (sp = rules[r].rhs; sp < sp1; sp++)
-       obstack_printf (oout, "%s ", symbols[*sp]->tag);
+        obstack_printf (oout, " %s", escape (symbols[*sp]->tag));
 
-      obstack_1grow (oout, '.');
+      obstack_sgrow (oout, " .");
 
       for (/* Nothing */; *sp >= 0; ++sp)
-       obstack_printf (oout, " %s", symbols[*sp]->tag);
+        obstack_printf (oout, " %s", escape (symbols[*sp]->tag));
 
       /* Experimental feature: display the lookahead tokens. */
       if (report_flag & report_lookahead_tokens
           && item_number_is_rule_number (*sp1))
-       {
-         /* Find the reduction we are handling.  */
-         reductions *reds = s->reductions;
-         int redno = state_reduction_find (s, &rules[r]);
-
-         /* Print them if there are.  */
-         if (reds->lookahead_tokens && redno != -1)
-           {
-             bitset_iterator biter;
-             int k;
-             char const *sep = "";
-             obstack_sgrow (oout, "[");
-             BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
-               {
-                 obstack_printf (oout, "%s%s", sep, symbols[k]->tag);
-                 sep = ", ";
-               }
-             obstack_sgrow (oout, "]");
-           }
-       }
+        {
+          /* Find the reduction we are handling.  */
+          reductions *reds = s->reductions;
+          int redno = state_reduction_find (s, &rules[r]);
+
+          /* Print them if there are.  */
+          if (reds->lookahead_tokens && redno != -1)
+            {
+              bitset_iterator biter;
+              int k;
+              char const *sep = "";
+              obstack_sgrow (oout, "  [");
+              BITSET_FOR_EACH (biter, reds->lookahead_tokens[redno], k, 0)
+                {
+                  obstack_sgrow (oout, sep);
+                  obstack_sgrow (oout, escape (symbols[k]->tag));
+                  sep = ", ";
+                }
+              obstack_1grow (oout, ']');
+            }
+        }
+      obstack_sgrow (oout, "\\l");
     }
 }
 
@@ -113,9 +139,8 @@ print_core (struct obstack *oout, state *s)
 static void
 print_actions (state const *s, FILE *fgraph)
 {
-  int i;
-
   transitions const *trans = s->transitions;
+  int i;
 
   if (!trans->num && !s->reductions)
     return;
@@ -139,6 +164,8 @@ print_actions (state const *s, FILE *fgraph)
                     TRANSITION_IS_ERROR (trans, i) ? NULL : symbols[sym]->tag,
                     style, fgraph);
       }
+  /* Display reductions. */
+  output_red (s, s->reductions, fgraph);
 }
 
 
index 02aa8b3..073ae98 100644 (file)
@@ -1,6 +1,6 @@
 /* Output a graph of the generated parser, for Bison.
 
-   Copyright (C) 2000, 2006, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000, 2006, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 7dd0aaa..47a2540 100644 (file)
@@ -1,7 +1,7 @@
 /* Input parser for Bison
 
    Copyright (C) 1984, 1986, 1989, 1992, 1998, 2000-2003, 2005-2007,
-   2009-2012 Free Software Foundation, Inc.
+   2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -128,12 +128,16 @@ record_merge_function_type (int merger, uniqstr type, location declaration_loc)
   aver (merge_function != NULL && merger_find == merger);
   if (merge_function->type != NULL && !UNIQSTR_EQ (merge_function->type, type))
     {
-      complain_at (declaration_loc,
-                   _("result type clash on merge function %s: <%s> != <%s>"),
-                   quote (merge_function->name), type, merge_function->type);
-      complain_at (merge_function->type_declaration_location,
-                  _("previous declaration"));
-    }
+      unsigned indent = 0;
+      complain_at_indent (declaration_loc, &indent,
+                          _("result type clash on merge function %s: "
+                            "<%s> != <%s>"),
+                          quote (merge_function->name), type,
+                          merge_function->type);
+      indent += SUB_INDENT;
+      complain_at_indent (merge_function->type_declaration_location, &indent,
+                          _("previous declaration"));
+   }
   merge_function->type = uniqstr_new (type);
   merge_function->type_declaration_location = declaration_loc;
 }
@@ -321,9 +325,9 @@ grammar_rule_check (const symbol_list *r)
             void (*warn_at_ptr)(location, char const*, ...) =
               midrule_warning ? midrule_value_at : warn_at;
             if (n)
-              warn_at_ptr (r->location, _("unused value: $%d"), n);
+              warn_at_ptr (l->location, _("unused value: $%d"), n);
             else
-              warn_at_ptr (r->location, _("unset value: $$"));
+              warn_at_ptr (l->location, _("unset value: $$"));
           }
       }
   }
index 3722a7f..bc4ac55 100644 (file)
@@ -1,6 +1,6 @@
 /* Input parser for Bison
 
-   Copyright (C) 2000-2003, 2005-2007, 2009-2012 Free Software
+   Copyright (C) 2000-2003, 2005-2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -51,9 +51,9 @@ void grammar_current_rule_prec_set (symbol *precsym, location loc);
 void grammar_current_rule_dprec_set (int dprec, location loc);
 void grammar_current_rule_merge_set (uniqstr name, location loc);
 void grammar_current_rule_symbol_append (symbol *sym, location loc,
-                                        named_ref *named_ref);
+                                        named_ref *nref);
 void grammar_current_rule_action_append (const char *action, location loc,
-                                        named_ref *named_ref);
+                                        named_ref *nref);
 void reader (void);
 void free_merger_functions (void);
 
index 5338393..2a29e73 100644 (file)
@@ -1,6 +1,6 @@
 /* Grammar reduction for Bison.
 
-   Copyright (C) 1988-1989, 2000-2003, 2005-2012 Free Software
+   Copyright (C) 1988-1989, 2000-2003, 2005-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index c28824f..bc12ed0 100644 (file)
@@ -1,6 +1,6 @@
 /* Grammar reduction for Bison.
 
-   Copyright (C) 2000-2002, 2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2000-2002, 2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 49424c0..133c849 100644 (file)
@@ -1,6 +1,6 @@
 /* Binary relations.
 
-   Copyright (C) 2002, 2004-2005, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002, 2004-2005, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 88c69b7..7f0d3f4 100644 (file)
@@ -1,6 +1,6 @@
 /* Binary relations.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 4fb772f..0f28dba 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 36
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -639,8 +639,8 @@ int code__flex_debug = 1;
 static yyconst flex_int16_t yy_rule_linenum[29] =
     {   0,
       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
+      187,  192,  200,  207,  215,  216,  217,  244,  246,  247,
+      248,  252,  260,  262,  267,  275,  285,  288
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -651,10 +651,10 @@ static yyconst flex_int16_t yy_rule_linenum[29] =
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *code_text;
-#line 1 "scan-code.l"
+#line 1 "../../../src/scan-code.l"
 /* Bison Action Scanner                             -*- C -*-
 
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -671,7 +671,7 @@ char *code_text;
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define YY_NO_INPUT 1
-#line 24 "scan-code.l"
+#line 24 "../../../src/scan-code.l"
 /* Work around a bug in flex 2.5.31.  See Debian bug 333231
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
 #undef code_wrap
@@ -977,7 +977,7 @@ YY_DECL
        register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 94 "scan-code.l"
+#line 94 "../../../src/scan-code.l"
 
 
 
@@ -1127,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 132 "scan-code.l"
+#line 132 "../../../src/scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
@@ -1139,13 +1139,13 @@ STRING_GROW; BEGIN sc_context;
 case 2:
 /* rule 2 can match eol */
 YY_RULE_SETUP
-#line 142 "scan-code.l"
+#line 142 "../../../src/scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 143 "scan-code.l"
+#line 143 "../../../src/scan-code.l"
 STRING_GROW;
        YY_BREAK
 
@@ -1157,7 +1157,7 @@ STRING_GROW;
 case 4:
 /* rule 4 can match eol */
 YY_RULE_SETUP
-#line 153 "scan-code.l"
+#line 153 "../../../src/scan-code.l"
 STRING_GROW;
        YY_BREAK
 
@@ -1165,7 +1165,7 @@ STRING_GROW;
 
 case 5:
 YY_RULE_SETUP
-#line 158 "scan-code.l"
+#line 158 "../../../src/scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
@@ -1173,7 +1173,7 @@ STRING_GROW; BEGIN sc_context;
 
 case 6:
 YY_RULE_SETUP
-#line 163 "scan-code.l"
+#line 163 "../../../src/scan-code.l"
 STRING_GROW; BEGIN sc_context;
        YY_BREAK
 
@@ -1181,7 +1181,7 @@ STRING_GROW; BEGIN sc_context;
 
 case 7:
 YY_RULE_SETUP
-#line 169 "scan-code.l"
+#line 169 "../../../src/scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_CHARACTER;
@@ -1190,7 +1190,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 174 "scan-code.l"
+#line 174 "../../../src/scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_STRING;
@@ -1200,7 +1200,7 @@ YY_RULE_SETUP
 case 9:
 /* rule 9 can match eol */
 YY_RULE_SETUP
-#line 179 "scan-code.l"
+#line 179 "../../../src/scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_COMMENT;
@@ -1209,7 +1209,7 @@ YY_RULE_SETUP
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 183 "scan-code.l"
+#line 183 "../../../src/scan-code.l"
 {
     STRING_GROW;
     BEGIN SC_LINE_COMMENT;
@@ -1217,7 +1217,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 187 "scan-code.l"
+#line 187 "../../../src/scan-code.l"
 {
     warn_at (*loc, _("stray '%s'"), code_text);
     obstack_escape (&obstack_for_string, code_text);
@@ -1226,7 +1226,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 192 "scan-code.l"
+#line 192 "../../../src/scan-code.l"
 {
     obstack_escape (&obstack_for_string, code_text);
     need_semicolon = true;
@@ -1237,7 +1237,7 @@ YY_RULE_SETUP
 
 case 13:
 YY_RULE_SETUP
-#line 200 "scan-code.l"
+#line 200 "../../../src/scan-code.l"
 {
     ref_tail_fields = NULL;
     handle_action_dollar (self->rule, code_text, *loc);
@@ -1248,7 +1248,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 207 "scan-code.l"
+#line 207 "../../../src/scan-code.l"
 {
     ref_tail_fields = NULL;
     handle_action_at (self->rule, code_text, *loc);
@@ -1259,29 +1259,33 @@ YY_RULE_SETUP
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 215 "scan-code.l"
+#line 215 "../../../src/scan-code.l"
 STRING_GROW;                 need_semicolon = false;
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 216 "scan-code.l"
+#line 216 "../../../src/scan-code.l"
 STRING_GROW; ++braces_level; need_semicolon = false;
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 217 "scan-code.l"
+#line 217 "../../../src/scan-code.l"
 {
     bool outer_brace = --braces_level == 0;
 
     /* As an undocumented Bison extension, append ';' before the last
        brace in braced code, so that the user code can omit trailing
        ';'.  But do not append ';' if emulating Yacc, since Yacc does
-       not append one.  */
+       not append one.  This is deprecated since release 2.4.1.  */
     if (outer_brace && !yacc_flag && language_prio == default_prio
         && skeleton_prio == default_prio && need_semicolon && ! in_cpp)
       {
-        warn_at (*loc, _("a ';' might be needed at the end of action code"));
-        warn_at (*loc, _("future versions of Bison will not add the ';'"));
+        unsigned int indent = 0;
+        warn_at_indent (*loc, &indent,
+                       _("a ';' might be needed at the end of action code"));
+        indent += SUB_INDENT;
+        warn_at_indent (*loc, &indent,
+                       _("future versions of Bison will not add the ';'"));
         obstack_1grow (&obstack_for_string, ';');
       }
 
@@ -1295,31 +1299,31 @@ YY_RULE_SETUP
      '#define' directives anyway, so don't bother with begin of line.  */
 case 18:
 YY_RULE_SETUP
-#line 240 "scan-code.l"
+#line 244 "../../../src/scan-code.l"
 STRING_GROW; in_cpp = true;
        YY_BREAK
 case 19:
 /* rule 19 can match eol */
 YY_RULE_SETUP
-#line 242 "scan-code.l"
+#line 246 "../../../src/scan-code.l"
 STRING_GROW;
        YY_BREAK
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 243 "scan-code.l"
+#line 247 "../../../src/scan-code.l"
 STRING_GROW; if (in_cpp) in_cpp = need_semicolon = false;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 244 "scan-code.l"
+#line 248 "../../../src/scan-code.l"
 STRING_GROW;
        YY_BREAK
 /* YYFAIL is undocumented and was formally deprecated in Bison
      2.4.2.  */
 case 22:
 YY_RULE_SETUP
-#line 248 "scan-code.l"
+#line 252 "../../../src/scan-code.l"
 {
     STRING_GROW; need_semicolon = true;
     warn_at (*loc, _("use of YYFAIL, which is deprecated and will be"
@@ -1330,12 +1334,12 @@ YY_RULE_SETUP
      contain YYFAIL don't produce the above warning.  */
 case 23:
 YY_RULE_SETUP
-#line 256 "scan-code.l"
+#line 260 "../../../src/scan-code.l"
 STRING_GROW; need_semicolon = true;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 258 "scan-code.l"
+#line 262 "../../../src/scan-code.l"
 STRING_GROW; need_semicolon = true;
        YY_BREAK
 
@@ -1343,7 +1347,7 @@ STRING_GROW; need_semicolon = true;
 
 case 25:
 YY_RULE_SETUP
-#line 263 "scan-code.l"
+#line 267 "../../../src/scan-code.l"
 {
     const char *type_name = NULL;
     fetch_type_name (code_text + 1, &type_name, *loc)[-1] = 0;
@@ -1355,7 +1359,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 271 "scan-code.l"
+#line 275 "../../../src/scan-code.l"
 {
     obstack_sgrow (&obstack_for_string, "]b4_at_dollar[");
     locations_flag = true;
@@ -1367,14 +1371,14 @@ YY_RULE_SETUP
 /* Escape M4 quoting characters in C code.  */
 case 27:
 YY_RULE_SETUP
-#line 281 "scan-code.l"
+#line 285 "../../../src/scan-code.l"
 obstack_escape (&obstack_for_string, code_text);
        YY_BREAK
 /* By default, grow the string obstack with the input.  */
 case 28:
 /* rule 28 can match eol */
 YY_RULE_SETUP
-#line 284 "scan-code.l"
+#line 288 "../../../src/scan-code.l"
 STRING_GROW;
        YY_BREAK
 /* End of processing. */
@@ -1385,16 +1389,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 287 "scan-code.l"
+#line 291 "../../../src/scan-code.l"
 STRING_FINISH; return last_string;
        YY_BREAK
 
 case 29:
 YY_RULE_SETUP
-#line 290 "scan-code.l"
+#line 294 "../../../src/scan-code.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 1398 "scan-code.c"
+#line 1402 "scan-code.c"
 
        case YY_END_OF_BUFFER:
                {
@@ -2474,7 +2478,7 @@ void code_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 290 "scan-code.l"
+#line 294 "../../../src/scan-code.l"
 
 
 
@@ -2678,9 +2682,6 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
    points to LHS ($$) of the current rule or midrule. */
 #define LHS_REF (INT_MIN + 1)
 
-/* Sub-messages indent. */
-#define SUB_INDENT (4)
-
 /* Parse named or positional reference. In case of positional
    references, can return negative values for $-n "deep" stack
    accesses. */
index c8d554d..2a231b8 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison code properties structure and scanner.
 
-   Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index fa593be..f1329e0 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison Action Scanner                             -*- C -*-
 
-   Copyright (C) 2006-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -220,12 +220,16 @@ ref      -?[0-9]+|{id}|"["{id}"]"|"$"
     /* As an undocumented Bison extension, append ';' before the last
        brace in braced code, so that the user code can omit trailing
        ';'.  But do not append ';' if emulating Yacc, since Yacc does
-       not append one.  */
+       not append one.  This is deprecated since release 2.4.1.  */
     if (outer_brace && !yacc_flag && language_prio == default_prio
         && skeleton_prio == default_prio && need_semicolon && ! in_cpp)
       {
-        warn_at (*loc, _("a ';' might be needed at the end of action code"));
-        warn_at (*loc, _("future versions of Bison will not add the ';'"));
+        unsigned int indent = 0;
+        warn_at_indent (*loc, &indent,
+                       _("a ';' might be needed at the end of action code"));
+        indent += SUB_INDENT;
+        warn_at_indent (*loc, &indent,
+                       _("future versions of Bison will not add the ';'"));
         obstack_1grow (&obstack_for_string, ';');
       }
 
@@ -489,9 +493,6 @@ show_sub_messages (const char* cp, bool explicit_bracketing,
    points to LHS ($$) of the current rule or midrule. */
 #define LHS_REF (INT_MIN + 1)
 
-/* Sub-messages indent. */
-#define SUB_INDENT (4)
-
 /* Parse named or positional reference. In case of positional
    references, can return negative values for $-n "deep" stack
    accesses. */
index 7dd0b8b..19deb62 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 36
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -474,60 +474,61 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[474] =
+static yyconst flex_int16_t yy_accept[482] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
         0,    0,    0,    0,    0,    0,    0,    0,   77,   77,
        93,   93,   93,   93,    0,    0,    0,    0,  110,   65,
-        2,    2,   59,   65,   58,    1,   54,   65,   55,   55,
-       51,   65,   49,   64,   61,   50,   65,   74,   74,  107,
-       78,   78,  107,   80,   79,   79,   68,    2,    1,   68,
-       67,   66,   68,  108,   99,  107,   98,  107,  107,  107,
-      102,  104,  107,   76,  107,   97,   96,  107,   95,   94,
-       71,    2,    1,   69,   71,   70,   71,   72,    2,    1,
-       72,   72,   63,   48,   48,   48,   48,   48,   48,   48,
+        2,    2,   59,   65,   58,   65,    1,   54,   65,   55,
+       55,   51,   65,   49,   54,   64,   61,   50,   65,   74,
+       74,  107,   78,   78,  107,   80,   79,   79,   68,    2,
+        1,   68,   67,   66,   68,  108,   99,  107,   98,  107,
+      107,  107,  102,  104,  107,   76,  107,   97,   96,  107,
+       95,   94,   71,    2,    1,   69,   71,   71,   70,   71,
+       72,    2,    1,   72,   72,   65,    0,   63,   48,   48,
 
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   60,   54,    4,    3,   57,   55,   57,    0,
-        0,   53,    0,   73,   92,   90,   81,   92,   83,   84,
-       85,   86,   87,   88,   92,   89,   92,  106,  100,  101,
-        0,  103,    0,  102,  105,    0,   75,    0,    0,   77,
-       93,   93,   93,   93,   69,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   60,   54,   54,
+        4,    3,   57,   55,   57,    0,    0,   53,    0,   73,
+       92,   90,   81,   92,   83,   84,   85,   86,   87,   88,
+       92,   89,   92,  106,  100,  101,    0,  103,    0,  102,
+      105,    0,   75,    0,    0,   77,   93,   93,   93,   93,
+       71,   69,   48,   48,   48,   48,   48,   48,   48,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   48,    3,   57,   56,   62,
-       52,    0,   81,    0,    0,   82,    0,    0,    0,    0,
+       48,   48,   48,   48,    3,   57,   56,   62,   52,    0,
 
-        0,    0,    0,    0,    0,    0,    0,    0,    0,   48,
+       81,    0,    0,   82,    0,    0,    0,    0,    0,    0,
+        0,    0,    0,    0,    0,    0,    0,   48,   48,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,    0,   81,    0,    0,   48,
-        7,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   22,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   34,   48,   48,   48,   48,
-       48,   48,   41,   48,   44,   48,   48,   47,    0,    0,
-        0,   48,    8,   48,   48,   48,   13,   48,   48,   48,
-
-       48,   48,   48,   48,   48,   48,   25,   48,   48,   48,
-       48,   48,   31,   48,   48,   48,   48,   48,   38,   48,
-       40,   42,   45,   48,    0,    0,   91,    6,   48,   10,
-       48,   48,   15,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   48,   48,   48,   32,   48,   48,   48,   48,
-       48,   48,   48,    0,   48,   11,   48,   48,   48,   48,
+       48,   48,   48,    0,   81,    0,    0,   48,    7,   48,
        48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
-       48,   48,   35,   48,   37,   48,   48,   46,    0,   48,
-       48,   48,   48,   48,   48,   48,   48,   21,   48,   48,
-       48,   48,   28,   29,   48,   48,   48,   39,   48,    0,
-
-       48,   48,   48,   16,   48,   48,   48,   48,   23,   24,
-       48,   48,   48,   48,   48,   48,    0,    0,   48,   12,
-       48,   48,   48,   20,   48,   48,   48,   48,   48,   48,
-       48,    5,   48,   48,   17,   48,   48,   26,   48,   48,
-       33,   36,   43,    9,   48,   48,   48,   48,   48,   14,
-       48,   48,   48,   48,   48,   19,   48,   48,   48,   27,
-       48,   48,   48,   48,   48,   18,   48,   48,   48,   48,
-       48,   30,    0
+       48,   22,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   34,   48,   48,   48,   48,   48,   48,
+       41,   48,   44,   48,   48,   47,    0,    0,    0,   48,
+
+        8,   48,   48,   48,   13,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   25,   48,   48,   48,   48,   48,
+       31,   48,   48,   48,   48,   48,   38,   48,   40,   42,
+       45,   48,    0,    0,   91,    6,   48,   10,   48,   48,
+       15,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   32,   48,   48,   48,   48,   48,   48,
+       48,    0,   48,   11,   48,   48,   48,   48,   48,   48,
+       48,   48,   48,   48,   48,   48,   48,   48,   48,   48,
+       35,   48,   37,   48,   48,   46,    5,    0,   48,   48,
+       48,   48,   48,   48,   48,   48,   21,   48,   48,   48,
+
+       48,   28,   29,   48,   48,   48,   39,   48,    0,   48,
+       48,   48,   16,   48,   48,   48,   48,   23,   24,   48,
+       48,   48,   48,   48,   48,    0,    0,   48,   12,   48,
+       48,   48,   20,   48,   48,   48,   48,   48,   48,   48,
+       48,   48,   17,   48,   48,   26,   48,   48,   33,   36,
+       43,    9,   48,   48,   48,   48,   48,   14,   48,   48,
+       48,   48,   48,   19,   48,   48,   48,   27,   48,   48,
+       48,   48,   48,   18,   48,   48,   48,   48,   48,   30,
+        0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -535,17 +536,17 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1,    1,    1,    1,    2,    3,
         2,    2,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    4,    1,    5,    6,    1,    7,    1,    8,    1,
-        1,    9,    1,   10,   11,   12,   13,   14,   15,   15,
-       15,   15,   15,   15,   15,   16,   16,   17,   18,   19,
-       20,   21,   22,    1,   23,   23,   23,   23,   23,   23,
-       12,   12,   12,   12,   12,   12,   12,   12,   12,   12,
-       12,   12,   12,   12,   24,   12,   12,   25,   12,   12,
-       26,   27,   28,    1,   29,    1,   30,   31,   32,   33,
-
-       34,   35,   36,   37,   38,   12,   39,   40,   41,   42,
-       43,   44,   45,   46,   47,   48,   49,   50,   12,   51,
-       52,   12,   53,   54,   55,    1,    1,    1,    1,    1,
+        1,    4,    5,    6,    7,    5,    8,    5,    9,    5,
+        5,   10,    5,   11,   12,   13,   14,   15,   16,   16,
+       16,   16,   16,   16,   16,   17,   17,   18,   19,   20,
+       21,   22,   23,    5,   24,   24,   24,   24,   24,   24,
+       25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+       25,   25,   25,   25,   26,   25,   25,   27,   25,   25,
+       28,   29,   30,    5,   31,    5,   32,   33,   34,   35,
+
+       36,   37,   38,   39,   40,   25,   41,   42,   43,   44,
+       45,   46,   47,   48,   49,   50,   51,   52,   25,   53,
+       54,   25,   55,   56,   57,    5,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
@@ -562,320 +563,354 @@ static yyconst flex_int32_t yy_ec[256] =
         1,    1,    1,    1,    1
     } ;
 
-static yyconst flex_int32_t yy_meta[57] =
+static yyconst flex_int32_t yy_meta[59] =
     {   0,
-        1,    1,    2,    1,    1,    1,    1,    1,    1,    1,
-        3,    4,    1,    5,    5,    5,    1,    1,    1,    1,
-        1,    1,    5,    4,    4,    6,    1,    6,    4,    5,
-        5,    5,    5,    5,    5,    4,    4,    4,    4,    4,
-        4,    4,    4,    4,    4,    4,    4,    4,    4,    4,
-        4,    4,    1,    1,    1,    7
+        1,    2,    3,    2,    4,    5,    4,    5,    5,    5,
+        5,    6,    7,    8,    9,    9,    9,    4,    5,    5,
+        5,    5,    4,    9,   10,   10,   10,   11,    4,   12,
+       10,    9,    9,    9,    9,    9,    9,   10,   10,   10,
+       10,   10,   10,   10,   10,   10,   10,   10,   10,   10,
+       10,   10,   10,   10,    5,    5,    5,   13
     } ;
 
-static yyconst flex_int16_t yy_base[497] =
+static yyconst flex_int16_t yy_base[508] =
     {   0,
-        0,  756,  752,  751,   54,   55,   58,   59,   61,   66,
-       86,   93,  100,  113,  120,  126,   81,  121,   70,   77,
-      132,  133,  114,  137,  168,  753,  144,  223,  758,  763,
-      763,  763,  763,  230,  763,  763,    0,  143,  233,  128,
-      763,  140,  763,  763,  763,  763,  717,  763,  743,  763,
-      763,  763,  280,  763,  763,  763,  763,  763,  763,  149,
-      763,  763,  715,  763,  763,  699,  763,  219,  213,  224,
-      763,  763,   75,  763,  287,  763,  763,  294,  763,  763,
-      763,  763,  763,    0,  154,  763,  713,  763,  763,  763,
-      226,  712,  763,    0,  713,  707,  259,  199,  711,  708,
-
-      705,  271,  712,  269,  696,  270,  218,  270,  289,  702,
-      709,  712,  763,    0,  763,    0,    0,  319,  328,  720,
-      719,  763,  701,  763,  763,  763,  136,    0,  763,  763,
-      763,  763,  763,  763,    0,  763,    0,  763,  763,  763,
-      334,  763,  343,  763,  763,  346,  763,  350,  353,  711,
-      763,  362,  710,  365,    0,    0,  694,  702,  339,  688,
-      687,  688,  190,  685,  692,  687,  257,  696,  681,  685,
-      360,  691,  676,  677,  286,  676,  676,  684,  685,  688,
-      671,  677,  671,  676,  667,  680,    0,    0,    0,  763,
-      763,  669,  272,    0,    0,    0,  373,  369,  377,  217,
-
-      381,  380,  388,   82,  391,  401,  406,  409,  370,  680,
-      675,  659,  368,  659,  672,  662,  670,  669,  668,  690,
-      652,  663,  650,  686,  666,  659,  660,  273,  384,  647,
-      648,  644,  658,  647,  654,  638,  649,  645,  638,  642,
-      648,  647,  637,  648,  646,  643,  763,    0,    0,  630,
-        0,  639,  625,  631,  626,  639,  624,  637,  657,  634,
-      622,  627,  615,    0,  619,  614,  627,  389,  626,  621,
-      611,  623,  615,  606,  620,    0,  605,  390,  614,  603,
-      616,  601,    0,  606,    0,  605,  603,    0,  641,    0,
-        0,  592,    0,  603,  608,  592,    0,  404,  592,  595,
-
-      405,  608,  607,  606,  605,  596,    0,  589,  597,  589,
-      583,  581,    0,  580,  616,  592,  581,  578,    0,  575,
-        0,  409,    0,  575,  407,    0,  763,    0,  573,  573,
-      587,  568,  413,  571,  573,  569,  574,  577,  566,  568,
-      564,  579,  574,  564,  572,    0,  561,  558,  573,  568,
-      558,  552,  565,  421,  415,    0,  550,  563,  550,  561,
-      545,  546,  581,  557,  560,  547,  554,  538,  539,  553,
-      538,  553,    0,  536,    0,  539,  550,    0,  574,  534,
-      534,  530,  529,  539,  525,  538,  541,    0,  529,  522,
-      533,  527,    0,    0,  525,  519,  517,    0,  532,  557,
-
-      515,  514,  528,    0,  520,  513,  510,  523,    0,    0,
-      516,  505,  514,  521,  516,  509,  543,   72,  513,    0,
-      503,  494,  495,    0,  495,  491,  416,  499,  499,  493,
-      504,  763,  505,  489,    0,  487,  496,    0,  489,  494,
-        0,    0,    0,    0,  497,  417,  487,  483,  481,    0,
-      492,  484,  491,  476,  485,    0,  485,  469,  458,    0,
-      449,  409,  430,  393,  395,    0,  402,  385,  383,  395,
-      342,    0,  763,  446,  453,  460,  467,  472,  474,  479,
-      485,  492,  497,  500,  505,  510,  367,  335,  334,  322,
-      320,  252,  160,  122,  107,  515
-
+        0,  899,  895,  894,   56,   57,   58,   61,   70,   89,
+       96,  115,  119,  128,   62,  129,   72,   91,   66,   77,
+      138,  143,   80,  142,  185,  896,  150,  155,  902,    0,
+      907,  907,  907,  243,  907,  907,  907,  301,   98,  288,
+       62,  907,  146,  907,  315,  907,  907,  907,  859,  907,
+      886,  907,  907,  907,  368,  907,  907,  907,  907,  907,
+      907,  116,  907,  907,  857,  907,  907,  841,  907,  297,
+       91,  155,  907,  907,  126,  907,  175,  907,  907,  325,
+      907,  907,    0,  907,    0,    0,  307,  907,  907,  855,
+      907,  907,  907,  322,  854,    0,    0,  907,    0,  855,
+
+      849,  114,  117,  853,  850,  847,  303,  854,  302,  838,
+      305,  306,  132,  304,  844,  851,  854,  907,  421,    0,
+      907,    0,    0,  345,  465,  863,  862,  907,  843,  907,
+      907,  907,  165,    0,  907,  907,  907,  907,  907,  907,
+        0,  907,    0,  907,  907,  907,  361,  907,  364,  907,
+      907,  367,  907,  376,  383,  853,  907,  386,  852,  400,
+        0,    0,    0,    0,  836,  844,  359,  830,  829,  830,
+      270,  827,  834,  829,  272,  838,  823,  827,  383,  833,
+      818,  819,  315,  818,  818,  826,  827,  830,  813,  819,
+      813,  818,  809,  822,    0,    0,    0,  907,  907,  811,
+
+      360,    0,    0,    0,  407,  403,  421,  321,  427,  427,
+      434,  343,  438,  450,  455,  458,  378,  822,  817,  801,
+      278,  801,  814,  804,  812,  811,  810,  833,  794,  805,
+      792,  829,  808,  801,  802,  364,  411,  789,  790,  786,
+      800,  789,  796,  780,  791,  787,  780,  784,  790,  789,
+      779,  790,  788,  785,  907,    0,    0,  772,    0,  781,
+      767,  773,  768,  781,  766,  779,  800,  776,  764,  769,
+      757,    0,  761,  756,  769,  433,  768,  763,  753,  765,
+      757,  748,  762,    0,  747,  436,  756,  745,  758,  743,
+        0,  748,    0,  747,  745,    0,  785,    0,    0,  734,
+
+        0,  745,  750,  734,    0,  437,  734,  737,  443,  750,
+      749,  748,  747,  738,    0,  731,  739,  731,  725,  723,
+        0,  722,  759,  734,  723,  720,    0,  717,    0,  453,
+        0,  717,  454,    0,  907,    0,  715,  715,  729,  710,
+      454,  713,  715,  711,  716,  719,  708,  710,  706,  721,
+      716,  706,  714,    0,  703,  700,  715,  710,  700,  694,
+      707,  488,  463,    0,  692,  705,  692,  703,  687,  688,
+      724,  699,  702,  689,  696,  680,  681,  695,  680,  695,
+        0,  678,    0,  681,  692,    0,  907,  717,  676,  676,
+      672,  671,  681,  667,  680,  683,    0,  671,  664,  675,
+
+      669,    0,    0,  667,  661,  659,    0,  674,  700,  657,
+      656,  670,    0,  662,  655,  652,  665,    0,    0,  658,
+      647,  656,  663,  658,  651,  686,  470,  655,    0,  645,
+      626,  623,    0,  611,  603,  465,  598,  595,  588,  599,
+      600,  584,    0,  579,  588,    0,  579,  584,    0,    0,
+        0,    0,  555,  475,  541,  534,  530,    0,  539,  530,
+      537,  519,  528,    0,  533,  526,  521,    0,  527,  524,
+      483,  444,  444,    0,  456,  438,  434,  442,  424,    0,
+      907,  506,  519,  532,  545,  558,  571,  578,  588,  600,
+      613,  626,  634,  641,  648,  658,  666,  454,  406,  389,
+
+      384,  373,  138,  102,   88,   57,  676
     } ;
 
-static yyconst flex_int16_t yy_def[497] =
+static yyconst flex_int16_t yy_def[508] =
     {   0,
-      473,    1,  474,  474,  475,  475,  475,  475,  476,  476,
-      475,  475,  475,  475,  475,  475,  475,  475,  475,  475,
-      475,  475,  475,  475,  473,   25,  477,  477,  473,  473,
-      473,  473,  473,  473,  473,  473,  478,  473,  479,  479,
-      473,  480,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  481,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  482,  473,  473,
-      473,  473,  473,  483,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  484,  484,  484,  484,  484,  484,  484,
-
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  473,  478,  473,  485,  486,  479,  486,  480,
-      480,  473,  473,  473,  473,  473,  473,  487,  473,  473,
-      473,  473,  473,  473,  488,  473,  489,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  483,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  485,  486,  119,  473,
-      473,  473,  473,  490,  491,  489,  473,  473,  473,  473,
-
-      473,  473,  473,  473,  473,  473,  473,  473,  482,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  473,  473,  492,  493,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  473,  494,
-      495,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  473,  488,  473,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  473,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  473,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  496,
-
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  496,  496,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  473,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,  484,  484,  484,  484,  484,  484,  484,  484,
-      484,  484,    0,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473
-
+      481,    1,  482,  482,  483,  483,  483,  483,  484,  484,
+      483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
+      483,  483,  483,  483,  481,   25,  485,  485,  481,  486,
+      481,  481,  481,  481,  481,  481,  481,  487,  481,  488,
+      488,  481,  489,  481,  487,  481,  481,  481,  486,  481,
+      481,  481,  481,  481,  490,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  491,
+      481,  481,  492,  481,  492,  493,  481,  481,  481,  492,
+      481,  481,  481,  481,  481,  486,  494,  481,  495,  495,
+
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  481,  487,   45,
+      481,  496,  497,  488,  497,  489,  489,  481,  481,  481,
+      481,  481,  481,  498,  481,  481,  481,  481,  481,  481,
+      499,  481,  500,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      492,  493,  494,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  496,  497,  125,  481,  481,  481,
+
+      481,  501,  502,  500,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  491,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  481,  481,  503,  504,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  481,  505,  506,  495,
+
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  481,  499,  481,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  481,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  481,  481,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+
+      495,  495,  495,  495,  495,  495,  495,  495,  507,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  507,  507,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+      495,  495,  495,  495,  495,  495,  495,  495,  495,  495,
+        0,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+
+      481,  481,  481,  481,  481,  481,  481
     } ;
 
-static yyconst flex_int16_t yy_nxt[820] =
+static yyconst flex_int16_t yy_nxt[966] =
     {   0,
-       30,   31,   32,   31,   33,   30,   34,   35,   30,   36,
-       30,   37,   38,   39,   40,   40,   30,   41,   42,   43,
-       30,   30,   37,   37,   37,   44,   30,   30,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   37,   37,   37,   37,   37,   37,   37,   37,
-       37,   37,   45,   46,   30,   30,   51,   51,   52,   52,
-       55,   55,   58,   32,   58,   56,   56,   58,   32,   58,
-       59,   63,   74,   60,  432,   59,  418,   61,   60,   74,
-       53,   53,   61,   64,   53,   53,   62,  147,   64,   73,
-       65,   62,   66,   67,  147,   64,   75,   65,   68,   66,
-
-       67,  148,   64,   75,   65,   68,   69,   67,  148,   54,
-       54,  327,   68,   54,   54,   64,   79,   65,   70,   69,
-       67,   80,   64,   64,   65,   68,  326,   67,   64,   73,
-       65,   70,   68,   67,   76,   76,   77,   77,   68,   79,
-       78,  118,  118,  118,   80,   89,   32,   89,  121,  193,
-      193,  115,   71,   90,   72,  116,   91,  115,   78,   78,
-      122,  116,  115,   78,  291,   71,  116,   72,   81,   82,
-       32,   82,   81,   81,   81,   81,   81,   83,   81,   84,
-       85,   81,   81,   81,   81,   81,   81,   81,   81,   81,
-       84,   84,   84,   81,   81,   86,   84,   84,   84,   84,
-
-       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
-       84,   84,   84,   84,   84,   84,   84,   84,   84,   84,
-       81,   81,   81,   81,   89,   32,   89,  139,   92,  218,
-      144,  140,   90,  142,  115,   91,   93,  142,  116,  143,
-      219,   94,  145,  143,  161,  141,  118,  118,  118,  162,
-      146,  177,   94,   94,   94,  178,  290,  119,   94,   94,
-       95,   96,   97,   98,   99,  100,   94,  101,   94,  102,
-      103,  104,  105,  106,   94,  107,  108,  109,  110,  111,
-       94,  112,  113,  119,  126,  247,  247,  126,  149,  150,
-      149,  223,  159,  127,  127,  152,  153,  152,  170,  174,
-
-      166,  126,  160,  128,  167,  269,  126,  224,  179,  129,
-      130,  171,  270,  168,  131,  175,  172,  180,  176,  233,
-      154,  132,  181,  234,  249,  133,  248,  134,  135,  136,
-      137,  182,  118,  118,  118,  197,  198,  197,  196,  195,
-      183,  189,  189,  189,  199,  200,  199,  201,  202,  201,
-      189,  203,  204,  203,  149,  150,  149,  189,  189,  189,
-      189,  189,  189,  206,  153,  206,  208,  209,  208,  212,
-      228,  194,  473,  213,  197,  198,  197,  139,  199,  200,
-      199,  140,  201,  202,  201,  214,  144,  472,  228,  203,
-      204,  203,  149,  150,  149,  141,  154,  253,  145,  308,
-
-      317,  229,  206,  153,  206,  254,  146,  206,  153,  206,
-      208,  209,  208,  271,  332,  335,  272,  308,  317,  352,
-      354,  354,  354,  359,  379,  380,  439,  451,  471,  470,
-      469,  468,  332,  335,  354,  354,  354,  352,  467,  466,
-      465,  359,  464,  380,  439,  451,   48,   48,   48,   48,
-       48,   48,   48,   50,   50,   50,   50,   50,   50,   50,
-       57,   57,   57,   57,   57,   57,   57,   88,   88,   88,
-       88,   88,   88,   88,  114,  114,  114,  117,  117,  120,
-      463,  120,  120,  120,  120,  125,  125,  125,  125,  125,
-      125,  125,  151,  151,  151,  151,  151,  462,  151,  155,
-
-      155,  155,  156,  156,  156,  187,  461,  187,  187,  187,
-      187,  187,  188,  188,  188,  417,  460,  417,  417,  417,
-      417,  417,  459,  458,  457,  456,  455,  454,  453,  452,
-      450,  449,  448,  447,  446,  445,  444,  443,  442,  441,
-      440,  438,  437,  436,  435,  434,  433,  418,  431,  430,
-      429,  428,  427,  426,  425,  424,  423,  422,  421,  420,
-      419,  418,  416,  415,  414,  413,  412,  411,  410,  409,
-      408,  407,  406,  405,  404,  403,  402,  401,  400,  399,
-      398,  397,  396,  395,  394,  393,  392,  391,  390,  389,
-      388,  387,  386,  385,  384,  383,  382,  381,  378,  377,
-
-      376,  375,  374,  373,  372,  371,  370,  369,  368,  367,
-      366,  365,  364,  363,  362,  361,  360,  358,  357,  356,
-      355,  353,  351,  350,  349,  348,  347,  346,  345,  344,
-      343,  342,  341,  340,  339,  338,  337,  336,  334,  333,
-      331,  330,  329,  328,  325,  324,  323,  322,  321,  320,
-      319,  318,  316,  315,  314,  313,  312,  311,  310,  309,
-      307,  306,  305,  304,  303,  302,  301,  300,  299,  298,
-      297,  296,  295,  294,  293,  292,  289,  288,  287,  286,
-      285,  284,  283,  282,  281,  280,  279,  278,  277,  276,
-      275,  274,  273,  268,  267,  266,  265,  264,  263,  262,
-
-      261,  260,  259,  258,  257,  256,  255,  252,  251,  250,
-      246,  245,  244,  243,  242,  241,  240,  239,  238,  237,
-      236,  235,  232,  231,  230,  227,  226,  225,  222,  221,
-      220,  217,  216,  215,  211,  210,  207,  205,  192,  191,
-      190,  186,  185,  184,  173,  169,  165,  164,  163,  158,
-      157,  123,  123,  138,  123,  124,  123,  473,   87,   49,
-       49,   47,   29,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473
+       30,   31,   32,   31,   30,   33,   30,   34,   35,   36,
+       37,   30,   38,   39,   40,   41,   41,   30,   42,   43,
+       44,   36,   30,   45,   45,   45,   45,   46,   30,   30,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   45,   45,   45,   45,   45,   45,
+       45,   45,   45,   45,   47,   48,   36,   30,   53,   53,
+       57,   54,   54,   57,   66,  335,   58,   67,   76,   58,
+       69,   60,   32,   60,   66,   70,  124,  124,  124,   76,
+       61,   75,   81,   62,   55,   55,   55,   63,   82,   55,
+       60,   32,   60,   66,   77,   65,  334,   64,   66,   61,
+
+       75,   67,   62,   68,   69,   77,   63,  121,   80,   70,
+      299,  122,  148,   56,   56,   56,   64,   66,   56,  149,
+       67,   66,   68,   69,   67,  121,   71,   69,   70,  122,
+       66,   66,   70,   67,   67,   71,   69,   69,   72,  153,
+       78,   70,   70,   79,   81,   78,  298,   72,   79,  167,
+       82,   92,   32,   92,  154,  127,   92,   32,   92,  168,
+       93,   95,  150,   94,  169,   93,   80,  128,   94,  170,
+       80,   80,  187,   73,  151,   74,  155,  156,  155,  201,
+      201,  188,   73,  152,   74,   83,   84,   32,   84,   83,
+       83,   83,   83,   83,   83,   85,   83,   86,   87,   88,
+
+       88,   88,   83,   83,   83,   83,   83,   83,   86,   86,
+       86,   86,   83,   83,   89,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   86,
+       86,   86,   86,   86,   86,   86,   86,   86,   86,   83,
+       83,   83,   83,   97,   97,   97,   97,   97,   97,   97,
+       98,   97,   97,   97,   97,   99,   97,   97,   97,   97,
+       97,   97,   97,   97,   97,   97,   99,   99,   99,   99,
+       97,   97,   97,   99,   99,  100,  101,  102,  103,  104,
+      105,   99,  106,   99,  107,  108,  109,  110,  111,   99,
+      112,  113,  114,  115,  116,   99,  117,  118,   97,   97,
+
+       97,   96,  124,  124,  124,   96,  145,   96,  231,  261,
+      146,  226,  119,  119,  125,  481,  121,  262,   96,  481,
+      122,  481,  227,   96,  232,  147,  158,  159,  158,   96,
+       96,  121,  481,  178,  174,  122,  182,  481,  175,  189,
+      125,  185,  148,  481,  481,  186,  179,  176,  190,  149,
+      241,  180,  183,  160,  242,  184,  153,  191,   96,  124,
+      124,  124,  205,  206,  205,  207,  208,  207,  209,  210,
+      209,  154,  481,  132,  255,  255,  132,  211,  212,  211,
+      481,  257,  133,  133,  155,  156,  155,  214,  159,  214,
+      132,  220,  256,  134,  236,  221,  132,  204,  277,  135,
+
+      136,  216,  217,  216,  137,  278,  160,  222,  205,  206,
+      205,  138,  145,  236,  203,  139,  146,  140,  141,  142,
+      143,   96,  207,  208,  207,   96,  237,   96,  209,  210,
+      209,  147,  119,  119,  150,  211,  212,  211,   96,  155,
+      156,  155,  279,   96,  316,  280,  151,  325,  340,   96,
+       96,  214,  159,  214,  343,  152,  214,  159,  214,  216,
+      217,  216,  202,  316,  360,  367,  325,  340,  362,  362,
+      362,  480,  387,  343,  389,  427,  447,  479,   96,  197,
+      197,  197,  478,  360,  367,  477,  459,  476,  197,  475,
+      387,  388,  474,  389,  473,  447,  197,  197,  197,  197,
+
+      197,  197,  362,  362,  362,  459,   50,   50,   50,   50,
+       50,   50,   50,   50,   50,   50,   50,   50,   50,   52,
+       52,   52,   52,   52,   52,   52,   52,   52,   52,   52,
+       52,   52,   59,   59,   59,   59,   59,   59,   59,   59,
+       59,   59,   59,   59,   59,   91,   91,   91,   91,   91,
+       91,   91,   91,   91,   91,   91,   91,   91,   96,  472,
+      471,   96,  470,   96,   96,  469,  468,  467,  466,   96,
+       96,  120,  465,  464,  120,  463,  120,  120,  462,  120,
+      120,  461,  120,  120,  123,  460,  123,  123,  126,  126,
+      458,  126,  126,  126,  126,  126,  126,  126,  126,  126,
+
+      131,  131,  131,  131,  131,  131,  131,  131,  131,  131,
+      131,  131,  131,  157,  157,  157,  157,  157,  157,  157,
+      157,  157,  157,  457,  456,  157,  161,  455,  454,  161,
+      161,  161,  453,  452,  451,  450,  161,  449,  161,  162,
+      162,  448,  162,  162,  163,  163,  163,  163,  163,  163,
+      163,  163,  163,  164,  164,  446,  164,  164,  195,  195,
+      445,  195,  195,  195,  195,  195,  195,  195,  195,  195,
+      195,  196,  196,  444,  196,  196,  426,  426,  443,  426,
+      426,  426,  426,  426,  426,  426,  426,  426,  426,  442,
+      441,  427,  440,  439,  438,  437,  436,  435,  434,  433,
+
+      432,  431,  430,  429,  428,  427,  425,  424,  423,  422,
+      421,  420,  419,  418,  417,  416,  415,  414,  413,  412,
+      411,  410,  409,  408,  407,  406,  405,  404,  403,  402,
+      401,  400,  399,  398,  397,  396,  395,  394,  393,  392,
+      391,  390,  386,  385,  384,  383,  382,  381,  380,  379,
+      378,  377,  376,  375,  374,  373,  372,  371,  370,  369,
+      368,  366,  365,  364,  363,  361,  359,  358,  357,  356,
+      355,  354,  353,  352,  351,  350,  349,  348,  347,  346,
+      345,  344,  342,  341,  339,  338,  337,  336,  333,  332,
+      331,  330,  329,  328,  327,  326,  324,  323,  322,  321,
+
+      320,  319,  318,  317,  315,  314,  313,  312,  311,  310,
+      309,  308,  307,  306,  305,  304,  303,  302,  301,  300,
+      297,  296,  295,  294,  293,  292,  291,  290,  289,  288,
+      287,  286,  285,  284,  283,  282,  281,  276,  275,  274,
+      273,  272,  271,  270,  269,  268,  267,  266,  265,  264,
+      263,  260,  259,  258,  254,  253,  252,  251,  250,  249,
+      248,  247,  246,  245,  244,  243,  240,  239,  238,  235,
+      234,  233,  230,  229,  228,  225,  224,  223,  219,  218,
+      215,  213,  200,  199,  198,  194,  193,  192,  181,  177,
+      173,  172,  171,  166,  165,  129,  129,  144,  129,  130,
+
+      129,  481,   90,   51,   51,   49,   29,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481
     } ;
 
-static yyconst flex_int16_t yy_chk[820] =
+static yyconst flex_int16_t yy_chk[966] =
     {   0,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
         1,    1,    1,    1,    1,    1,    1,    1,    1,    1,
-        1,    1,    1,    1,    1,    1,    5,    6,    5,    6,
-        7,    8,    9,    9,    9,    7,    8,   10,   10,   10,
-        9,   10,   19,    9,  418,   10,  418,    9,   10,   20,
-        5,    6,   10,   17,    7,    8,    9,   73,   11,   17,
-       11,   10,   11,   11,  204,   12,   19,   12,   11,   12,
-
-       12,   73,   13,   20,   13,   12,   13,   13,  204,    5,
-        6,  495,   13,    7,    8,   14,   23,   14,   13,   14,
-       14,   23,   15,   18,   15,   14,  494,   15,   16,   18,
-       16,   14,   15,   16,   21,   22,   21,   22,   16,   24,
-       23,   40,   40,   40,   24,   27,   27,   27,   42,  127,
-      127,   38,   13,   27,   13,   38,   27,   60,   21,   22,
-       42,   60,   85,   24,  493,   14,   85,   14,   25,   25,
+        1,    1,    1,    1,    1,    1,    1,    1,    5,    6,
+        7,    5,    6,    8,   15,  506,    7,   15,   19,    8,
+       15,    9,    9,    9,   17,   15,   41,   41,   41,   20,
+        9,   17,   23,    9,    5,    6,    7,    9,   23,    8,
+       10,   10,   10,   18,   19,   10,  505,    9,   11,   10,
+
+       18,   11,   10,   11,   11,   20,   10,   39,   23,   11,
+      504,   39,   71,    5,    6,    7,   10,   12,    8,   71,
+       12,   13,   12,   12,   13,   62,   13,   13,   12,   62,
+       14,   16,   13,   14,   16,   14,   14,   16,   13,   75,
+       21,   14,   16,   21,   24,   22,  503,   14,   22,  102,
+       24,   27,   27,   27,   75,   43,   28,   28,   28,  102,
+       27,   28,   72,   27,  103,   28,   21,   43,   28,  103,
+       24,   22,  113,   13,   72,   13,   77,   77,   77,  133,
+      133,  113,   14,   72,   14,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
+
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
        25,   25,   25,   25,   25,   25,   25,   25,   25,   25,
-       25,   25,   25,   25,   28,   28,   28,   68,   28,  163,
-       70,   68,   28,   69,   91,   28,   34,  200,   91,   69,
-      163,   34,   70,  200,   98,   68,   39,   39,   39,   98,
-       70,  107,   34,   34,   34,  107,  492,   39,   34,   34,
+       25,   25,   25,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
        34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
-       34,   34,   34,   39,   53,  193,  193,   53,   75,   75,
-       75,  167,   97,   53,   53,   78,   78,   78,  104,  106,
-
-      102,   53,   97,   53,  102,  228,   53,  167,  108,   53,
-       53,  104,  228,  102,   53,  106,  104,  108,  106,  175,
-       78,   53,  109,  175,  491,   53,  490,   53,   53,   53,
-       53,  109,  118,  118,  118,  141,  141,  141,  489,  488,
-      109,  119,  119,  119,  143,  143,  143,  146,  146,  146,
-      119,  148,  148,  148,  149,  149,  149,  119,  119,  119,
-      119,  119,  119,  152,  152,  152,  154,  154,  154,  159,
-      171,  487,  209,  159,  197,  197,  197,  198,  199,  199,
-      199,  198,  201,  201,  201,  159,  202,  471,  171,  203,
-      203,  203,  205,  205,  205,  198,  209,  213,  202,  268,
-
-      278,  171,  206,  206,  206,  213,  202,  207,  207,  207,
-      208,  208,  208,  229,  298,  301,  229,  268,  278,  322,
-      325,  325,  325,  333,  354,  355,  427,  446,  470,  469,
-      468,  467,  298,  301,  354,  354,  354,  322,  465,  464,
-      463,  333,  462,  355,  427,  446,  474,  474,  474,  474,
-      474,  474,  474,  475,  475,  475,  475,  475,  475,  475,
-      476,  476,  476,  476,  476,  476,  476,  477,  477,  477,
-      477,  477,  477,  477,  478,  478,  478,  479,  479,  480,
-      461,  480,  480,  480,  480,  481,  481,  481,  481,  481,
-      481,  481,  482,  482,  482,  482,  482,  459,  482,  483,
-
-      483,  483,  484,  484,  484,  485,  458,  485,  485,  485,
-      485,  485,  486,  486,  486,  496,  457,  496,  496,  496,
-      496,  496,  455,  454,  453,  452,  451,  449,  448,  447,
-      445,  440,  439,  437,  436,  434,  433,  431,  430,  429,
-      428,  426,  425,  423,  422,  421,  419,  417,  416,  415,
-      414,  413,  412,  411,  408,  407,  406,  405,  403,  402,
-      401,  400,  399,  397,  396,  395,  392,  391,  390,  389,
-      387,  386,  385,  384,  383,  382,  381,  380,  379,  377,
-      376,  374,  372,  371,  370,  369,  368,  367,  366,  365,
-      364,  363,  362,  361,  360,  359,  358,  357,  353,  352,
-
-      351,  350,  349,  348,  347,  345,  344,  343,  342,  341,
-      340,  339,  338,  337,  336,  335,  334,  332,  331,  330,
-      329,  324,  320,  318,  317,  316,  315,  314,  312,  311,
-      310,  309,  308,  306,  305,  304,  303,  302,  300,  299,
-      296,  295,  294,  292,  289,  287,  286,  284,  282,  281,
-      280,  279,  277,  275,  274,  273,  272,  271,  270,  269,
-      267,  266,  265,  263,  262,  261,  260,  259,  258,  257,
-      256,  255,  254,  253,  252,  250,  246,  245,  244,  243,
-      242,  241,  240,  239,  238,  237,  236,  235,  234,  233,
-      232,  231,  230,  227,  226,  225,  224,  223,  222,  221,
-
-      220,  219,  218,  217,  216,  215,  214,  212,  211,  210,
-      192,  186,  185,  184,  183,  182,  181,  180,  179,  178,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+       34,   34,   34,   34,   34,   34,   34,   34,   34,   34,
+
+       34,   38,   40,   40,   40,   38,   70,   38,  175,  221,
+       70,  171,   38,   38,   40,   45,   87,  221,   38,   45,
+       87,   45,  171,   38,  175,   70,   80,   80,   80,   38,
+       38,   94,   45,  109,  107,   94,  111,   45,  107,  114,
+       40,  112,  208,   45,   45,  112,  109,  107,  114,  208,
+      183,  109,  111,   80,  183,  111,  212,  114,   38,  124,
+      124,  124,  147,  147,  147,  149,  149,  149,  152,  152,
+      152,  212,   45,   55,  201,  201,   55,  154,  154,  154,
+      217,  502,   55,   55,  155,  155,  155,  158,  158,  158,
+       55,  167,  501,   55,  179,  167,   55,  500,  236,   55,
+
+       55,  160,  160,  160,   55,  236,  217,  167,  205,  205,
+      205,   55,  206,  179,  499,   55,  206,   55,   55,   55,
+       55,  119,  207,  207,  207,  119,  179,  119,  209,  209,
+      209,  206,  119,  119,  210,  211,  211,  211,  119,  213,
+      213,  213,  237,  119,  276,  237,  210,  286,  306,  119,
+      119,  214,  214,  214,  309,  210,  215,  215,  215,  216,
+      216,  216,  498,  276,  330,  341,  286,  306,  333,  333,
+      333,  479,  427,  309,  363,  427,  436,  478,  119,  125,
+      125,  125,  477,  330,  341,  476,  454,  475,  125,  473,
+      362,  362,  472,  363,  471,  436,  125,  125,  125,  125,
+
+      125,  125,  362,  362,  362,  454,  482,  482,  482,  482,
+      482,  482,  482,  482,  482,  482,  482,  482,  482,  483,
+      483,  483,  483,  483,  483,  483,  483,  483,  483,  483,
+      483,  483,  484,  484,  484,  484,  484,  484,  484,  484,
+      484,  484,  484,  484,  484,  485,  485,  485,  485,  485,
+      485,  485,  485,  485,  485,  485,  485,  485,  486,  470,
+      469,  486,  467,  486,  486,  466,  465,  463,  462,  486,
+      486,  487,  461,  460,  487,  459,  487,  487,  457,  487,
+      487,  456,  487,  487,  488,  455,  488,  488,  489,  489,
+      453,  489,  489,  489,  489,  489,  489,  489,  489,  489,
+
+      490,  490,  490,  490,  490,  490,  490,  490,  490,  490,
+      490,  490,  490,  491,  491,  491,  491,  491,  491,  491,
+      491,  491,  491,  448,  447,  491,  492,  445,  444,  492,
+      492,  492,  442,  441,  440,  439,  492,  438,  492,  493,
+      493,  437,  493,  493,  494,  494,  494,  494,  494,  494,
+      494,  494,  494,  495,  495,  435,  495,  495,  496,  496,
+      434,  496,  496,  496,  496,  496,  496,  496,  496,  496,
+      496,  497,  497,  432,  497,  497,  507,  507,  431,  507,
+      507,  507,  507,  507,  507,  507,  507,  507,  507,  430,
+      428,  426,  425,  424,  423,  422,  421,  420,  417,  416,
+
+      415,  414,  412,  411,  410,  409,  408,  406,  405,  404,
+      401,  400,  399,  398,  396,  395,  394,  393,  392,  391,
+      390,  389,  388,  385,  384,  382,  380,  379,  378,  377,
+      376,  375,  374,  373,  372,  371,  370,  369,  368,  367,
+      366,  365,  361,  360,  359,  358,  357,  356,  355,  353,
+      352,  351,  350,  349,  348,  347,  346,  345,  344,  343,
+      342,  340,  339,  338,  337,  332,  328,  326,  325,  324,
+      323,  322,  320,  319,  318,  317,  316,  314,  313,  312,
+      311,  310,  308,  307,  304,  303,  302,  300,  297,  295,
+      294,  292,  290,  289,  288,  287,  285,  283,  282,  281,
+
+      280,  279,  278,  277,  275,  274,  273,  271,  270,  269,
+      268,  267,  266,  265,  264,  263,  262,  261,  260,  258,
+      254,  253,  252,  251,  250,  249,  248,  247,  246,  245,
+      244,  243,  242,  241,  240,  239,  238,  235,  234,  233,
+      232,  231,  230,  229,  228,  227,  226,  225,  224,  223,
+      222,  220,  219,  218,  200,  194,  193,  192,  191,  190,
+      189,  188,  187,  186,  185,  184,  182,  181,  180,  178,
       177,  176,  174,  173,  172,  170,  169,  168,  166,  165,
-      164,  162,  161,  160,  158,  157,  153,  150,  123,  121,
-      120,  112,  111,  110,  105,  103,  101,  100,   99,   96,
-       95,   92,   87,   66,   63,   49,   47,   29,   26,    4,
-        3,    2,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-
-      473,  473,  473,  473,  473,  473,  473,  473,  473,  473,
-      473,  473,  473,  473,  473,  473,  473,  473,  473
+      159,  156,  129,  127,  126,  117,  116,  115,  110,  108,
+      106,  105,  104,  101,  100,   95,   90,   68,   65,   51,
+
+       49,   29,   26,    4,    3,    2,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481,  481,  481,  481,  481,  481,
+      481,  481,  481,  481,  481
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -892,12 +927,12 @@ static yyconst flex_int16_t yy_rule_linenum[109] =
       203,  204,  205,  206,  207,  208,  209,  210,  211,  212,
       213,  214,  215,  216,  217,  218,  219,  221,  225,  226,
       227,  228,  229,  231,  238,  242,  249,  254,  257,  260,
-      263,  271,  279,  286,  293,  310,  325,  330,  349,  361,
-      376,  388,  405,  406,  417,  428,  429,  441,  467,  512,
-      522,  531,  541,  542,  543,  544,  545,  546,  547,  550,
-      552,  560,  577,  582,  583,  589,  590,  601,  607,  613,
+      263,  271,  279,  286,  293,  312,  327,  332,  351,  363,
+      379,  394,  411,  412,  423,  434,  435,  447,  473,  518,
+      528,  537,  547,  548,  549,  550,  551,  552,  553,  556,
+      558,  566,  583,  588,  589,  595,  596,  607,  613,  619,
 
-      619,  635,  636,  637,  653,  672,  712,  713
+      625,  641,  642,  643,  659,  678,  718,  719
     } ;
 
 /* The intent behind this definition is that it'll catch
@@ -908,10 +943,10 @@ static yyconst flex_int16_t yy_rule_linenum[109] =
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *gram_text;
-#line 1 "scan-gram.l"
+#line 1 "../../../src/scan-gram.l"
 /* Bison Grammar Scanner                             -*- C -*-
 
-   Copyright (C) 2002-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -928,7 +963,7 @@ char *gram_text;
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define YY_NO_INPUT 1
-#line 24 "scan-gram.l"
+#line 24 "../../../src/scan-gram.l"
 /* Work around a bug in flex 2.5.31.  See Debian bug 333231
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
 #undef gram_wrap
@@ -944,7 +979,7 @@ char *gram_text;
 #include "reader.h"
 #include "uniqstr.h"
 
-#include <ctype.h>
+#include <c-ctype.h>
 #include <mbswidth.h>
 #include <quote.h>
 
@@ -1013,7 +1048,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 1017 "scan-gram.c"
+#line 1052 "scan-gram.c"
 
 #define INITIAL 0
 #define SC_YACC_COMMENT 1
@@ -1269,7 +1304,7 @@ YY_DECL
        register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 120 "scan-gram.l"
+#line 120 "../../../src/scan-gram.l"
 
 
   /* Nesting level of the current code in braces.  */
@@ -1296,7 +1331,7 @@ YY_DECL
   | Scanning white space.  |
   `-----------------------*/
 
-#line 1300 "scan-gram.c"
+#line 1335 "scan-gram.c"
 
        if ( !(yy_init) )
                {
@@ -1360,13 +1395,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                                {
                                yy_current_state = (int) yy_def[yy_current_state];
-                               if ( yy_current_state >= 474 )
+                               if ( yy_current_state >= 482 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_current_state != 473 );
+               while ( yy_current_state != 481 );
                yy_cp = (yy_last_accepting_cpos);
                yy_current_state = (yy_last_accepting_state);
 
@@ -1410,21 +1445,21 @@ do_action:      /* This label is used only to access EOF actions. */
 /* Comments and white space.  */
 case 1:
 YY_RULE_SETUP
-#line 149 "scan-gram.l"
+#line 149 "../../../src/scan-gram.l"
 warn_at (*loc, _("stray ',' treated as white space"));
        YY_BREAK
 case 2:
 /* rule 2 can match eol */
-#line 151 "scan-gram.l"
+#line 151 "../../../src/scan-gram.l"
 case 3:
 /* rule 3 can match eol */
 YY_RULE_SETUP
-#line 151 "scan-gram.l"
-;
+#line 151 "../../../src/scan-gram.l"
+continue;
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 152 "scan-gram.l"
+#line 152 "../../../src/scan-gram.l"
 {
     token_start = loc->start;
     context_state = YY_START;
@@ -1436,7 +1471,7 @@ YY_RULE_SETUP
 case 5:
 /* rule 5 can match eol */
 YY_RULE_SETUP
-#line 160 "scan-gram.l"
+#line 160 "../../../src/scan-gram.l"
 {
     handle_syncline (gram_text + sizeof "#line " - 1, *loc);
   }
@@ -1454,249 +1489,250 @@ YY_RULE_SETUP
 
 case 6:
 YY_RULE_SETUP
-#line 178 "scan-gram.l"
+#line 178 "../../../src/scan-gram.l"
 return PERCENT_NONASSOC;
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 179 "scan-gram.l"
+#line 179 "../../../src/scan-gram.l"
 return PERCENT_CODE;
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 180 "scan-gram.l"
+#line 180 "../../../src/scan-gram.l"
 return PERCENT_DEBUG;
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 181 "scan-gram.l"
+#line 181 "../../../src/scan-gram.l"
 return PERCENT_DEFAULT_PREC;
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 182 "scan-gram.l"
+#line 182 "../../../src/scan-gram.l"
 return PERCENT_DEFINE;
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 183 "scan-gram.l"
+#line 183 "../../../src/scan-gram.l"
 return PERCENT_DEFINES;
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 184 "scan-gram.l"
+#line 184 "../../../src/scan-gram.l"
 return PERCENT_DESTRUCTOR;
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 185 "scan-gram.l"
+#line 185 "../../../src/scan-gram.l"
 return PERCENT_DPREC;
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 186 "scan-gram.l"
+#line 186 "../../../src/scan-gram.l"
 return PERCENT_ERROR_VERBOSE;
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 187 "scan-gram.l"
+#line 187 "../../../src/scan-gram.l"
 return PERCENT_EXPECT;
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 188 "scan-gram.l"
+#line 188 "../../../src/scan-gram.l"
 return PERCENT_EXPECT_RR;
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 189 "scan-gram.l"
+#line 189 "../../../src/scan-gram.l"
 return PERCENT_FILE_PREFIX;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 190 "scan-gram.l"
+#line 190 "../../../src/scan-gram.l"
 return PERCENT_YACC;
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 191 "scan-gram.l"
+#line 191 "../../../src/scan-gram.l"
 return PERCENT_INITIAL_ACTION;
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 192 "scan-gram.l"
+#line 192 "../../../src/scan-gram.l"
 return PERCENT_GLR_PARSER;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 193 "scan-gram.l"
+#line 193 "../../../src/scan-gram.l"
 return PERCENT_LANGUAGE;
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 194 "scan-gram.l"
+#line 194 "../../../src/scan-gram.l"
 return PERCENT_LEFT;
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 195 "scan-gram.l"
+#line 195 "../../../src/scan-gram.l"
 return PERCENT_LEX_PARAM;
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 196 "scan-gram.l"
+#line 196 "../../../src/scan-gram.l"
 return PERCENT_LOCATIONS;
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 197 "scan-gram.l"
+#line 197 "../../../src/scan-gram.l"
 return PERCENT_MERGE;
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 198 "scan-gram.l"
+#line 198 "../../../src/scan-gram.l"
 return PERCENT_NAME_PREFIX;
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 199 "scan-gram.l"
+#line 199 "../../../src/scan-gram.l"
 return PERCENT_NO_DEFAULT_PREC;
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 200 "scan-gram.l"
+#line 200 "../../../src/scan-gram.l"
 return PERCENT_NO_LINES;
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 201 "scan-gram.l"
+#line 201 "../../../src/scan-gram.l"
 return PERCENT_NONASSOC;
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 202 "scan-gram.l"
+#line 202 "../../../src/scan-gram.l"
 return PERCENT_NONDETERMINISTIC_PARSER;
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 203 "scan-gram.l"
+#line 203 "../../../src/scan-gram.l"
 return PERCENT_NTERM;
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 204 "scan-gram.l"
+#line 204 "../../../src/scan-gram.l"
 return PERCENT_OUTPUT;
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 205 "scan-gram.l"
+#line 205 "../../../src/scan-gram.l"
 return PERCENT_PARSE_PARAM;
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 206 "scan-gram.l"
+#line 206 "../../../src/scan-gram.l"
 return PERCENT_PREC;
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 207 "scan-gram.l"
+#line 207 "../../../src/scan-gram.l"
 return PERCENT_PRINTER;
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 208 "scan-gram.l"
+#line 208 "../../../src/scan-gram.l"
 return PERCENT_PURE_PARSER;
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 209 "scan-gram.l"
+#line 209 "../../../src/scan-gram.l"
 return PERCENT_REQUIRE;
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 210 "scan-gram.l"
+#line 210 "../../../src/scan-gram.l"
 return PERCENT_RIGHT;
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 211 "scan-gram.l"
+#line 211 "../../../src/scan-gram.l"
 return PERCENT_SKELETON;
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 212 "scan-gram.l"
+#line 212 "../../../src/scan-gram.l"
 return PERCENT_START;
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 213 "scan-gram.l"
+#line 213 "../../../src/scan-gram.l"
 return PERCENT_TOKEN;
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 214 "scan-gram.l"
+#line 214 "../../../src/scan-gram.l"
 return PERCENT_TOKEN;
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 215 "scan-gram.l"
+#line 215 "../../../src/scan-gram.l"
 return PERCENT_TOKEN_TABLE;
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 216 "scan-gram.l"
+#line 216 "../../../src/scan-gram.l"
 return PERCENT_TYPE;
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 217 "scan-gram.l"
+#line 217 "../../../src/scan-gram.l"
 return PERCENT_UNION;
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 218 "scan-gram.l"
+#line 218 "../../../src/scan-gram.l"
 return PERCENT_VERBOSE;
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 219 "scan-gram.l"
+#line 219 "../../../src/scan-gram.l"
 return PERCENT_YACC;
        YY_BREAK
 case 48:
+/* rule 48 can match eol */
 YY_RULE_SETUP
-#line 221 "scan-gram.l"
+#line 221 "../../../src/scan-gram.l"
 {
     complain_at (*loc, _("invalid directive: %s"), quote (gram_text));
   }
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 225 "scan-gram.l"
+#line 225 "../../../src/scan-gram.l"
 return EQUAL;
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 226 "scan-gram.l"
+#line 226 "../../../src/scan-gram.l"
 return PIPE;
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 227 "scan-gram.l"
+#line 227 "../../../src/scan-gram.l"
 return SEMICOLON;
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 228 "scan-gram.l"
+#line 228 "../../../src/scan-gram.l"
 return TYPE_TAG_ANY;
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 229 "scan-gram.l"
+#line 229 "../../../src/scan-gram.l"
 return TYPE_TAG_NONE;
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 231 "scan-gram.l"
+#line 231 "../../../src/scan-gram.l"
 {
     val->uniqstr = uniqstr_new (gram_text);
     id_loc = *loc;
@@ -1706,7 +1742,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 238 "scan-gram.l"
+#line 238 "../../../src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 10, *loc);
     return INT;
@@ -1714,7 +1750,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 242 "scan-gram.l"
+#line 242 "../../../src/scan-gram.l"
 {
     val->integer = scan_integer (gram_text, 16, *loc);
     return INT;
@@ -1724,7 +1760,7 @@ YY_RULE_SETUP
      accept "1FOO" as "1 FOO".  */
 case 57:
 YY_RULE_SETUP
-#line 249 "scan-gram.l"
+#line 249 "../../../src/scan-gram.l"
 {
     complain_at (*loc, _("invalid identifier: %s"), quote (gram_text));
   }
@@ -1732,25 +1768,25 @@ YY_RULE_SETUP
 /* Characters.  */
 case 58:
 YY_RULE_SETUP
-#line 254 "scan-gram.l"
+#line 254 "../../../src/scan-gram.l"
 token_start = loc->start; BEGIN SC_ESCAPED_CHARACTER;
        YY_BREAK
 /* Strings. */
 case 59:
 YY_RULE_SETUP
-#line 257 "scan-gram.l"
+#line 257 "../../../src/scan-gram.l"
 token_start = loc->start; BEGIN SC_ESCAPED_STRING;
        YY_BREAK
 /* Prologue. */
 case 60:
 YY_RULE_SETUP
-#line 260 "scan-gram.l"
+#line 260 "../../../src/scan-gram.l"
 code_start = loc->start; BEGIN SC_PROLOGUE;
        YY_BREAK
 /* Code in between braces.  */
 case 61:
 YY_RULE_SETUP
-#line 263 "scan-gram.l"
+#line 263 "../../../src/scan-gram.l"
 {
     STRING_GROW;
     braces_level = 0;
@@ -1761,7 +1797,7 @@ YY_RULE_SETUP
 /* A type. */
 case 62:
 YY_RULE_SETUP
-#line 271 "scan-gram.l"
+#line 271 "../../../src/scan-gram.l"
 {
     obstack_grow (&obstack_for_string, gram_text + 1, gram_leng - 2);
     STRING_FINISH;
@@ -1772,7 +1808,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 279 "scan-gram.l"
+#line 279 "../../../src/scan-gram.l"
 {
     static int percent_percent_count;
     if (++percent_percent_count == 2)
@@ -1782,7 +1818,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 286 "scan-gram.l"
+#line 286 "../../../src/scan-gram.l"
 {
     bracketed_id_str = NULL;
     bracketed_id_start = loc->start;
@@ -1792,13 +1828,15 @@ YY_RULE_SETUP
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 293 "scan-gram.l"
+#line 293 "../../../src/scan-gram.l"
 {
-    complain_at (*loc, _("invalid character: %s"), quote (gram_text));
+    complain_at (*loc, "%s: %s",
+                 ngettext ("invalid character", "invalid characters", gram_leng),
+                 quote_mem (gram_text, gram_leng));
   }
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 297 "scan-gram.l"
+#line 299 "../../../src/scan-gram.l"
 {
     loc->start = loc->end = scanner_cursor;
     yyterminate ();
@@ -1812,7 +1850,7 @@ case YY_STATE_EOF(INITIAL):
 
 case 66:
 YY_RULE_SETUP
-#line 310 "scan-gram.l"
+#line 312 "../../../src/scan-gram.l"
 {
     if (bracketed_id_str)
       {
@@ -1831,7 +1869,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 325 "scan-gram.l"
+#line 327 "../../../src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -1840,7 +1878,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 330 "scan-gram.l"
+#line 332 "../../../src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
@@ -1849,7 +1887,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
-#line 336 "scan-gram.l"
+#line 338 "../../../src/scan-gram.l"
 {
     BEGIN (bracketed_id_str ? SC_RETURN_BRACKETED_ID : INITIAL);
     *loc = id_loc;
@@ -1864,7 +1902,7 @@ case YY_STATE_EOF(SC_AFTER_IDENTIFIER):
 
 case 69:
 YY_RULE_SETUP
-#line 349 "scan-gram.l"
+#line 351 "../../../src/scan-gram.l"
 {
     if (bracketed_id_str)
       {
@@ -1880,7 +1918,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 361 "scan-gram.l"
+#line 363 "../../../src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     if (bracketed_id_str)
@@ -1899,14 +1937,16 @@ YY_RULE_SETUP
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 376 "scan-gram.l"
+#line 379 "../../../src/scan-gram.l"
 {
-    complain_at (*loc, _("invalid character in bracketed name: %s"),
-                quote (gram_text));
+    complain_at (*loc, "%s: %s",
+                 ngettext ("invalid character in bracketed name",
+                           "invalid characters in bracketed name", gram_leng),
+                 quote_mem (gram_text, gram_leng));
   }
        YY_BREAK
 case YY_STATE_EOF(SC_BRACKETED_ID):
-#line 380 "scan-gram.l"
+#line 386 "../../../src/scan-gram.l"
 {
     BEGIN bracketed_id_context_state;
     unexpected_eof (bracketed_id_start, "]");
@@ -1917,7 +1957,7 @@ case YY_STATE_EOF(SC_BRACKETED_ID):
 
 case 72:
 YY_RULE_SETUP
-#line 388 "scan-gram.l"
+#line 394 "../../../src/scan-gram.l"
 {
     ROLLBACK_CURRENT_TOKEN;
     val->uniqstr = bracketed_id_str;
@@ -1935,17 +1975,17 @@ YY_RULE_SETUP
 
 case 73:
 YY_RULE_SETUP
-#line 405 "scan-gram.l"
+#line 411 "../../../src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
 case 74:
 /* rule 74 can match eol */
 YY_RULE_SETUP
-#line 406 "scan-gram.l"
-;
+#line 412 "../../../src/scan-gram.l"
+continue;
        YY_BREAK
 case YY_STATE_EOF(SC_YACC_COMMENT):
-#line 407 "scan-gram.l"
+#line 413 "../../../src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -1957,11 +1997,11 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
 case 75:
 /* rule 75 can match eol */
 YY_RULE_SETUP
-#line 417 "scan-gram.l"
+#line 423 "../../../src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case YY_STATE_EOF(SC_COMMENT):
-#line 418 "scan-gram.l"
+#line 424 "../../../src/scan-gram.l"
 unexpected_eof (token_start, "*/"); BEGIN context_state;
        YY_BREAK
 
@@ -1973,17 +2013,17 @@ unexpected_eof (token_start, "*/"); BEGIN context_state;
 case 76:
 /* rule 76 can match eol */
 YY_RULE_SETUP
-#line 428 "scan-gram.l"
+#line 434 "../../../src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 77:
 /* rule 77 can match eol */
 YY_RULE_SETUP
-#line 429 "scan-gram.l"
+#line 435 "../../../src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_LINE_COMMENT):
-#line 430 "scan-gram.l"
+#line 436 "../../../src/scan-gram.l"
 BEGIN context_state;
        YY_BREAK
 
@@ -1996,7 +2036,7 @@ BEGIN context_state;
 case 78:
 /* rule 78 can match eol */
 YY_RULE_SETUP
-#line 441 "scan-gram.l"
+#line 447 "../../../src/scan-gram.l"
 {
     if (gram_text[0] == '\n')
       unexpected_newline (token_start, "\"");
@@ -2008,7 +2048,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_STRING):
-#line 450 "scan-gram.l"
+#line 456 "../../../src/scan-gram.l"
 {
     unexpected_eof (token_start, "\"");
     STRING_FINISH;
@@ -2028,7 +2068,7 @@ case YY_STATE_EOF(SC_ESCAPED_STRING):
 case 79:
 /* rule 79 can match eol */
 YY_RULE_SETUP
-#line 467 "scan-gram.l"
+#line 473 "../../../src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2052,7 +2092,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
-#line 488 "scan-gram.l"
+#line 494 "../../../src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = token_start;
@@ -2079,7 +2119,7 @@ case YY_STATE_EOF(SC_ESCAPED_CHARACTER):
 
 case 80:
 YY_RULE_SETUP
-#line 512 "scan-gram.l"
+#line 518 "../../../src/scan-gram.l"
 complain_at (*loc, _("invalid null character"));
        YY_BREAK
 
@@ -2090,7 +2130,7 @@ complain_at (*loc, _("invalid null character"));
 
 case 81:
 YY_RULE_SETUP
-#line 522 "scan-gram.l"
+#line 528 "../../../src/scan-gram.l"
 {
     unsigned long int c = strtoul (gram_text + 1, NULL, 8);
     if (!c || UCHAR_MAX < c)
@@ -2102,7 +2142,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 531 "scan-gram.l"
+#line 537 "../../../src/scan-gram.l"
 {
     verify (UCHAR_MAX < ULONG_MAX);
     unsigned long int c = strtoul (gram_text + 2, NULL, 16);
@@ -2115,48 +2155,48 @@ YY_RULE_SETUP
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 541 "scan-gram.l"
+#line 547 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\a');
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 542 "scan-gram.l"
+#line 548 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\b');
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 543 "scan-gram.l"
+#line 549 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\f');
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 544 "scan-gram.l"
+#line 550 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\n');
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 545 "scan-gram.l"
+#line 551 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\r');
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 546 "scan-gram.l"
+#line 552 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\t');
        YY_BREAK
 case 89:
 YY_RULE_SETUP
-#line 547 "scan-gram.l"
+#line 553 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, '\v');
        YY_BREAK
 /* \\[\"\'?\\] would be shorter, but it confuses xgettext.  */
 case 90:
 YY_RULE_SETUP
-#line 550 "scan-gram.l"
+#line 556 "../../../src/scan-gram.l"
 obstack_1grow (&obstack_for_string, gram_text[1]);
        YY_BREAK
 case 91:
 YY_RULE_SETUP
-#line 552 "scan-gram.l"
+#line 558 "../../../src/scan-gram.l"
 {
     int c = convert_ucn_to_byte (gram_text);
     if (c <= 0)
@@ -2169,11 +2209,11 @@ YY_RULE_SETUP
 case 92:
 /* rule 92 can match eol */
 YY_RULE_SETUP
-#line 560 "scan-gram.l"
+#line 566 "../../../src/scan-gram.l"
 {
     char const *p = gram_text + 1;
     /* Quote only if escaping won't make the character visible.  */
-    if (isspace ((unsigned char) *p) && isprint ((unsigned char) *p))
+    if (c_isspace ((unsigned char) *p) && c_isprint ((unsigned char) *p))
       p = quote (p);
     else
       p = quotearg_style_mem (escape_quoting_style, p, 1);
@@ -2189,7 +2229,7 @@ YY_RULE_SETUP
 case 93:
 /* rule 93 can match eol */
 YY_RULE_SETUP
-#line 577 "scan-gram.l"
+#line 583 "../../../src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 
@@ -2197,17 +2237,17 @@ STRING_GROW;
 
 case 94:
 YY_RULE_SETUP
-#line 582 "scan-gram.l"
+#line 588 "../../../src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 95:
 /* rule 95 can match eol */
 YY_RULE_SETUP
-#line 583 "scan-gram.l"
+#line 589 "../../../src/scan-gram.l"
 unexpected_newline (token_start, "'"); BEGIN context_state;
        YY_BREAK
 case YY_STATE_EOF(SC_CHARACTER):
-#line 584 "scan-gram.l"
+#line 590 "../../../src/scan-gram.l"
 unexpected_eof (token_start, "'"); BEGIN context_state;
        YY_BREAK
 
@@ -2215,17 +2255,17 @@ unexpected_eof (token_start, "'"); BEGIN context_state;
 
 case 96:
 YY_RULE_SETUP
-#line 589 "scan-gram.l"
+#line 595 "../../../src/scan-gram.l"
 STRING_GROW; BEGIN context_state;
        YY_BREAK
 case 97:
 /* rule 97 can match eol */
 YY_RULE_SETUP
-#line 590 "scan-gram.l"
+#line 596 "../../../src/scan-gram.l"
 unexpected_newline (token_start, "\""); BEGIN context_state;
        YY_BREAK
 case YY_STATE_EOF(SC_STRING):
-#line 591 "scan-gram.l"
+#line 597 "../../../src/scan-gram.l"
 unexpected_eof (token_start, "\""); BEGIN context_state;
        YY_BREAK
 
@@ -2236,7 +2276,7 @@ unexpected_eof (token_start, "\""); BEGIN context_state;
 
 case 98:
 YY_RULE_SETUP
-#line 601 "scan-gram.l"
+#line 607 "../../../src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2246,7 +2286,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 99:
 YY_RULE_SETUP
-#line 607 "scan-gram.l"
+#line 613 "../../../src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2257,7 +2297,7 @@ YY_RULE_SETUP
 case 100:
 /* rule 100 can match eol */
 YY_RULE_SETUP
-#line 613 "scan-gram.l"
+#line 619 "../../../src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2268,7 +2308,7 @@ YY_RULE_SETUP
 case 101:
 /* rule 101 can match eol */
 YY_RULE_SETUP
-#line 619 "scan-gram.l"
+#line 625 "../../../src/scan-gram.l"
 {
     STRING_GROW;
     context_state = YY_START;
@@ -2285,18 +2325,18 @@ YY_RULE_SETUP
 case 102:
 /* rule 102 can match eol */
 YY_RULE_SETUP
-#line 635 "scan-gram.l"
+#line 641 "../../../src/scan-gram.l"
 STRING_GROW; braces_level++;
        YY_BREAK
 case 103:
 /* rule 103 can match eol */
 YY_RULE_SETUP
-#line 636 "scan-gram.l"
+#line 642 "../../../src/scan-gram.l"
 STRING_GROW; braces_level--;
        YY_BREAK
 case 104:
 YY_RULE_SETUP
-#line 637 "scan-gram.l"
+#line 643 "../../../src/scan-gram.l"
 {
     obstack_1grow (&obstack_for_string, '}');
 
@@ -2316,11 +2356,11 @@ YY_RULE_SETUP
 case 105:
 /* rule 105 can match eol */
 YY_RULE_SETUP
-#line 653 "scan-gram.l"
+#line 659 "../../../src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case YY_STATE_EOF(SC_BRACED_CODE):
-#line 655 "scan-gram.l"
+#line 661 "../../../src/scan-gram.l"
 {
     unexpected_eof (code_start, "}");
     STRING_FINISH;
@@ -2338,7 +2378,7 @@ case YY_STATE_EOF(SC_BRACED_CODE):
 
 case 106:
 YY_RULE_SETUP
-#line 672 "scan-gram.l"
+#line 678 "../../../src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2348,7 +2388,7 @@ YY_RULE_SETUP
   }
        YY_BREAK
 case YY_STATE_EOF(SC_PROLOGUE):
-#line 680 "scan-gram.l"
+#line 686 "../../../src/scan-gram.l"
 {
     unexpected_eof (code_start, "%}");
     STRING_FINISH;
@@ -2366,7 +2406,7 @@ case YY_STATE_EOF(SC_PROLOGUE):
 
 
 case YY_STATE_EOF(SC_EPILOGUE):
-#line 698 "scan-gram.l"
+#line 704 "../../../src/scan-gram.l"
 {
     STRING_FINISH;
     loc->start = code_start;
@@ -2380,19 +2420,19 @@ case YY_STATE_EOF(SC_EPILOGUE):
   | By default, grow the string obstack with the input.  |
   `-----------------------------------------------------*/
 case 107:
-#line 713 "scan-gram.l"
+#line 719 "../../../src/scan-gram.l"
 case 108:
 /* rule 108 can match eol */
 YY_RULE_SETUP
-#line 713 "scan-gram.l"
+#line 719 "../../../src/scan-gram.l"
 STRING_GROW;
        YY_BREAK
 case 109:
 YY_RULE_SETUP
-#line 715 "scan-gram.l"
+#line 721 "../../../src/scan-gram.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
-#line 2396 "scan-gram.c"
+#line 2436 "scan-gram.c"
 case YY_STATE_EOF(SC_RETURN_BRACKETED_ID):
        yyterminate();
 
@@ -2698,7 +2738,7 @@ static int yy_get_next_buffer (void)
        for ( yy_cp = (yytext_ptr) + YY_MORE_ADJ; yy_cp < (yy_c_buf_p); ++yy_cp )
                {
 /* %% [16.0] code to find the next state goes here */
-               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 56);
+               register YY_CHAR yy_c = (*yy_cp ? yy_ec[YY_SC_TO_UI(*yy_cp)] : 58);
                if ( yy_accept[yy_current_state] )
                        {
                        (yy_last_accepting_state) = yy_current_state;
@@ -2707,7 +2747,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 474 )
+                       if ( yy_current_state >= 482 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
@@ -2731,7 +2771,7 @@ static int yy_get_next_buffer (void)
     /* %% [17.0] code to find the next state, and perhaps do backing up, goes here */
        register char *yy_cp = (yy_c_buf_p);
 
-       register YY_CHAR yy_c = 56;
+       register YY_CHAR yy_c = 58;
        if ( yy_accept[yy_current_state] )
                {
                (yy_last_accepting_state) = yy_current_state;
@@ -2740,11 +2780,11 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 474 )
+               if ( yy_current_state >= 482 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) yy_c];
-       yy_is_jam = (yy_current_state == 473);
+       yy_is_jam = (yy_current_state == 481);
 
                return yy_is_jam ? 0 : yy_current_state;
 }
@@ -3476,7 +3516,7 @@ void gram_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 715 "scan-gram.l"
+#line 721 "../../../src/scan-gram.l"
 
 
 
@@ -3605,23 +3645,27 @@ convert_ucn_to_byte (char const *ucn)
 }
 
 
-/*----------------------------------------------------------------.
-| Handle '#line INT "FILE"'.  ARGS has already skipped '#line '.  |
-`----------------------------------------------------------------*/
+/*---------------------------------------------------------------------.
+| Handle '#line INT( "FILE")?\n'.  ARGS has already skipped '#line '.  |
+`---------------------------------------------------------------------*/
 
 static void
 handle_syncline (char *args, location loc)
 {
-  char *after_num;
-  unsigned long int lineno = strtoul (args, &after_num, 10);
-  char *file = mbschr (after_num, '"') + 1;
-  *mbschr (file, '"') = '\0';
+  char *file;
+  unsigned long int lineno = strtoul (args, &file, 10);
   if (INT_MAX <= lineno)
     {
       warn_at (loc, _("line number overflow"));
       lineno = INT_MAX;
     }
-  current_file = uniqstr_new (file);
+
+  file = mbschr (file, '"');
+  if (file)
+    {
+      *mbschr (file + 1, '"') = '\0';
+      current_file = uniqstr_new (file + 1);
+    }
   boundary_set (&scanner_cursor, current_file, lineno, 1);
 }
 
@@ -3639,7 +3683,7 @@ unexpected_end (boundary start, char const *msgid, char const *token_end)
   loc.start = start;
   loc.end = scanner_cursor;
   token_end = quote (token_end);
-  // Instead of '\'', display "'".
+  /* Instead of '\'', display "'".  */
   if (!strcmp (token_end, "'\\''"))
     token_end = "\"'\"";
   complain_at (loc, _(msgid), token_end);
index ed973c7..ee397ed 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison Grammar Scanner
 
-   Copyright (C) 2006-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2006-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -32,7 +32,7 @@ void gram_scanner_last_string_free (void);
 extern FILE *gram_out;
 extern int gram_lineno;
 
-# define GRAM_LEX_DECL int gram_lex (YYSTYPE *val, location *loc)
+# define GRAM_LEX_DECL int gram_lex (GRAM_STYPE *val, location *loc)
 GRAM_LEX_DECL;
 
 #endif /* !SCAN_GRAM_H_ */
index 75023f4..d78676e 100644 (file)
@@ -1,6 +1,6 @@
 /* Bison Grammar Scanner                             -*- C -*-
 
-   Copyright (C) 2002-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -36,7 +36,7 @@
 #include "reader.h"
 #include "uniqstr.h"
 
-#include <ctype.h>
+#include <c-ctype.h>
 #include <mbswidth.h>
 #include <quote.h>
 
@@ -103,9 +103,9 @@ static void unexpected_newline (boundary, char const *);
  /* Bracketed identifiers support. */
 %x SC_BRACKETED_ID SC_RETURN_BRACKETED_ID
 
-letter   [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+letter    [.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]
+notletter [^.abcdefghijklmnopqrstuvwxyzABCDEFGHIJKLMNOPQRSTUVWXYZ_]{-}[%\{]
 id       {letter}({letter}|[-0-9])*
-directive %{id}
 int      [0-9]+
 
 /* POSIX says that a tag must be both an id and a C union member, but
@@ -148,7 +148,7 @@ splice       (\\[ \f\t\v]*\n)*
   /* Comments and white space.  */
   ","          warn_at (*loc, _("stray ',' treated as white space"));
   [ \f\n\t\v]  |
-  "//".*       ;
+  "//".*       continue;
   "/*" {
     token_start = loc->start;
     context_state = YY_START;
@@ -157,7 +157,7 @@ splice       (\\[ \f\t\v]*\n)*
 
   /* #line directives are not documented, and may be withdrawn or
      modified in future versions of Bison.  */
-  ^"#line "{int}" \"".*"\"\n" {
+  ^"#line "{int}(" \"".*"\"")?"\n" {
     handle_syncline (yytext + sizeof "#line " - 1, *loc);
   }
 }
@@ -218,7 +218,7 @@ splice       (\\[ \f\t\v]*\n)*
   "%verbose"                        return PERCENT_VERBOSE;
   "%yacc"                           return PERCENT_YACC;
 
-  {directive} {
+  "%"{id}|"%"{notletter}([[:graph:]])+ {
     complain_at (*loc, _("invalid directive: %s"), quote (yytext));
   }
 
@@ -290,8 +290,10 @@ splice      (\\[ \f\t\v]*\n)*
     BEGIN SC_BRACKETED_ID;
   }
 
-  . {
-    complain_at (*loc, _("invalid character: %s"), quote (yytext));
+  [^\[%A-Za-z0-9_<>{}\"\'*;|=/, \f\n\t\v]+|. {
+    complain_at (*loc, "%s: %s",
+                 ngettext ("invalid character", "invalid characters", yyleng),
+                 quote_mem (yytext, yyleng));
   }
 
   <<EOF>> {
@@ -373,10 +375,14 @@ splice     (\\[ \f\t\v]*\n)*
     else
       complain_at (*loc, _("an identifier expected"));
   }
-  . {
-    complain_at (*loc, _("invalid character in bracketed name: %s"),
-                quote (yytext));
+
+  [^\].A-Za-z0-9_/ \f\n\t\v]+|. {
+    complain_at (*loc, "%s: %s",
+                 ngettext ("invalid character in bracketed name",
+                           "invalid characters in bracketed name", yyleng),
+                 quote_mem (yytext, yyleng));
   }
+
   <<EOF>> {
     BEGIN bracketed_id_context_state;
     unexpected_eof (bracketed_id_start, "]");
@@ -403,7 +409,7 @@ splice       (\\[ \f\t\v]*\n)*
 <SC_YACC_COMMENT>
 {
   "*/"     BEGIN context_state;
-  .|\n    ;
+  .|\n    continue;
   <<EOF>>  unexpected_eof (token_start, "*/"); BEGIN context_state;
 }
 
@@ -560,7 +566,7 @@ splice       (\\[ \f\t\v]*\n)*
   \\(.|\n)     {
     char const *p = yytext + 1;
     /* Quote only if escaping won't make the character visible.  */
-    if (isspace ((unsigned char) *p) && isprint ((unsigned char) *p))
+    if (c_isspace ((unsigned char) *p) && c_isprint ((unsigned char) *p))
       p = quote (p);
     else
       p = quotearg_style_mem (escape_quoting_style, p, 1);
@@ -839,23 +845,27 @@ convert_ucn_to_byte (char const *ucn)
 }
 
 
-/*----------------------------------------------------------------.
-| Handle '#line INT "FILE"'.  ARGS has already skipped '#line '.  |
-`----------------------------------------------------------------*/
+/*---------------------------------------------------------------------.
+| Handle '#line INT( "FILE")?\n'.  ARGS has already skipped '#line '.  |
+`---------------------------------------------------------------------*/
 
 static void
 handle_syncline (char *args, location loc)
 {
-  char *after_num;
-  unsigned long int lineno = strtoul (args, &after_num, 10);
-  char *file = mbschr (after_num, '"') + 1;
-  *mbschr (file, '"') = '\0';
+  char *file;
+  unsigned long int lineno = strtoul (args, &file, 10);
   if (INT_MAX <= lineno)
     {
       warn_at (loc, _("line number overflow"));
       lineno = INT_MAX;
     }
-  current_file = uniqstr_new (file);
+
+  file = mbschr (file, '"');
+  if (file)
+    {
+      *mbschr (file + 1, '"') = '\0';
+      current_file = uniqstr_new (file + 1);
+    }
   boundary_set (&scanner_cursor, current_file, lineno, 1);
 }
 
@@ -873,7 +883,7 @@ unexpected_end (boundary start, char const *msgid, char const *token_end)
   loc.start = start;
   loc.end = scanner_cursor;
   token_end = quote (token_end);
-  // Instead of '\'', display "'".
+  /* Instead of '\'', display "'".  */
   if (!strcmp (token_end, "'\\''"))
     token_end = "\"'\"";
   complain_at (loc, _(msgid), token_end);
index 6cd3be0..3615485 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 36
+#define YY_FLEX_SUBMINOR_VERSION 37
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -598,10 +598,10 @@ static yyconst flex_int16_t yy_rule_linenum[22] =
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *skel_text;
-#line 1 "scan-skel.l"
+#line 1 "../../../src/scan-skel.l"
 /* Scan Bison Skeletons.                                       -*- C -*-
 
-   Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -618,7 +618,7 @@ char *skel_text;
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 #define YY_NO_INPUT 1
-#line 24 "scan-skel.l"
+#line 24 "../../../src/scan-skel.l"
 /* Work around a bug in flex 2.5.31.  See Debian bug 333231
    <http://bugs.debian.org/cgi-bin/bugreport.cgi?bug=333231>.  */
 #undef skel_wrap
@@ -892,7 +892,7 @@ YY_DECL
        register int yy_act;
     
 /* %% [7.0] user's declarations go here */
-#line 58 "scan-skel.l"
+#line 58 "../../../src/scan-skel.l"
 
 
 
@@ -1019,43 +1019,43 @@ do_action:      /* This label is used only to access EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 72 "scan-skel.l"
+#line 72 "../../../src/scan-skel.l"
 fputc ('@', skel_out);
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 73 "scan-skel.l"
+#line 73 "../../../src/scan-skel.l"
 fputc ('[', skel_out);
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 74 "scan-skel.l"
+#line 74 "../../../src/scan-skel.l"
 fputc (']', skel_out);
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 75 "scan-skel.l"
+#line 75 "../../../src/scan-skel.l"
 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"
+#line 76 "../../../src/scan-skel.l"
 continue;
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 78 "scan-skel.l"
+#line 78 "../../../src/scan-skel.l"
 fprintf (skel_out, "%d", out_lineno + 1);
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 79 "scan-skel.l"
+#line 79 "../../../src/scan-skel.l"
 QPUTS (outname);
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 81 "scan-skel.l"
+#line 81 "../../../src/scan-skel.l"
 {
   skel_text[skel_leng-1] = '\0';
   obstack_grow (&obstack_for_string, skel_text, skel_leng);
@@ -1067,22 +1067,22 @@ YY_RULE_SETUP
 /* This pattern must not match more than the previous @ patterns. */
 case 9:
 YY_RULE_SETUP
-#line 90 "scan-skel.l"
+#line 90 "../../../src/scan-skel.l"
 fail_for_invalid_at (skel_text);
        YY_BREAK
 case 10:
 /* rule 10 can match eol */
 YY_RULE_SETUP
-#line 91 "scan-skel.l"
+#line 91 "../../../src/scan-skel.l"
 out_lineno++; ECHO;
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 92 "scan-skel.l"
+#line 92 "../../../src/scan-skel.l"
 ECHO;
        YY_BREAK
 case YY_STATE_EOF(INITIAL):
-#line 94 "scan-skel.l"
+#line 94 "../../../src/scan-skel.l"
 {
   if (outname)
     {
@@ -1097,38 +1097,38 @@ case YY_STATE_EOF(INITIAL):
 case 12:
 /* rule 12 can match eol */
 YY_RULE_SETUP
-#line 105 "scan-skel.l"
+#line 105 "../../../src/scan-skel.l"
 STRING_GROW;
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 107 "scan-skel.l"
+#line 107 "../../../src/scan-skel.l"
 obstack_1grow (&obstack_for_string, '@');
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 108 "scan-skel.l"
+#line 108 "../../../src/scan-skel.l"
 obstack_1grow (&obstack_for_string, '[');
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 109 "scan-skel.l"
+#line 109 "../../../src/scan-skel.l"
 obstack_1grow (&obstack_for_string, ']');
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 110 "scan-skel.l"
+#line 110 "../../../src/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"
+#line 111 "../../../src/scan-skel.l"
 continue;
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 113 "scan-skel.l"
+#line 113 "../../../src/scan-skel.l"
 {
     if (at_directive_argc >= AT_DIRECTIVE_ARGC_MAX)
       fail_for_at_directive_too_many_args (at_directive_argv[0]);
@@ -1152,7 +1152,7 @@ YY_RULE_SETUP
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 134 "scan-skel.l"
+#line 134 "../../../src/scan-skel.l"
 fail_for_invalid_at (skel_text);
        YY_BREAK
 
@@ -1161,12 +1161,12 @@ fail_for_invalid_at (skel_text);
 case 20:
 /* rule 20 can match eol */
 YY_RULE_SETUP
-#line 139 "scan-skel.l"
+#line 139 "../../../src/scan-skel.l"
 continue;
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 140 "scan-skel.l"
+#line 140 "../../../src/scan-skel.l"
 { yyless (0); BEGIN SC_AT_DIRECTIVE_ARGS; }
        YY_BREAK
 
@@ -1174,7 +1174,7 @@ YY_RULE_SETUP
 
 case YY_STATE_EOF(SC_AT_DIRECTIVE_ARGS):
 case YY_STATE_EOF(SC_AT_DIRECTIVE_SKIP_WS):
-#line 145 "scan-skel.l"
+#line 145 "../../../src/scan-skel.l"
 {
     fatal (_("unclosed %s directive in skeleton"), at_directive_argv[0]);
   }
@@ -1182,7 +1182,7 @@ case YY_STATE_EOF(SC_AT_DIRECTIVE_SKIP_WS):
 
 case 22:
 YY_RULE_SETUP
-#line 150 "scan-skel.l"
+#line 150 "../../../src/scan-skel.l"
 YY_FATAL_ERROR( "flex scanner jammed" );
        YY_BREAK
 #line 1189 "scan-skel.c"
@@ -2265,7 +2265,7 @@ void skel_free (void * ptr )
 
 /* %ok-for-header */
 
-#line 150 "scan-skel.l"
+#line 150 "../../../src/scan-skel.l"
 
 
 
index 2c6930b..019d38a 100644 (file)
@@ -1,6 +1,6 @@
 /* Scan Bison Skeletons.
 
-   Copyright (C) 2005-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2005-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index ed61b5c..715971a 100644 (file)
@@ -1,6 +1,6 @@
 /* Scan Bison Skeletons.                                       -*- C -*-
 
-   Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 666e0cc..bdf6ce6 100644 (file)
@@ -1,6 +1,6 @@
 /* Type definitions for the finite state machine for Bison.
 
-   Copyright (C) 2001-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2001-2007, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index dfdc49d..9937acf 100644 (file)
@@ -1,6 +1,6 @@
 /* Type definitions for the finite state machine for Bison.
 
-   Copyright (C) 1984, 1989, 2000-2004, 2007, 2009-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2004, 2007, 2009-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 69ac8a1..b695667 100644 (file)
@@ -1,6 +1,6 @@
 /* Lists of symbols for Bison
 
-   Copyright (C) 2002, 2005-2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002, 2005-2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 63577f7..9417f9e 100644 (file)
@@ -1,6 +1,6 @@
 /* Lists of symbols for Bison
 
-   Copyright (C) 2002, 2005-2007, 2009-2012 Free Software Foundation,
+   Copyright (C) 2002, 2005-2007, 2009-2013 Free Software Foundation,
    Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 002f6e3..c793288 100644 (file)
@@ -1,6 +1,6 @@
 /* Symbol table manager for Bison.
 
-   Copyright (C) 1984, 1989, 2000-2002, 2004-2012 Free Software
+   Copyright (C) 1984, 1989, 2000-2002, 2004-2013 Free Software
    Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
@@ -150,16 +150,20 @@ static void
 symbol_redeclaration (symbol *s, const char *what, location first,
                       location second)
 {
-  complain_at (second, _("%s redeclaration for %s"), what, s->tag);
-  complain_at (first, _("previous declaration"));
+  unsigned i = 0;
+  complain_at_indent (second, &i, _("%s redeclaration for %s"), what, s->tag);
+  i += SUB_INDENT;
+  complain_at_indent (first, &i, _("previous declaration"));
 }
 
 static void
 semantic_type_redeclaration (semantic_type *s, const char *what, location first,
                              location second)
 {
-  complain_at (second, _("%s redeclaration for <%s>"), what, s->tag);
-  complain_at (first, _("previous declaration"));
+  unsigned i = 0;
+  complain_at_indent (second, &i, _("%s redeclaration for <%s>"), what, s->tag);
+  i += SUB_INDENT;
+  complain_at_indent (first, &i, _("previous declaration"));
 }
 
 
@@ -515,6 +519,7 @@ symbol_pack_processor (void *this, void *null ATTRIBUTE_UNUSED)
 static void
 user_token_number_redeclaration (int num, symbol *first, symbol *second)
 {
+  unsigned i = 0;
   /* User token numbers are not assigned during the parsing, but in a
      second step, via a traversal of the symbol table sorted on tag.
 
@@ -526,11 +531,13 @@ user_token_number_redeclaration (int num, symbol *first, symbol *second)
       first = second;
       second = tmp;
     }
-  complain_at (second->location,
-               _("user token number %d redeclaration for %s"),
-               num, second->tag);
-  complain_at (first->location, _("previous declaration for %s"),
-               first->tag);
+  complain_at_indent (second->location, &i,
+                      _("user token number %d redeclaration for %s"),
+                      num, second->tag);
+  i += SUB_INDENT;
+  complain_at_indent (first->location, &i,
+                      _("previous declaration for %s"),
+                      first->tag);
 }
 
 /*--------------------------------------------------.
@@ -923,10 +930,12 @@ default_tagged_destructor_set (code_props const *destructor)
 {
   if (default_tagged_destructor.code)
     {
-      complain_at (destructor->location,
-                   _("redeclaration for default tagged %%destructor"));
-      complain_at (default_tagged_destructor.location,
-                  _("previous declaration"));
+      unsigned i = 0;
+      complain_at_indent (destructor->location, &i,
+                          _("redeclaration for default tagged %%destructor"));
+      i += SUB_INDENT;
+      complain_at_indent (default_tagged_destructor.location, &i,
+                         _("previous declaration"));
     }
   default_tagged_destructor = *destructor;
 }
@@ -936,10 +945,12 @@ default_tagless_destructor_set (code_props const *destructor)
 {
   if (default_tagless_destructor.code)
     {
-      complain_at (destructor->location,
-                   _("redeclaration for default tagless %%destructor"));
-      complain_at (default_tagless_destructor.location,
-                  _("previous declaration"));
+      unsigned i = 0;
+      complain_at_indent (destructor->location, &i,
+                          _("redeclaration for default tagless %%destructor"));
+      i += SUB_INDENT;
+      complain_at_indent (default_tagless_destructor.location, &i,
+                          _("previous declaration"));
     }
   default_tagless_destructor = *destructor;
 }
@@ -949,10 +960,12 @@ default_tagged_printer_set (code_props const *printer)
 {
   if (default_tagged_printer.code)
     {
-      complain_at (printer->location,
-                   _("redeclaration for default tagged %%printer"));
-      complain_at (default_tagged_printer.location,
-                  _("previous declaration"));
+      unsigned i = 0;
+      complain_at_indent (printer->location, &i,
+                          _("redeclaration for default tagged %%printer"));
+      i += SUB_INDENT;
+      complain_at_indent (default_tagged_printer.location, &i,
+                         _("previous declaration"));
     }
   default_tagged_printer = *printer;
 }
@@ -962,10 +975,12 @@ default_tagless_printer_set (code_props const *printer)
 {
   if (default_tagless_printer.code)
     {
-      complain_at (printer->location,
-                   _("redeclaration for default tagless %%printer"));
-      complain_at (default_tagless_printer.location,
-                  _("previous declaration"));
+      unsigned i = 0;
+      complain_at_indent (printer->location, &i,
+                          _("redeclaration for default tagless %%printer"));
+      i += SUB_INDENT;
+      complain_at_indent (default_tagless_printer.location, &i,
+                         _("previous declaration"));
     }
   default_tagless_printer = *printer;
 }
index 7d8cf98..b54f5d7 100644 (file)
@@ -1,6 +1,6 @@
 /* Definitions for symtab.c and callers, part of Bison.
 
-   Copyright (C) 1984, 1989, 1992, 2000-2002, 2004-2007, 2009-2012 Free
+   Copyright (C) 1984, 1989, 1992, 2000-2002, 2004-2007, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 1ae6a6b..f40e0fc 100644 (file)
@@ -1,6 +1,6 @@
 /* System-dependent definitions for Bison.
 
-   Copyright (C) 2000-2007, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2000-2007, 2009-2013 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
 # include <stddef.h>
 # include <stdlib.h>
 # include <string.h>
-
-# if HAVE_SYS_TYPES_H
-#  include <sys/types.h>
-# endif
-
 # include <unistd.h>
 # include <inttypes.h>
 
+#define ARRAY_CARDINALITY(Array) (sizeof (Array) / sizeof *(Array))
+#define STREQ(L, R)  (strcmp(L, R) == 0)
+#define STRNEQ(L, R) (!STREQ(L, R))
+
 # ifndef UINTPTR_MAX
 /* This isn't perfect, but it's good enough for Bison, which needs
    only to hash pointers.  */
 typedef size_t uintptr_t;
 # endif
 
-// Version mismatch.
+/* Version mismatch. */
 # define EX_MISMATCH 63
 
 /*---------.
@@ -105,7 +104,6 @@ typedef size_t uintptr_t;
 #  define ATTRIBUTE_UNUSED __attribute__ ((__unused__))
 # endif
 
-# define FUNCTION_PRINT() fprintf (stderr, "%s: ", __func__)
 
 /*------.
 | NLS.  |
@@ -204,7 +202,10 @@ typedef size_t uintptr_t;
   } while (0)
 
 
+/* Append the ending 0, finish Obs, and return the string.  */
 
+# define obstack_finish0(Obs)                           \
+  (obstack_1grow (Obs, '\0'), (char *) obstack_finish (Obs))
 
 
 /*-----------------------------------------.
index eb827b7..9a851a9 100644 (file)
@@ -1,6 +1,6 @@
 /* Output the generated parsing program for Bison.
 
-   Copyright (C) 1984, 1986, 1989, 1992, 2000-2006, 2009-2012 Free
+   Copyright (C) 1984, 1986, 1989, 1992, 2000-2006, 2009-2013 Free
    Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
index 8b5c1fa..c631584 100644 (file)
@@ -1,6 +1,6 @@
 /* Prepare the LALR and GLR parser tables.
 
-   Copyright (C) 2002, 2004, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002, 2004, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 62d09ca..2278db5 100644 (file)
@@ -1,6 +1,6 @@
 /* Keep a unique copy of strings.
 
-   Copyright (C) 2002-2005, 2009-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2005, 2009-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
index 913da39..d3178d7 100644 (file)
@@ -1,6 +1,6 @@
 /* Keeping a unique copy of strings.
 
-   Copyright (C) 2002-2003, 2008-2012 Free Software Foundation, Inc.
+   Copyright (C) 2002-2003, 2008-2013 Free Software Foundation, Inc.
 
    This file is part of Bison, the GNU Compiler Compiler.
 
@@ -36,7 +36,7 @@ uniqstr uniqstr_vsprintf (char const *format, ...)
   __attribute__ ((__format__ (__printf__, 1, 2)));
 
 /* Two uniqstr values have the same value iff they are the same.  */
-#define UNIQSTR_EQ(USTR1, USTR2) ((USTR1) == (USTR2))
+#define UNIQSTR_EQ(USTR1, USTR2) (!!((USTR1) == (USTR2)))
 
 /* Compare two uniqstr a la strcmp: negative for <, nul for =, and
    positive for >.  Undefined order, relies on addresses.  */
index b6848d7..a11adde 100644 (file)
@@ -2,7 +2,7 @@
 
 ## Makefile for Bison testsuite.
 
-## Copyright (C) 2000-2012 Free Software Foundation, Inc.
+## Copyright (C) 2000-2013 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
index e61f1c4..6e5e1ca 100644 (file)
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.12.2 from Makefile.am.
+# Makefile.in generated by automake 1.13.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2012 Free Software Foundation, Inc.
@@ -62,7 +62,7 @@ POST_UNINSTALL = :
 build_triplet = @build@
 host_triplet = @host@
 subdir = tests
-DIST_COMMON = $(srcdir)/Makefile.am $(srcdir)/Makefile.in \
+DIST_COMMON = $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
        $(srcdir)/atlocal.in $(srcdir)/bison.in
 ACLOCAL_M4 = $(top_srcdir)/aclocal.m4
 am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
@@ -79,6 +79,7 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/error.m4 $(top_srcdir)/m4/exponentd.m4 \
        $(top_srcdir)/m4/exponentf.m4 $(top_srcdir)/m4/exponentl.m4 \
        $(top_srcdir)/m4/extensions.m4 \
+       $(top_srcdir)/m4/extern-inline.m4 \
        $(top_srcdir)/m4/fatal-signal.m4 $(top_srcdir)/m4/fcntl-o.m4 \
        $(top_srcdir)/m4/fcntl.m4 $(top_srcdir)/m4/fcntl_h.m4 \
        $(top_srcdir)/m4/flex.m4 $(top_srcdir)/m4/float_h.m4 \
@@ -86,11 +87,12 @@ am__aclocal_m4_deps = $(top_srcdir)/m4/00gnulib.m4 \
        $(top_srcdir)/m4/fpieee.m4 $(top_srcdir)/m4/fprintf-posix.m4 \
        $(top_srcdir)/m4/frexp.m4 $(top_srcdir)/m4/frexpl.m4 \
        $(top_srcdir)/m4/fseterr.m4 $(top_srcdir)/m4/fstat.m4 \
-       $(top_srcdir)/m4/getdtablesize.m4 $(top_srcdir)/m4/getopt.m4 \
+       $(top_srcdir)/m4/getdelim.m4 $(top_srcdir)/m4/getdtablesize.m4 \
+       $(top_srcdir)/m4/getline.m4 $(top_srcdir)/m4/getopt.m4 \
        $(top_srcdir)/m4/gettext.m4 $(top_srcdir)/m4/glibc21.m4 \
        $(top_srcdir)/m4/gnulib-common.m4 \
        $(top_srcdir)/m4/gnulib-comp.m4 $(top_srcdir)/m4/iconv.m4 \
-       $(top_srcdir)/m4/include_next.m4 $(top_srcdir)/m4/inline.m4 \
+       $(top_srcdir)/m4/include_next.m4 \
        $(top_srcdir)/m4/intlmacosx.m4 $(top_srcdir)/m4/intmax_t.m4 \
        $(top_srcdir)/m4/inttypes-pri.m4 $(top_srcdir)/m4/inttypes.m4 \
        $(top_srcdir)/m4/inttypes_h.m4 $(top_srcdir)/m4/isnan.m4 \
@@ -182,6 +184,7 @@ am__can_run_installinfo = \
     n|no|NO) false;; \
     *) (install-info --version) >/dev/null 2>&1;; \
   esac
+am__tagged_files = $(HEADERS) $(SOURCES) $(TAGS_FILES) $(LISP)
 DISTFILES = $(DIST_COMMON) $(DIST_SOURCES) $(TEXINFOS) $(EXTRA_DIST)
 pkglibexecdir = @pkglibexecdir@
 ACLOCAL = @ACLOCAL@
@@ -199,6 +202,7 @@ AUTOM4TE = @AUTOM4TE@
 AUTOMAKE = @AUTOMAKE@
 AWK = @AWK@
 BISON_CXX_WORKS = @BISON_CXX_WORKS@
+BISON_C_WORKS = @BISON_C_WORKS@
 BISON_LOCALEDIR = @BISON_LOCALEDIR@
 BITSIZEOF_PTRDIFF_T = @BITSIZEOF_PTRDIFF_T@
 BITSIZEOF_SIG_ATOMIC_T = @BITSIZEOF_SIG_ATOMIC_T@
@@ -218,9 +222,12 @@ CPPFLAGS = @CPPFLAGS@
 CXX = @CXX@
 CXXDEPMODE = @CXXDEPMODE@
 CXXFLAGS = @CXXFLAGS@
+CXX_COMPILER_POSIXLY_CORRECT = @CXX_COMPILER_POSIXLY_CORRECT@
 CYGPATH_W = @CYGPATH_W@
+C_COMPILER_POSIXLY_CORRECT = @C_COMPILER_POSIXLY_CORRECT@
 DEFS = @DEFS@
 DEPDIR = @DEPDIR@
+DOT = @DOT@
 ECHO_C = @ECHO_C@
 ECHO_N = @ECHO_N@
 ECHO_T = @ECHO_T@
@@ -492,6 +499,7 @@ GNULIB_ROUNDF = @GNULIB_ROUNDF@
 GNULIB_ROUNDL = @GNULIB_ROUNDL@
 GNULIB_RPMATCH = @GNULIB_RPMATCH@
 GNULIB_SCANF = @GNULIB_SCANF@
+GNULIB_SECURE_GETENV = @GNULIB_SECURE_GETENV@
 GNULIB_SETENV = @GNULIB_SETENV@
 GNULIB_SETHOSTNAME = @GNULIB_SETHOSTNAME@
 GNULIB_SIGACTION = @GNULIB_SIGACTION@
@@ -831,6 +839,7 @@ HAVE_RINTL = @HAVE_RINTL@
 HAVE_RPMATCH = @HAVE_RPMATCH@
 HAVE_SAME_LONG_DOUBLE_AS_DOUBLE = @HAVE_SAME_LONG_DOUBLE_AS_DOUBLE@
 HAVE_SCHED_H = @HAVE_SCHED_H@
+HAVE_SECURE_GETENV = @HAVE_SECURE_GETENV@
 HAVE_SETENV = @HAVE_SETENV@
 HAVE_SETHOSTNAME = @HAVE_SETHOSTNAME@
 HAVE_SIGACTION = @HAVE_SIGACTION@
@@ -1017,6 +1026,7 @@ NEXT_TIME_H = @NEXT_TIME_H@
 NEXT_UNISTD_H = @NEXT_UNISTD_H@
 NEXT_WCHAR_H = @NEXT_WCHAR_H@
 NEXT_WCTYPE_H = @NEXT_WCTYPE_H@
+NO_STRICT_ALIAS_CXXFLAGS = @NO_STRICT_ALIAS_CXXFLAGS@
 OBJEXT = @OBJEXT@
 PACKAGE = @PACKAGE@
 PACKAGE_BUGREPORT = @PACKAGE_BUGREPORT@
@@ -1027,6 +1037,7 @@ PACKAGE_TARNAME = @PACKAGE_TARNAME@
 PACKAGE_URL = @PACKAGE_URL@
 PACKAGE_VERSION = @PACKAGE_VERSION@
 PATH_SEPARATOR = @PATH_SEPARATOR@
+PERL = @PERL@
 POSUB = @POSUB@
 PRAGMA_COLUMNS = @PRAGMA_COLUMNS@
 PRAGMA_SYSTEM_HEADER = @PRAGMA_SYSTEM_HEADER@
@@ -1157,6 +1168,7 @@ REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADDOPEN = @REPLACE_POSIX_SPAWN_FILE_ACTIONS_ADD
 REPLACE_PREAD = @REPLACE_PREAD@
 REPLACE_PRINTF = @REPLACE_PRINTF@
 REPLACE_PTHREAD_SIGMASK = @REPLACE_PTHREAD_SIGMASK@
+REPLACE_PTSNAME = @REPLACE_PTSNAME@
 REPLACE_PTSNAME_R = @REPLACE_PTSNAME_R@
 REPLACE_PUTENV = @REPLACE_PUTENV@
 REPLACE_PWRITE = @REPLACE_PWRITE@
@@ -1251,6 +1263,7 @@ WARN_CFLAGS = @WARN_CFLAGS@
 WARN_CFLAGS_TEST = @WARN_CFLAGS_TEST@
 WARN_CXXFLAGS = @WARN_CXXFLAGS@
 WARN_CXXFLAGS_TEST = @WARN_CXXFLAGS_TEST@
+WARN_NO_NULL_CONVERSION_CXXFLAGS = @WARN_NO_NULL_CONVERSION_CXXFLAGS@
 WCHAR_T_SUFFIX = @WCHAR_T_SUFFIX@
 WERROR_CFLAGS = @WERROR_CFLAGS@
 WERROR_CXXFLAGS = @WERROR_CXXFLAGS@
@@ -1354,9 +1367,9 @@ $(srcdir)/Makefile.in:  $(srcdir)/Makefile.am  $(am__configure_deps)
              exit 1;; \
          esac; \
        done; \
-       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnits tests/Makefile'; \
+       echo ' cd $(top_srcdir) && $(AUTOMAKE) --gnu tests/Makefile'; \
        $(am__cd) $(top_srcdir) && \
-         $(AUTOMAKE) --gnits tests/Makefile
+         $(AUTOMAKE) --gnu tests/Makefile
 .PRECIOUS: Makefile
 Makefile: $(srcdir)/Makefile.in $(top_builddir)/config.status
        @case '$?' in \
@@ -1379,11 +1392,9 @@ atlocal: $(top_builddir)/config.status $(srcdir)/atlocal.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
 bison: $(top_builddir)/config.status $(srcdir)/bison.in
        cd $(top_builddir) && $(SHELL) ./config.status $(subdir)/$@
-tags: TAGS
-TAGS:
+tags TAGS:
 
-ctags: CTAGS
-CTAGS:
+ctags CTAGS:
 
 cscope cscopelist:
 
@@ -1525,15 +1536,16 @@ uninstall-am:
 .MAKE: check-am install-am install-strip
 
 .PHONY: all all-am check check-am check-local clean clean-generic \
-       clean-local distclean distclean-generic distdir dvi dvi-am \
-       html html-am info info-am install install-am install-data \
-       install-data-am install-dvi install-dvi-am install-exec \
-       install-exec-am install-html install-html-am install-info \
-       install-info-am install-man install-pdf install-pdf-am \
-       install-ps install-ps-am install-strip installcheck \
-       installcheck-am installcheck-local installdirs \
-       maintainer-clean maintainer-clean-generic mostlyclean \
-       mostlyclean-generic pdf pdf-am ps ps-am uninstall uninstall-am
+       clean-local cscopelist-am ctags-am distclean distclean-generic \
+       distdir dvi dvi-am html html-am info info-am install \
+       install-am install-data install-data-am install-dvi \
+       install-dvi-am install-exec install-exec-am install-html \
+       install-html-am install-info install-info-am install-man \
+       install-pdf install-pdf-am install-ps install-ps-am \
+       install-strip installcheck installcheck-am installcheck-local \
+       installdirs maintainer-clean maintainer-clean-generic \
+       mostlyclean mostlyclean-generic pdf pdf-am ps ps-am tags-am \
+       uninstall uninstall-am
 
 
 $(srcdir)/package.m4: $(top_srcdir)/configure
index 1ec8ef9..35e49c5 100644 (file)
@@ -1,6 +1,6 @@
 # Executing Actions.                               -*- Autotest -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
@@ -69,6 +69,184 @@ AT_PARSER_CHECK([./input], 0,
 AT_CLEANUP
 
 
+## ------------------ ##
+## Initial location.  ##
+## ------------------ ##
+
+# AT_TEST(SKELETON-NAME, DIRECTIVES, [MORE-DIRECTIVES], [LOCATION = 1.1])
+# -----------------------------------------------------------------------
+# Check that the initial location is correct.
+m4_pushdef([AT_TEST],
+[AT_SETUP([Initial location: $1 $2])
+
+AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1" $2])
+AT_DATA_GRAMMAR([[input.y]],
+[[%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "$1"
+]$2[
+]$3[
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+]AT_YYERROR_DECLARE[
+]AT_YYLEX_DECLARE[
+}
+%%
+exp: { ]AT_SKEL_CC_IF([[std::cerr << @$ << std::endl]],
+                      [[YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr)]])[; }
+%%
+]AT_YYERROR_DEFINE[
+
+]AT_YYLEX_PROTOTYPE[
+{]AT_PURE_IF([
+  YYUSE(lvalp);
+  YYUSE(llocp);], [AT_SKEL_CC_IF([
+  YYUSE(lvalp);
+  YYUSE(llocp);])])[
+  return 'x';
+}
+
+int
+main (void)
+{]AT_SKEL_CC_IF([[
+  yy::parser p;
+  p.set_debug_level (!!getenv("YYDEBUG"));
+  return p.parse ();]], [[
+  yydebug = !!getenv("YYDEBUG");
+  return !!yyparse (]AT_PARAM_IF([0])[);]])[
+}
+]])
+
+AT_FULL_COMPILE([input])
+AT_PARSER_CHECK([./input], 1, [],
+[m4_default([$4], [1.1])
+m4_default([$4], [1.1])[: syntax error
+]])
+AT_BISON_OPTION_POPDEFS
+AT_CLEANUP
+])
+
+## FIXME: test Java, and iterate over skeletons.
+AT_TEST([yacc.c])
+AT_TEST([yacc.c], [%define api.pure full])
+AT_TEST([yacc.c], [%define api.pure %parse-param { int x }])
+AT_TEST([yacc.c], [%define api.push-pull both])
+AT_TEST([yacc.c], [%define api.push-pull both %define api.pure full])
+AT_TEST([glr.c])
+AT_TEST([glr.c], [%define api.pure])
+AT_TEST([lalr1.cc])
+AT_TEST([glr.cc])
+
+## A very different test, based on PostgreSQL's implementation of the
+## locations.  See
+## http://lists.gnu.org/archive/html/bug-bison/2012-11/msg00023.html
+##
+## Weirdly enough, to trigger the warning with GCC 4.7, we must not
+## use fprintf, so run the test twice: once to check the warning
+## (absence thereof), and another time to check the value.
+AT_TEST([yacc.c], [%define api.pure full],
+[[%{
+# define YYLTYPE int
+# define YY_LOCATION_PRINT(Stream, Loc)      \
+   (void) (Loc)
+# define YYLLOC_DEFAULT(Current, Rhs, N)    \
+  (Current) = ((Rhs)[N ? 1 : 0])
+%}
+]],
+[@&t@])
+
+AT_TEST([yacc.c], [%define api.pure full],
+[[%{
+# define YYLTYPE int
+# define YY_LOCATION_PRINT(Stream, Loc)      \
+    fprintf ((Stream), "%d", (Loc))
+# define YYLLOC_DEFAULT(Current, Rhs, N)    \
+  (Current) = ((Rhs)[N ? 1 : 0])
+%}
+]],
+[0])
+
+
+m4_popdef([AT_TEST])
+
+
+
+## ---------------- ##
+## Location Print.  ##
+## ---------------- ##
+
+# AT_TEST(SKELETON-NAME, DIRECTIVES, [MORE-DIRECTIVES], [LOCATION = 1.1])
+# -----------------------------------------------------------------------
+# Check that the initial location is correct.
+m4_pushdef([AT_TEST],
+[AT_SETUP([Location print: $1 $2])
+
+AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1" $2])
+AT_DATA_GRAMMAR([[input.y]],
+[[%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "$1"
+]$2[
+]$3[
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+]AT_YYERROR_DECLARE[
+]AT_YYLEX_DECLARE[
+}
+%%
+exp:;
+%%
+]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE[
+
+int
+main (void)
+{
+#define TEST(L1, C1, L2, C2)          \
+  ]AT_LOC_FIRST_LINE[ = L1;           \
+  ]AT_LOC_FIRST_COLUMN[ = C1;         \
+  ]AT_LOC_LAST_LINE[ = L2;            \
+  ]AT_LOC_LAST_COLUMN[ = C2;          \
+  ]YY_LOCATION_PRINT(stdout, AT_LOC)[;\
+  putchar ('\n');
+
+  TEST(1, 1, 1, 1);
+  TEST(2, 1, 2, 10);
+  TEST(3, 1, 4, 1);
+  TEST(5, 1, 6, 10);
+
+  TEST(7, 2, 0, 2);
+  TEST(8, 0, 8, 0);
+  return 0;
+}
+]])
+
+AT_FULL_COMPILE([input])
+AT_PARSER_CHECK([./input], 0,
+[[1.1
+2.1-9
+3.1-4.0
+5.1-6.9
+7.2
+8.0
+]])
+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])
 
 
 
@@ -159,8 +337,7 @@ main (void)
 }
 ]])
 
-AT_BISON_CHECK([[-o input.c input.y]])
-AT_COMPILE([[input]])
+AT_FULL_COMPILE([input])
 AT_PARSER_CHECK([[./input]], [[0]],
 [[6
 ]])
@@ -264,7 +441,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -305,7 +482,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -557,7 +734,7 @@ AT_BISON_OPTION_POPDEFS
 # AT_CHECK_PRINTER_AND_DESTRUCTOR([BISON-OPTIONS], [UNION-FLAG], [SKIP_FLAG])
 # ---------------------------------------------------------------------------
 m4_define([AT_CHECK_PRINTER_AND_DESTRUCTOR],
-[AT_SETUP([Printers and Destructors $2: $1])
+[AT_SETUP([Printers and Destructors$2]m4_ifval([$1], [[: $1]]))
 
 $3
 _AT_CHECK_PRINTER_AND_DESTRUCTOR($[1], $[2], $[3], $[4],
@@ -572,13 +749,13 @@ AT_CLEANUP
 
 
 AT_CHECK_PRINTER_AND_DESTRUCTOR([])
-AT_CHECK_PRINTER_AND_DESTRUCTOR([], [with union])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([], [ with union])
 
 AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"])
-AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [with union])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([%defines %skeleton "lalr1.cc"], [ with union])
 
 AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser])
-AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [with union])
+AT_CHECK_PRINTER_AND_DESTRUCTOR([%glr-parser], [ with union])
 
 
 
@@ -595,10 +772,6 @@ AT_DATA_GRAMMAR([[input.y]],
 [[%error-verbose
 %debug
 %locations
-%initial-action {
-  @$.first_line = @$.last_line = 1;
-  @$.first_column = @$.last_column = 1;
-}
 
 %{
 # include <stdio.h>
@@ -656,29 +829,29 @@ AT_PARSER_CHECK([./input], 1,
 ]],
 [[Starting parse
 Entering state 0
-Reading a token: Next token is token 'a' (1.1-1.1: <> printer for 'a' @ 1)
-Shifting token 'a' (1.1-1.1: <> printer for 'a' @ 1)
+Reading a token: Next token is token 'a' (1.1: <> printer for 'a' @ 1)
+Shifting token 'a' (1.1: <> printer for 'a' @ 1)
 Entering state 1
-Reading a token: Next token is token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
-Shifting token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
+Reading a token: Next token is token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
+Shifting token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
 Entering state 3
-Reading a token: Next token is token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
-Shifting token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
+Reading a token: Next token is token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
+Shifting token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
 Entering state 5
-Reading a token: Next token is token 'd' (1.4-1.4: <> printer for 'd' @ 4)
-Shifting token 'd' (1.4-1.4: <> printer for 'd' @ 4)
+Reading a token: Next token is token 'd' (1.4: <> printer for 'd' @ 4)
+Shifting token 'd' (1.4: <> printer for 'd' @ 4)
 Entering state 6
 Reading a token: Now at end of input.
-1.5-4: syntax error, unexpected $end, expecting 'e'
-Error: popping token 'd' (1.4-1.4: <> printer for 'd' @ 4)
+1.5: syntax error, unexpected $end, expecting 'e'
+Error: popping token 'd' (1.4: <> printer for 'd' @ 4)
 Stack now 0 1 3 5
-Error: popping token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
+Error: popping token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
 Stack now 0 1 3
-Error: popping token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
+Error: popping token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
 Stack now 0 1
-Error: popping token 'a' (1.1-1.1: <> printer for 'a' @ 1)
+Error: popping token 'a' (1.1: <> printer for 'a' @ 1)
 Stack now 0
-Cleanup: discarding lookahead token $end (1.5-1.5: )
+Cleanup: discarding lookahead token $end (1.5: )
 Stack now 0
 ]])
 
@@ -829,10 +1002,6 @@ AT_DATA_GRAMMAR([[input]]$1[[.y]],
 [[%error-verbose
 %debug
 %locations
-%initial-action {
-  @$.first_line = @$.last_line = 1;
-  @$.first_column = @$.last_column = 1;
-}
 
 %{
 # include <stdio.h>
@@ -899,16 +1068,16 @@ AT_PARSER_CHECK([./input$1], 0,
 ]],
 [[Starting parse
 Entering state 0
-Reducing stack by rule 1 (line 46):
--> $$ = nterm start (1.1-1.1: <]]kind[[> for 'S' @ 1)
+Reducing stack by rule 1 (line 42):
+-> $$ = nterm start (1.1: <]]kind[[> for 'S' @ 1)
 Stack now 0
 Entering state 1
 Reading a token: Now at end of input.
-Shifting token END (1.1-1.1: <]]kind[[> for 'E' @ 1)
+Shifting token END (1.1: <]]kind[[> for 'E' @ 1)
 Entering state 2
 Stack now 0 1 2
-Cleanup: popping token END (1.1-1.1: <]]kind[[> for 'E' @ 1)
-Cleanup: popping nterm start (1.1-1.1: <]]kind[[> for 'S' @ 1)
+Cleanup: popping token END (1.1: <]]kind[[> for 'E' @ 1)
+Cleanup: popping nterm start (1.1: <]]kind[[> for 'S' @ 1)
 ]])
 
 m4_popdef([kind])
@@ -1133,7 +1302,16 @@ AT_BISON_OPTION_POPDEFS
 
 AT_BISON_CHECK([-o input.c input.y], 0,,
 [[input.y:33.3-23: warning: unset value: $$
-input.y:30.3-35.37: warning: unused value: $3
+input.y:32.3-23: warning: unused value: $3
+]])
+
+AT_BISON_CHECK([-fcaret -o input.c input.y], 0,,
+[[input.y:33.3-23: warning: unset value: $$
+   {           @$ = 4; } // Only used.
+   ^^^^^^^^^^^^^^^^^^^^^
+input.y:32.3-23: warning: unused value: $3
+   { USE ($$); @$ = 3; } // Only set.
+   ^^^^^^^^^^^^^^^^^^^^^
 ]])
 
 AT_COMPILE([input])
@@ -1237,7 +1415,7 @@ AT_CHECK_ACTION_LOCATIONS([[%printer]])
 # 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
+# FIXME: Not actually checking %destructor, but it's the same code as
 # %printer...
 #
 # To do that, use a semantic value that has two fields (sem_type),
@@ -1295,17 +1473,6 @@ AT_DATA_GRAMMAR([[input.y]],
 %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;
@@ -1429,41 +1596,41 @@ AT_BISON_OPTION_POPDEFS
 
 AT_BISON_CHECK([[-o input.c input.y]], [0], [],
 [[input.y:8.48: warning: a ';' might be needed at the end of action code
-input.y:8.48: warning: future versions of Bison will not add the ';'
+input.y:8.48:     future versions of Bison will not add the ';'
 input.y:9.48: warning: a ';' might be needed at the end of action code
-input.y:9.48: warning: future versions of Bison will not add the ';'
+input.y:9.48:     future versions of Bison will not add the ';'
 input.y:10.48: warning: a ';' might be needed at the end of action code
-input.y:10.48: warning: future versions of Bison will not add the ';'
+input.y:10.48:     future versions of Bison will not add the ';'
 input.y:11.48: warning: a ';' might be needed at the end of action code
-input.y:11.48: warning: future versions of Bison will not add the ';'
+input.y:11.48:     future versions of Bison will not add the ';'
 input.y:12.48: warning: a ';' might be needed at the end of action code
-input.y:12.48: warning: future versions of Bison will not add the ';'
+input.y:12.48:     future versions of Bison will not add the ';'
 input.y:13.48: warning: a ';' might be needed at the end of action code
-input.y:13.48: warning: future versions of Bison will not add the ';'
+input.y:13.48:     future versions of Bison will not add the ';'
 input.y:20.1: warning: a ';' might be needed at the end of action code
-input.y:20.1: warning: future versions of Bison will not add the ';'
+input.y:20.1:     future versions of Bison will not add the ';'
 input.y:21.1: warning: a ';' might be needed at the end of action code
-input.y:21.1: warning: future versions of Bison will not add the ';'
+input.y:21.1:     future versions of Bison will not add the ';'
 input.y:22.1: warning: a ';' might be needed at the end of action code
-input.y:22.1: warning: future versions of Bison will not add the ';'
+input.y:22.1:     future versions of Bison will not add the ';'
 input.y:23.1: warning: a ';' might be needed at the end of action code
-input.y:23.1: warning: future versions of Bison will not add the ';'
+input.y:23.1:     future versions of Bison will not add the ';'
 input.y:24.1: warning: a ';' might be needed at the end of action code
-input.y:24.1: warning: future versions of Bison will not add the ';'
+input.y:24.1:     future versions of Bison will not add the ';'
 input.y:25.1: warning: a ';' might be needed at the end of action code
-input.y:25.1: warning: future versions of Bison will not add the ';'
+input.y:25.1:     future versions of Bison will not add the ';'
 input.y:31.1: warning: a ';' might be needed at the end of action code
-input.y:31.1: warning: future versions of Bison will not add the ';'
+input.y:31.1:     future versions of Bison will not add the ';'
 input.y:32.1: warning: a ';' might be needed at the end of action code
-input.y:32.1: warning: future versions of Bison will not add the ';'
+input.y:32.1:     future versions of Bison will not add the ';'
 input.y:33.1: warning: a ';' might be needed at the end of action code
-input.y:33.1: warning: future versions of Bison will not add the ';'
+input.y:33.1:     future versions of Bison will not add the ';'
 input.y:34.1: warning: a ';' might be needed at the end of action code
-input.y:34.1: warning: future versions of Bison will not add the ';'
+input.y:34.1:     future versions of Bison will not add the ';'
 input.y:35.1: warning: a ';' might be needed at the end of action code
-input.y:35.1: warning: future versions of Bison will not add the ';'
+input.y:35.1:     future versions of Bison will not add the ';'
 input.y:36.1: warning: a ';' might be needed at the end of action code
-input.y:36.1: warning: future versions of Bison will not add the ';'
+input.y:36.1:     future versions of Bison will not add the ';'
 ]])
 
 AT_MATCHES_CHECK([input.c], [[/\* TEST:N:2 \*/ \}$]],       [[3]])
index d059d63..72e15f3 100644 (file)
@@ -1,7 +1,7 @@
 # @configure_input@                                    -*- shell-script -*-
 # Configurable variable values for Bison test suite.
 
-# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2013 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
 # We need `config.h'.
 CPPFLAGS="-I$abs_top_builddir/lib @CPPFLAGS@"
 
+# Don't just check if $POSIXLY_CORRECT is set, as Bash, when launched
+# as /bin/sh, sets the shell variable POSIXLY_CORRECT to y, but not
+# the environment variable.
+if env | grep '^POSIXLY_CORRECT=' >/dev/null; then
+  POSIXLY_CORRECT_IS_EXPORTED=true
+else
+  POSIXLY_CORRECT_IS_EXPORTED=false
+fi
+
 ## ------------------- ##
 ## C/C++ Compilation.  ##
 ## ------------------- ##
@@ -29,31 +38,37 @@ CPPFLAGS="-I$abs_top_builddir/lib @CPPFLAGS@"
 # Is the compiler GCC?
 GCC='@GCC@'
 
-# We want no optimization, as they uncover warnings (therefore,
-# failures) about uninitialized variables in the test suite.  FIXME:
-# fix the warnings, not the flags.
-  O0CFLAGS=`echo '@CFLAGS@'   | sed 's/-O[0-9s] *//g'`
-O0CXXFLAGS=`echo '@CXXFLAGS@' | sed 's/-O[0-9s] *//g'`
-
 # Sometimes a test group needs to ignore gcc warnings, so it locally
 # sets CFLAGS to this.
-  NO_WERROR_CFLAGS="$O0CFLAGS   @WARN_CFLAGS@   @WARN_CFLAGS_TEST@"
-NO_WERROR_CXXFLAGS="$O0CXXFLAGS @WARN_CXXFLAGS@ @WARN_CXXFLAGS_TEST@"
+  NO_WERROR_CFLAGS='@CFLAGS@   @WARN_CFLAGS@   @WARN_CFLAGS_TEST@'
+NO_WERROR_CXXFLAGS='@CXXFLAGS@ @WARN_CXXFLAGS@ @WARN_CXXFLAGS_TEST@'
 
 # But most of the time, we want -Werror.
   CFLAGS="$NO_WERROR_CFLAGS   @WERROR_CFLAGS@"
 CXXFLAGS="$NO_WERROR_CXXFLAGS @WERROR_CXXFLAGS@"
 
-# If 'exit 77'; skip all C++ tests; otherwise ':'.
+# If 'exit 77'; skip all C/C++ tests; otherwise ':'.
+BISON_C_WORKS='@BISON_C_WORKS@'
 BISON_CXX_WORKS='@BISON_CXX_WORKS@'
 
+# Whether the compiler supports POSIXLY_CORRECT defined.
+: ${C_COMPILER_POSIXLY_CORRECT='@C_COMPILER_POSIXLY_CORRECT@'}
+: ${CXX_COMPILER_POSIXLY_CORRECT='@CXX_COMPILER_POSIXLY_CORRECT@'}
+
+if $POSIXLY_CORRECT_IS_EXPORTED; then
+  $C_COMPILER_POSIXLY_CORRECT ||
+    BISON_C_WORKS="as_fn_error 77 POSIXLY_CORRECT"
+  $CXX_COMPILER_POSIXLY_CORRECT ||
+    BISON_CXX_WORKS="as_fn_error 77 POSIXLY_CORRECT"
+fi
+
 # Handle --compile-c-with-cxx here, once CXX and CXXFLAGS are known.
 if "$at_arg_compile_c_with_cxx"; then
   CC_IS_CXX=1
   CC=$CXX
-  O0CFLAGS=$O0CXXFLAGS
   NO_WERROR_CFLAGS=$NO_WERROR_CXXFLAGS
   CFLAGS=$CXXFLAGS
+  BISON_C_WORKS=$BISON_CXX_WORKS
 else
   CC_IS_CXX=0
 fi
@@ -63,24 +78,26 @@ fi
 ## Other.  ##
 ## ------- ##
 
-# Are special link options needed?
-LDFLAGS='@LDFLAGS@'
-
-# Are special libraries needed?
-LIBS="$abs_top_builddir/lib/libbison.a @LIBS@ @INTLLIBS@"
-
 # Empty if no javac was found
 CONF_JAVAC='@CONF_JAVAC@'
 
 # Empty if no Java VM was found
 CONF_JAVA='@CONF_JAVA@'
 
-# Empty if no xsltproc was found
-: ${XSLTPROC='@XSLTPROC@'}
-
 # We need egrep.
 : ${EGREP='@EGREP@'}
 
 # Use simple quotes (lib/quote.c).
 LC_CTYPE=C
 export LC_CTYPE
+
+# Are special link options needed?
+LDFLAGS='@LDFLAGS@'
+
+# Are special libraries needed?
+LIBS="$abs_top_builddir/lib/libbison.a @LIBS@ @INTLLIBS@"
+
+# Empty if no xsltproc was found
+: ${XSLTPROC='@XSLTPROC@'}
+
+: ${PERL='@PERL@'}
index 4dfeb79..bf6add7 100644 (file)
@@ -2,7 +2,7 @@
 # @configure_input@
 # Wrapper around a non installed bison to make it work as an installed one.
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
@@ -19,7 +19,7 @@
 
 abs_top_srcdir='@abs_top_srcdir@'
 abs_top_builddir='@abs_top_builddir@'
-: ${PERL=perl}
+: ${PERL='@PERL@'}
 
 # Use the shipped files, not those installed.
 BISON_PKGDATADIR=$abs_top_srcdir/data
index 93675d4..a65f953 100644 (file)
@@ -1,6 +1,6 @@
-# Checking the output filenames.                    -*- Autotest -*-
+# Checking the C++ Features.                    -*- Autotest -*-
 
-# Copyright (C) 2004-2005, 2007, 2009-2012 Free Software Foundation,
+# Copyright (C) 2004-2005, 2007, 2009-2013 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -30,6 +30,7 @@ m4_define([AT_CHECK_DOXYGEN],
         [m4_fatal([invalid argument: $1])])
 AT_SETUP([Doxygen $1 Documentation])
 
+AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
 AT_DATA([input.yy],
 [[%skeleton "lalr1.cc"
 %locations
@@ -38,10 +39,7 @@ AT_DATA([input.yy],
 %%
 exp:;
 %%
-yy::parser::error (const location& l, const std::string& m)
-{
-  std::cerr << l << s << std::endl;
-}
+]AT_YYERROR_DEFINE[
 ]])
 
 AT_BISON_CHECK([-o input.cc input.yy], 0)
@@ -94,6 +92,7 @@ EXTRACT_STATIC         = AT_DOXYGEN_PRIVATE
 AT_CHECK([doxygen --version || exit 77], 0, ignore)
 AT_CHECK([doxygen], 0, [], [ignore])
 
+AT_BISON_OPTION_POPDEFS
 AT_CLEANUP
 
 m4_popdef([AT_DOXYGEN_PRIVATE])
@@ -182,3 +181,237 @@ AT_CHECK_NAMESPACE([[foo[3]::bar::baz]], [[-]])
 AT_CHECK_NAMESPACE([[foo::bar,baz]], [[-]])
 AT_CHECK_NAMESPACE([[foo::bar::(baz]], [[-]])
 AT_CLEANUP
+
+
+## ------------------ ##
+## Exception safety.  ##
+## ------------------ ##
+
+AT_SETUP([[Exception safety]])
+
+AT_BISON_OPTION_PUSHDEFS([%skeleton "lalr1.cc"])
+
+AT_DATA_GRAMMAR([[input.yy]],
+[[%skeleton "lalr1.cc"
+%defines // FIXME: Mandated in 2.6.
+%debug
+%error-verbose
+
+%code requires
+{
+  #include <cassert>
+  #include <cstdlib> // size_t and getenv.
+  #include <iostream>
+  #include <list>
+
+  bool debug = false;
+
+  /// A class that counts its number of instances.
+  struct Object
+  {
+    typedef std::list<const Object*> objects;
+    static objects instances;
+    char val;
+
+    static bool
+    empty ()
+    {
+      return instances.empty();
+    }
+
+    static void
+    log (Object const *o, const std::string& msg)
+    {
+      if (debug)
+        {
+          if (o)
+            std::cerr << o << "->";
+          std::cerr << msg << " {";
+          const char* sep = " ";
+          for (objects::const_iterator i = instances.begin(),
+                                       i_end = instances.end();
+               i != i_end;
+               ++i)
+            {
+              std::cerr << sep << *i;
+              sep = ", ";
+            }
+          std::cerr << " }" << std::endl;
+        }
+    }
+
+    Object (char v)
+      : val (v)
+    {
+      instances.push_back(this);
+      log (this, "Object::Object");
+    }
+
+    ~Object ()
+    {
+      instances.remove(this);
+      log (this, "Object::~Object");
+    }
+  };
+}
+
+%code
+{
+  #include <cassert>
+  #include <cstring> // strchr
+  #include <stdexcept>
+  int yylex (yy::parser::semantic_type *);
+  Object::objects Object::instances;
+  static char const *input;
+}
+
+%union
+{
+  Object *obj;
+}
+
+%initial-action
+{
+  if (strchr (input, 'i'))
+    throw std::runtime_error ("initial-action");
+}
+
+%destructor { delete $$; } <obj>;
+%printer
+{
+  yyo << $$ << " '" << $$->val << '\'';
+  if ($$->val == 'p')
+    throw std::runtime_error ("printer");
+} <obj>;
+
+%token <obj> 'a' 'E' 'e' 'p' 'R' 's' 'T'
+%type  <obj> list item
+
+%%
+
+start: list { delete $1; };
+
+list:
+  item       { $$ = $1; }
+| item list  { $$ = $1; delete $2; } // Right recursion to load the stack.
+;
+
+item:
+  'a'  { $$ = $1; }
+| 'e'  { YYUSE ($$); YYUSE($1); error (location_type(), "syntax error"); }
+// Not just 'E', otherwise we reduce when 'E' is the lookahead, and
+// then the stack is emptied, defeating the point of the test.
+| 'E' 'a' { YYUSE($1); $$ = $2; }
+| 'R'  { $$ = YY_NULL; delete $1; YYERROR; }
+| 'p'  { $$ = $1; }
+| 's'  { $$ = $1; throw std::runtime_error ("reduction"); }
+| 'T'  { $$ = YY_NULL; delete $1; YYABORT; }
+| error { $$ = YY_NULL; yyerrok; }
+;
+%%
+
+int
+yylex (yy::parser::semantic_type *lvalp)
+{
+  // 'a': no error.
+  // 'e': user action calls error.
+  // 'E': syntax error, with yyerror that throws.
+  // 'i': initial action throws.
+  // 'l': yylex throws.
+  // 'R': call YYERROR in the action
+  // 's': reduction throws.
+  // 'T': call YYABORT in the action
+  switch (int res = *input++)
+  {
+    case 'l':
+      throw std::runtime_error ("yylex");
+    default:
+      lvalp->obj = new Object (res);
+      // Fall through.
+    case 0:
+      return res;
+  }
+}
+
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
+{
+  YYUSE (l);
+  throw std::runtime_error (m);
+}
+
+int
+main (int argc, const char *argv[])
+{
+  switch (argc)
+  {
+    case 2:
+      input = argv[1];
+      break;
+    case 3:
+      assert (!strcmp (argv[1], "--debug"));
+      debug = 1;
+      input = argv[2];
+      break;
+    default:
+      abort ();
+  }
+
+  yy::parser parser;
+  debug |= !!getenv ("YYDEBUG");
+  parser.set_debug_level (debug);
+  int res = 2;
+  try
+  {
+    res = parser.parse ();
+  }
+  catch (const std::exception& e)
+  {
+    std::cerr << "exception caught: " << e.what () << std::endl;
+  }
+  catch (...)
+  {
+    std::cerr << "unknown exception caught" << std::endl;
+  }
+  Object::log (YY_NULL, "end");
+  assert (Object::empty());
+  return res;
+}
+]])
+AT_BISON_CHECK([[-o input.cc --report=all input.yy]])
+AT_COMPILE_CXX([[input]])
+
+AT_PARSER_CHECK([[./input aaaas]], [[2]], [[]],
+[[exception caught: reduction
+]])
+
+AT_PARSER_CHECK([[./input aaaal]], [[2]], [[]],
+[[exception caught: yylex
+]])
+
+AT_PARSER_CHECK([[./input i]], [[2]], [[]],
+[[exception caught: initial-action
+]])
+
+AT_PARSER_CHECK([[./input aaaap]])
+
+AT_PARSER_CHECK([[./input --debug aaaap]], [[2]], [[]], [[stderr]])
+AT_CHECK([[grep '^exception caught: printer$' stderr]], [], [ignore])
+
+AT_PARSER_CHECK([[./input aaaae]], [[2]], [[]],
+[[exception caught: syntax error
+]])
+
+AT_PARSER_CHECK([[./input aaaaE]], [[2]], [[]],
+[[exception caught: syntax error, unexpected $end, expecting 'a'
+]])
+
+AT_PARSER_CHECK([[./input aaaaT]], [[1]])
+
+# There is error-recovery, so exit success.
+AT_PARSER_CHECK([[./input aaaaR]], [[0]])
+
+AT_BISON_OPTION_POPDEFS
+
+AT_CLEANUP
index 3aab868..794488f 100644 (file)
@@ -1,6 +1,6 @@
 # Simple calculator.                         -*- Autotest -*-
 
-# Copyright (C) 2000-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2013 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
@@ -178,18 +178,7 @@ read_signed_integer (]AT_YYLEX_FORMALS[)
 
 ]AT_YYLEX_PROTOTYPE[
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-]AT_LOCATION_IF([
-      AT_LOC_LAST_COLUMN = 1;
-      AT_LOC_LAST_LINE = 1;
-])[
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -261,6 +250,8 @@ AT_SKEL_CC_IF(
 {
   semantic_value ival;
 };
+%printer { ]AT_SKEL_CC_IF([[yyoutput << $$]],
+                          [[fprintf (yyoutput, "%d", $$)]])[; } <ival>;
 
 %code provides
 {
@@ -280,24 +271,16 @@ AT_SKEL_CC_IF(
 FILE *input;
 static int power (int base, int exponent);
 
-]AT_SKEL_CC_IF(,
-[static void yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ])
-                     AT_PARAM_IF([semantic_value *result, int *count, ])
-                     const char *s
-                     );])[
+]AT_YYERROR_DECLARE[
 ]AT_YYLEX_DECLARE_EXTERN[
 }
 
-]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++). */
-%initial-action {
-  @$.initialize ();
-}
-]])])[
+]AT_SKEL_CC_IF([AT_LOCATION_TYPE_IF([[
+%initial-action
+{
+  @$.first.l = @$.first.c = 1;
+  @$.last = @$.first;
+}]])])[
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -365,27 +348,8 @@ power (int base, int exponent)
       o << '-' << s.last.c - 1;
     return o;
   }
-]])
-AT_YYERROR_DEFINE],
-[/* A C error reporting function.  */
-static void
-yyerror (AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ])
-         AT_PARAM_IF([semantic_value *result, int *count, ])
-         const char *s)
-{
-AT_PARAM_IF([(void) result; (void) count;])
-AT_YYERROR_SEES_LOC_IF([
-  fprintf (stderr, "%d.%d",
-           AT_LOC_FIRST_LINE, AT_LOC_FIRST_COLUMN);
-  if (AT_LOC_FIRST_LINE != AT_LOC_LAST_LINE)
-    fprintf (stderr, "-%d.%d",
-             AT_LOC_LAST_LINE,  AT_LOC_LAST_COLUMN - 1);
-  else if (AT_LOC_FIRST_COLUMN != AT_LOC_LAST_COLUMN - 1)
-    fprintf (stderr, "-%d",
-             AT_LOC_LAST_COLUMN - 1);
-  fprintf (stderr, ": ");])
-  fprintf (stderr, "%s\n", s);
-}])[
+]])])[
+]AT_YYERROR_DEFINE[
 ]AT_DEFINES_IF([],
 [AT_CALC_LEX
 AT_CALC_MAIN])])
@@ -503,12 +467,15 @@ AT_CHECK([cat stderr], 0, [expout])
 # 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([$PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' $1
+])dnl
 ])
 
 
@@ -547,7 +514,7 @@ _AT_CHECK_CALC([$1],
                [842])
 
 # Some syntax errors.
-_AT_CHECK_CALC_ERROR([$1], [1], [0 0], [15],
+_AT_CHECK_CALC_ERROR([$1], [1], [1 2], [15],
                      [1.3: syntax error, unexpected number])
 _AT_CHECK_CALC_ERROR([$1], [1], [1//2], [20],
                      [1.3: syntax error, unexpected '/', expecting number or '-' or '(' or '!'])
@@ -591,10 +558,10 @@ calc: error: 4444 != 1])
 
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
-_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (0 0) = 1], [102],
+_AT_CHECK_CALC_ERROR([$1], [0], [(!) + (1 2) = 1], [102],
 [1.10: syntax error, unexpected number
 calc: error: 2222 != 1])
-_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (0 0) = 1], [113],
+_AT_CHECK_CALC_ERROR([$1], [0], [(- *) + (1 2) = 1], [113],
 [1.4: syntax error, unexpected '*', expecting number or '-' or '(' or '!'
 1.12: syntax error, unexpected number
 calc: error: 2222 != 1])
@@ -637,8 +604,8 @@ AT_CHECK_CALC_LALR([%verbose])
 AT_CHECK_CALC_LALR([%yacc])
 AT_CHECK_CALC_LALR([%error-verbose])
 
-AT_CHECK_CALC_LALR([%define api.pure %locations])
-AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %locations])
+AT_CHECK_CALC_LALR([%define api.pure full %locations])
+AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure full %locations])
 AT_CHECK_CALC_LALR([%error-verbose %locations])
 
 AT_CHECK_CALC_LALR([%error-verbose %locations %defines %name-prefix "calc" %verbose %yacc])
@@ -648,8 +615,8 @@ AT_CHECK_CALC_LALR([%debug])
 AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_LALR([%error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
 
-AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
-AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR([%define api.pure full %verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc])
+AT_CHECK_CALC_LALR([%define api.push-pull both %define api.pure full %verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc])
 
 AT_CHECK_CALC_LALR([%define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count}])
 
@@ -710,7 +677,7 @@ m4_define([AT_CHECK_CALC_LALR1_CC],
 [AT_CHECK_CALC([%language "C++" %defines %locations] $@)])
 
 AT_CHECK_CALC_LALR1_CC([])
-AT_CHECK_CALC_LALR1_CC([%define location_type Span])
+AT_CHECK_CALC_LALR1_CC([%define api.location.type Span])
 AT_CHECK_CALC_LALR1_CC([%error-verbose %name-prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_LALR1_CC([%error-verbose %define api.prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_LALR1_CC([%error-verbose %debug %name-prefix "calc" %verbose %yacc])
@@ -739,7 +706,7 @@ m4_define([AT_CHECK_CALC_GLR_CC],
 [AT_CHECK_CALC([%language "C++" %glr-parser %defines %locations] $@)])
 
 AT_CHECK_CALC_GLR_CC([])
-AT_CHECK_CALC_GLR_CC([%define location_type Span])
+AT_CHECK_CALC_GLR_CC([%define api.location.type Span])
 AT_CHECK_CALC_GLR_CC([%error-verbose %name-prefix "calc" %verbose %yacc])
 AT_CHECK_CALC_GLR_CC([%error-verbose %define api.prefix "calc" %verbose %yacc])
 
index a46acc5..09114a8 100644 (file)
@@ -1,6 +1,6 @@
 # Exercising Bison on conflicts.                         -*- Autotest -*-
 
-# Copyright (C) 2002-2005, 2007, 2009-2012 Free Software Foundation,
+# Copyright (C) 2002-2005, 2007, 2009-2013 Free Software Foundation,
 # Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -41,6 +41,12 @@ AT_BISON_CHECK([-o input.c input.y], 0, [],
 [[input.y:4.9: warning: rule useless in parser due to conflicts: e: /* empty */
 ]])
 
+AT_BISON_CHECK([-fcaret -o input.c input.y], 0, [],
+[[input.y:4.9: warning: rule useless in parser due to conflicts
+ e: 'e' | /* Nothing. */;
+         ^
+]])
+
 AT_CLEANUP
 
 
@@ -580,7 +586,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
@@ -591,14 +597,14 @@ state 0
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
@@ -607,14 +613,14 @@ state 2
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: exp $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -625,7 +631,7 @@ state 4
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
@@ -683,7 +689,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . exp OP exp
@@ -694,14 +700,14 @@ state 0
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     $default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
     1 exp: exp . OP exp
@@ -710,14 +716,14 @@ state 2
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: exp $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -728,7 +734,7 @@ state 4
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [$end, OP]
@@ -823,7 +829,7 @@ id (7)
     on left: 4, on right: 2
 
 
-state 0
+State 0
 
     0 $accept: . exp $end
     1 exp: . num
@@ -838,7 +844,7 @@ state 0
     id   go to state 4
 
 
-state 1
+State 1
 
     3 num: '0' .  [$end]
     4 id: '0' .  [$end]
@@ -848,28 +854,28 @@ state 1
     $default  reduce using rule 3 (num)
 
 
-state 2
+State 2
 
     0 $accept: exp . $end
 
     $end  shift, and go to state 5
 
 
-state 3
+State 3
 
     1 exp: num .
 
     $default  reduce using rule 1 (exp)
 
 
-state 4
+State 4
 
     2 exp: id .
 
     $default  reduce using rule 2 (exp)
 
 
-state 5
+State 5
 
     0 $accept: exp $end .
 
@@ -896,7 +902,7 @@ exp: exp OP exp | NUM;
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
-input.y: expected 0 shift/reduce conflicts
+input.y: error: expected 0 shift/reduce conflicts
 ])
 AT_CLEANUP
 
@@ -933,7 +939,7 @@ exp: exp OP exp | NUM;
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 shift/reduce
-input.y: expected 2 shift/reduce conflicts
+input.y: error: expected 2 shift/reduce conflicts
 ])
 AT_CLEANUP
 
@@ -953,7 +959,7 @@ a: 'a';
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
 [input.y: conflicts: 1 reduce/reduce
-input.y: expected 0 reduce/reduce conflicts
+input.y: error: expected 0 reduce/reduce conflicts
 ])
 AT_CLEANUP
 
@@ -1170,7 +1176,7 @@ reported_conflicts (9)
     on left: 8 9 10, on right: 1
 
 
-state 0
+State 0
 
     0 $accept: . start $end
     1 start: . resolved_conflict 'a' reported_conflicts 'a'
@@ -1185,28 +1191,28 @@ state 0
     Conflict between rule 3 and token 'a' resolved as reduce (%left 'a').
 
 
-state 1
+State 1
 
     0 $accept: start . $end
 
     $end  shift, and go to state 3
 
 
-state 2
+State 2
 
     1 start: resolved_conflict . 'a' reported_conflicts 'a'
 
     'a'  shift, and go to state 4
 
 
-state 3
+State 3
 
     0 $accept: start $end .
 
     $default  accept
 
 
-state 4
+State 4
 
     1 start: resolved_conflict 'a' . reported_conflicts 'a'
     8 reported_conflicts: . 'a'
@@ -1220,7 +1226,7 @@ state 4
     reported_conflicts  go to state 6
 
 
-state 5
+State 5
 
     8 reported_conflicts: 'a' .  ['a']
     9                   | 'a' .  ['a']
@@ -1230,14 +1236,14 @@ state 5
     $default  reduce using rule 8 (reported_conflicts)
 
 
-state 6
+State 6
 
     1 start: resolved_conflict 'a' reported_conflicts . 'a'
 
     'a'  shift, and go to state 7
 
 
-state 7
+State 7
 
     1 start: resolved_conflict 'a' reported_conflicts 'a' .
 
@@ -1291,8 +1297,8 @@ empty_c2: %prec 'c' ;
 empty_c3: %prec 'd' ;
 ]])
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
 
     0 $accept: . start $end
     1 start: . 'a'
@@ -1328,7 +1334,7 @@ AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
     Conflict between rule 13 and token 'c' resolved as reduce ('c' < 'd').
 
 
-state 1
+State 1
 ]])
 
 AT_CLEANUP
@@ -1367,8 +1373,8 @@ empty_c3: %prec 'c' ;
 ]])
 
 AT_BISON_CHECK([[--report=all -o input.c input.y]], 0, [], [ignore])
-AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
-[[state 0
+AT_CHECK([[cat input.output | sed -n '/^State 0$/,/^State 1$/p']], 0,
+[[State 0
 
     0 $accept: . start $end
     1 start: . 'a'
@@ -1404,7 +1410,7 @@ AT_CHECK([[cat input.output | sed -n '/^state 0$/,/^state 1$/p']], 0,
     Conflict between rule 11 and token 'c' resolved as an error (%nonassoc 'c').
 
 
-state 1
+State 1
 ]])
 AT_CLEANUP
 
@@ -1494,11 +1500,11 @@ AT_BISON_CHECK([[-Wno-conflicts-rr sr-rr.y]], [[0]], [[]],
         echo "$file: conflicts: $conflicts" > experr
         if test $sr_count -ne $sr_exp; then
           if test $sr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $sr_exp shift/reduce conflict$s" >> experr
+          echo "$file: error: expected $sr_exp shift/reduce conflict$s" >> experr
         fi
         if test $rr_count -ne $rr_exp; then
           if test $rr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $rr_exp reduce/reduce conflict$s" >> experr
+          echo "$file: error: expected $rr_exp reduce/reduce conflict$s" >> experr
         fi
         ]AT_BISON_CHECK([[-Wnone $file]], [[1]], [[]], [[experr]])[
         ]AT_BISON_CHECK([[-Werror $file]], [[1]], [[]], [[experr]])[
index f5e7c55..2c37c17 100644 (file)
@@ -1,6 +1,6 @@
 # Checking GLR Parsing.                         -*- Autotest -*-
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -376,7 +376,7 @@ m4_define([_AT_GLR_STDERR],
 ]])
 
 m4_define([_AT_GLR_STDERR_WITH_LOC],
-[[17.5-4: syntax error
+[[17.5: syntax error
 ]])
 
 m4_define([_AT_VERBOSE_GLR_STDERR],
@@ -384,7 +384,7 @@ m4_define([_AT_VERBOSE_GLR_STDERR],
 ]])
 
 m4_define([_AT_VERBOSE_GLR_STDERR_WITH_LOC],
-[[17.5-4: syntax error, unexpected ID, expecting '=' or '+' or ')'
+[[17.5: syntax error, unexpected ID, expecting '=' or '+' or ')'
 ]])
 
 ## ---------------------------------------------------- ##
index 582f6b3..693c4c3 100644 (file)
@@ -1,6 +1,6 @@
 # Exercising Bison on actual grammars.                   -*- Autotest -*-
 
-# Copyright (C) 1989-1992, 2000-2005, 2007, 2009-2012 Free Software
+# Copyright (C) 1989-1992, 2000-2005, 2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -35,7 +35,10 @@ dnl time comes, just use sed to drop the line numbers.  For now, as LR(1)
 dnl support is rapidly evolving, let's keep that information to be careful.
 dnl However, we don't do diffs for canonical LR(1) because the diff is huge.
 m4_pushdef([AT_LALR1_DIFF_CHECK],
-[AT_CHECK([[sed 's/^%define lr.type .*$//' input.y > input-lalr.y]])
+[dnl We need diff -u, which is not portable.
+AT_CHECK([diff -u /dev/null /dev/null || exit 77], [0], [ignore])
+
+AT_CHECK([[sed 's/^%define lr.type .*$//' input.y > input-lalr.y]])
 AT_BISON_CHECK([[--report=all input-lalr.y]], [[0]], [ignore], [ignore])
 AT_CHECK([[diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//']],
@@ -486,7 +489,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
      $default  reduce using rule 45 (statement)
 +
 +
-+state 320
++State 320
 +
 +  139 non_post_simp_exp: . '!' simp_exp
 +  140                  | . '(' exp r_paren
@@ -524,7 +527,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable           go to state 63
 +
 +
-+state 321
++State 321
 +
 +  146 non_post_simp_exp: INCREMENT . variable
 +  154 variable: . NAME
@@ -537,7 +540,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable  go to state 50
 +
 +
-+state 322
++State 322
 +
 +  147 non_post_simp_exp: DECREMENT . variable
 +  154 variable: . NAME
@@ -550,7 +553,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable  go to state 51
 +
 +
-+state 323
++State 323
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -598,7 +601,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable           go to state 57
 +
 +
-+state 324
++State 324
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -646,7 +649,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable           go to state 57
 +
 +
-+state 325
++State 325
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -694,7 +697,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    variable           go to state 57
 +
 +
-+state 326
++State 326
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -715,7 +718,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY).
 +
 +
-+state 327
++State 327
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -736,7 +739,7 @@ dnl   - 61 -> 328: reduce -> shift on '*', '/', and '%'
 +    Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY).
 +
 +
-+state 328
++State 328
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -2037,7 +2040,7 @@ dnl   - 383 -> 427
      nth_primitive          go to state 105
 @@ -3256,7 +3256,7 @@
 
state 102
State 102
 
 -  146 place: label .  [$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, AND, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '`', ',', '>', '+', '-', '!', ';', '}', '@:>@', ')']
 +  146 place: label .  [$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '`', '+', '-', '!', ';', '}', '@:>@']
@@ -2202,7 +2205,7 @@ dnl   - 383 -> 427
 +    expr                   go to state 424
 
 
state 165
State 165
 @@ -7987,7 +7987,7 @@
      text_expr              go to state 112
      text                   go to state 113
@@ -2319,7 +2322,7 @@ dnl   - 383 -> 427
 +    between  go to state 425
 
 
state 193
State 193
 @@ -10152,7 +10152,7 @@
 
      expr_pair              go to state 317
@@ -2487,7 +2490,7 @@ dnl   - 383 -> 427
 +    expr                   go to state 424
 
 
state 238
State 238
 @@ -12937,7 +12937,7 @@
      '!'           shift, and go to state 94
 
@@ -2574,7 +2577,7 @@ dnl   - 383 -> 427
 +    expr                   go to state 424
 
 
state 315
State 315
 @@ -16124,7 +16124,7 @@
 
      $default  reduce using rule 239 (expr)
@@ -2625,7 +2628,7 @@ dnl   - 383 -> 427
 +    expr                   go to state 424
 
 
state 383
State 383
 @@ -18071,7 +18071,7 @@
      '!'           shift, and go to state 94
 
@@ -2668,7 +2671,7 @@ dnl   - 383 -> 427
      $default  reduce using rule 29 (placeless_element)
 +
 +
-+state 423
++State 423
 +
 +  146 place: label .  [$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', '@:>@', ')']
 +  147      | label . corner
@@ -2739,7 +2742,7 @@ dnl   - 383 -> 427
 +    corner  go to state 205
 +
 +
-+state 424
++State 424
 +
 +  140 position_not_place: expr . between position AND position
 +  141                   | expr . '<' position ',' position '>'
@@ -2782,7 +2785,7 @@ dnl   - 383 -> 427
 +    between  go to state 425
 +
 +
-+state 425
++State 425
 +
 +  134 position: . position_not_place
 +  135         | . place
@@ -2938,7 +2941,7 @@ dnl   - 383 -> 427
 +    expr                   go to state 424
 +
 +
-+state 426
++State 426
 +
 +  137 position_not_place: position . '+' expr_pair
 +  138                   | position . '-' expr_pair
@@ -2949,7 +2952,7 @@ dnl   - 383 -> 427
 +    '-'  shift, and go to state 198
 +
 +
-+state 427
++State 427
 +
 +  134 position: . position_not_place
 +  135         | . place
index 07c9fe2..868c841 100644 (file)
@@ -1,6 +1,6 @@
 # Checking GLR Parsing: Regression Tests           -*- Autotest -*-
 
-# Copyright (C) 2002-2003, 2005-2007, 2009-2012 Free Software
+# Copyright (C) 2002-2003, 2005-2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -18,9 +18,9 @@
 
 AT_BANNER([[GLR Regression Tests]])
 
-## --------------------------- ##
-## Badly Collapsed GLR States. ##
-## --------------------------- ##
+## ---------------------------- ##
+## Badly Collapsed GLR States.  ##
+## ---------------------------- ##
 
 AT_SETUP([Badly Collapsed GLR States])
 
@@ -67,9 +67,13 @@ static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1)
   return 0;
 }
 
+const char *input = YY_NULL;
+
 int
-main (void)
+main (int argc, const char* argv[])
 {
+  assert (argc == 2);
+  input = argv[1];
   return yyparse ();
 }
 
@@ -78,16 +82,7 @@ main (void)
 int
 yylex (void)
 {
-  for (;;)
-    {
-      int ch;
-      assert (!feof (stdin));
-      ch = getchar ();
-      if (ch == EOF)
-       return 0;
-      else if (ch == 'B' || ch == 'P')
-       return ch;
-    }
+  return *input++;
 }
 ]])
 AT_BISON_OPTION_POPDEFS
@@ -96,7 +91,7 @@ AT_BISON_CHECK([[-o glr-regr1.c glr-regr1.y]], 0, [],
 [glr-regr1.y: conflicts: 1 shift/reduce
 ])
 AT_COMPILE([glr-regr1])
-AT_PARSER_CHECK([[echo BPBPB | ./glr-regr1]], 0,
+AT_PARSER_CHECK([[./glr-regr1 BPBPB]], 0,
 [[E -> 'B'
 E -> 'B'
 E -> E 'P' E
@@ -110,9 +105,9 @@ E -> E 'P' E
 
 AT_CLEANUP
 
-## ------------------------------------------------------------ ##
-## Improper handling of embedded actions and $-N in GLR parsers ##
-## ------------------------------------------------------------ ##
+## -------------------------------------------------------------- ##
+## Improper handling of embedded actions and $-N in GLR parsers ##
+## -------------------------------------------------------------- ##
 
 AT_SETUP([Improper handling of embedded actions and dollar(-N) in GLR parsers])
 
@@ -200,9 +195,14 @@ yylex (void)
 int
 main (int argc, char **argv)
 {
+  int res;
   input = stdin;
-  if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
-  return yyparse ();
+  if (argc == 2 && !(input = fopen (argv[1], "r")))
+    return 3;
+  res = yyparse ();
+  if (argc == 2 && fclose (input))
+    return 4;
+  return res;
 }
 ]])
 AT_BISON_OPTION_POPDEFS
@@ -212,23 +212,34 @@ AT_BISON_CHECK([[-o glr-regr2a.c glr-regr2a.y]], 0, [],
 ])
 AT_COMPILE([glr-regr2a])
 
-AT_PARSER_CHECK([[echo s VARIABLE_1 t v x q | ./glr-regr2a]], 0,
+AT_DATA([input1.txt],
+[[s VARIABLE_1 t v x q
+]])
+AT_PARSER_CHECK([[./glr-regr2a input1.txt]], 0,
 [[Variable: 'VARIABLE_1'
-]], [])
-AT_PARSER_CHECK([[echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a]],
+]])
+
+AT_DATA([input2.txt],
+[[s VARIABLE_1 , ANOTHER_VARIABLE_2 t e
+]])
+AT_PARSER_CHECK([[./glr-regr2a input2.txt]],
 0,
 [[Varlist: 'VARIABLE_1,ANOTHER_VARIABLE_2'
 ]])
-AT_PARSER_CHECK([[echo s VARIABLE_3 t v x | ./glr-regr2a]], 0,
+
+AT_DATA([input3.txt],
+[[s VARIABLE_3 t v x
+]])
+AT_PARSER_CHECK([[./glr-regr2a input3.txt]], 0,
 [[Variable: 'VARIABLE_3'
-]], [])
+]])
 
 
 AT_CLEANUP
 
-## ------------------------------------------------------------ ##
-## Improper merging of GLR delayed action sets                  ##
-## ------------------------------------------------------------ ##
+## --------------------------------------------- ##
+## Improper merging of GLR delayed action sets.  ##
+## --------------------------------------------- ##
 
 AT_SETUP([Improper merging of GLR delayed action sets])
 
@@ -317,9 +328,14 @@ int yylex (void)
 int
 main(int argc, char* argv[])
 {
+  int res;
   input = stdin;
-  if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
-  return yyparse ();
+  if (argc == 2 && !(input = fopen (argv[1], "r")))
+    return 3;
+  res = yyparse ();
+  if (argc == 2 && fclose (input))
+    return 4;
+  return res;
 }
 ]])
 AT_BISON_OPTION_POPDEFS
@@ -329,18 +345,21 @@ AT_BISON_CHECK([[-o glr-regr3.c glr-regr3.y]], 0, [],
 ])
 AT_COMPILE([glr-regr3])
 
-AT_PARSER_CHECK([[echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3]],
+AT_DATA([input.txt],
+[[p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2
+]])
+AT_PARSER_CHECK([[./glr-regr3 input.txt]],
 0,
 [[Result: 1c04
-]], [])
+]])
 
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Duplicate representation of merged trees.  See                           ##
-## <http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>.     ##
-## ------------------------------------------------------------------------- ##
+## ---------------------------------------------------------------------- ##
+## Duplicate representation of merged trees.  See                         ##
+## <http://lists.gnu.org/archive/html/help-bison/2005-07/msg00013.html>.  ##
+## ---------------------------------------------------------------------- ##
 
 AT_SETUP([Duplicate representation of merged trees])
 
@@ -428,10 +447,10 @@ AT_PARSER_CHECK([[./glr-regr4]], 0,
 AT_CLEANUP
 
 
-## -------------------------------------------------------------------------- ##
-## User destructor for unresolved GLR semantic value.  See                   ##
-## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html>.   ##
-## -------------------------------------------------------------------------- ##
+## ------------------------------------------------------------------------- ##
+## User destructor for unresolved GLR semantic value.  See                   ##
+## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00016.html>.  ##
+## ------------------------------------------------------------------------- ##
 
 AT_SETUP([User destructor for unresolved GLR semantic value])
 
@@ -466,8 +485,8 @@ start:
    ;
 
 %%
-]AT_YYLEX_DEFINE(["a"])[
 ]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["a"])[
 int
 main (void)
 {
@@ -488,10 +507,10 @@ AT_PARSER_CHECK([[./glr-regr5]], 0, [],
 AT_CLEANUP
 
 
-## -------------------------------------------------------------------------- ##
-## User destructor after an error during a split parse.  See                 ##
-## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html>.   ##
-## -------------------------------------------------------------------------- ##
+## ------------------------------------------------------------------------- ##
+## User destructor after an error during a split parse.  See                 ##
+## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00029.html>.  ##
+## ------------------------------------------------------------------------- ##
 
 AT_SETUP([User destructor after an error during a split parse])
 
@@ -543,7 +562,7 @@ AT_CLEANUP
 
 
 ## ------------------------------------------------------------------------- ##
-## Duplicated user destructor for lookahead.  See                           ##
+## Duplicated user destructor for lookahead.  See                            ##
 ## <http://lists.gnu.org/archive/html/bison-patches/2005-08/msg00035.html>.  ##
 ## ------------------------------------------------------------------------- ##
 
@@ -726,7 +745,7 @@ AT_CLEANUP
 
 
 ## ------------------------------------------------------------------------- ##
-## No users destructors if stack 0 deleted.  See                            ##
+## No users destructors if stack 0 deleted.  See                             ##
 ## <http://lists.gnu.org/archive/html/bison-patches/2005-09/msg00109.html>.  ##
 ## ------------------------------------------------------------------------- ##
 
@@ -803,9 +822,9 @@ AT_PARSER_CHECK([[./glr-regr9]], 0, [],
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Corrupted semantic options if user action cuts parse.                    ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------------ ##
+## Corrupted semantic options if user action cuts parse.  ##
+## ------------------------------------------------------ ##
 
 AT_SETUP([Corrupted semantic options if user action cuts parse])
 
@@ -857,9 +876,9 @@ AT_PARSER_CHECK([[./glr-regr10]], 0, [], [])
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Undesirable destructors if user action cuts parse.                       ##
-## ------------------------------------------------------------------------- ##
+## --------------------------------------------------- ##
+## Undesirable destructors if user action cuts parse.  ##
+## --------------------------------------------------- ##
 
 AT_SETUP([Undesirable destructors if user action cuts parse])
 
@@ -915,9 +934,9 @@ AT_PARSER_CHECK([[./glr-regr11]], 0, [], [])
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Leaked semantic values if user action cuts parse.                        ##
-## ------------------------------------------------------------------------- ##
+## -------------------------------------------------- ##
+## Leaked semantic values if user action cuts parse.  ##
+## -------------------------------------------------- ##
 
 AT_SETUP([Leaked semantic values if user action cuts parse])
 
@@ -1162,9 +1181,9 @@ start <- defstate_init defstate_shift 'b':
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Incorrect lookahead during nondeterministic GLR.                         ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Incorrect lookahead during nondeterministic GLR.  ##
+## ------------------------------------------------- ##
 
 AT_SETUP([Incorrect lookahead during nondeterministic GLR])
 
@@ -1379,9 +1398,9 @@ start <- merge 'c' stack_explosion:
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Leaked semantic values when reporting ambiguity.                         ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Leaked semantic values when reporting ambiguity.  ##
+## ------------------------------------------------- ##
 
 AT_SETUP([Leaked semantic values when reporting ambiguity])
 
@@ -1461,9 +1480,9 @@ AT_PARSER_CHECK([[./glr-regr15]], 0, [],
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Leaked lookahead after nondeterministic parse syntax error.              ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------------------ ##
+## Leaked lookahead after nondeterministic parse syntax error.  ##
+## ------------------------------------------------------------ ##
 
 AT_SETUP([Leaked lookahead after nondeterministic parse syntax error])
 
@@ -1521,9 +1540,9 @@ AT_PARSER_CHECK([[./glr-regr16]], 0, [],
 AT_CLEANUP
 
 
-## ------------------------------------------------------------------------- ##
-## Uninitialized location when reporting ambiguity.                         ##
-## ------------------------------------------------------------------------- ##
+## ------------------------------------------------- ##
+## Uninitialized location when reporting ambiguity.  ##
+## ------------------------------------------------- ##
 
 AT_SETUP([Uninitialized location when reporting ambiguity])
 
@@ -1543,13 +1562,6 @@ AT_DATA_GRAMMAR([glr-regr17.y],
   ]AT_YYLEX_DECLARE[
 %}
 
-%initial-action {
-  @$.first_line = 1;
-  @$.first_column = 1;
-  @$.last_line = 1;
-  @$.last_column = 1;
-}
-
 %%
 
 /* Tests the case of an empty RHS that has inherited the location of the
@@ -1606,9 +1618,9 @@ AT_PARSER_CHECK([[./glr-regr17]], 0, [],
 AT_CLEANUP
 
 
-## -------------------------------------------------------------##
-## Missed %merge type warnings when LHS type is declared later. ##
-## -------------------------------------------------------------##
+## ------------------------------------------------------------- ##
+## Missed %merge type warnings when LHS type is declared later.  ##
+## ------------------------------------------------------------- ##
 
 AT_SETUP([Missed %merge type warnings when LHS type is declared later])
 
@@ -1650,10 +1662,10 @@ main (void)
 AT_BISON_OPTION_POPDEFS
 
 AT_BISON_CHECK([[-o glr-regr18.c glr-regr18.y]], 1, [],
-[glr-regr18.y:26.18-24: result type clash on merge function 'merge': <type2> != <type1>
-glr-regr18.y:25.18-24: previous declaration
-glr-regr18.y:27.13-19: result type clash on merge function 'merge': <type3> != <type2>
-glr-regr18.y:26.18-24: previous declaration
+[glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
+glr-regr18.y:25.18-24:     previous declaration
+glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
+glr-regr18.y:26.18-24:     previous declaration
 ])
 
 AT_CLEANUP
@@ -1686,8 +1698,8 @@ start:
 b: 'b';
 d: /* nada.  */;
 %%
-]AT_YYLEX_DEFINE(["abc"])[
 ]AT_YYERROR_DEFINE[
+]AT_YYLEX_DEFINE(["abc"])[
 int
 main (void)
 {
index cac7fe5..73f0df7 100644 (file)
@@ -1,6 +1,6 @@
 # Bison Parser Headers.                               -*- Autotest -*-
 
-# Copyright (C) 2001-2002, 2006-2007, 2009-2012 Free Software
+# Copyright (C) 2001-2002, 2006-2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -126,11 +126,12 @@ AT_SETUP([Several parsers])
 
 # AT_TEST([PREFIX], [DIRECTIVES])
 # -------------------------------
-# Generate and compile to *.o.  Make sure there is no YY* nor yy* in
-# the header (but YYDEBUG and YYPARSE_PARAM).
+# Generate and compile to *.o.  Make sure there is no (allowed) YY*
+# nor yy* identifiers in the header.  Check that headers are
+# self-contained, and can be compiled by a C++ compiler.
 m4_pushdef([AT_TEST],
 [AT_BISON_OPTION_PUSHDEFS([%define api.prefix "$1_" $2])
-AT_DATA_GRAMMAR([$1.AT_SKEL_CC_IF([yy], [y])],
+AT_DATA_GRAMMAR([$1.y],
 [[%define api.prefix "$1_"
 $2
 %error-verbose
@@ -160,21 +161,9 @@ exp:
 ]AT_YYLEX_DEFINE(["$1"])[
 ]])
 
-AT_BISON_CHECK([-d -o AT_SKEL_CC_IF([$1.cc $1.yy], [$1.c $1.y])])
-# C++ output relies on namespaces and still uses yy a lot.
-AT_SKEL_CC_IF([],
-  [AT_CHECK([$EGREP yy $1.h], [1])])
+AT_BISON_CHECK([-d -o $1.AT_SKEL_CC_IF([cc], [c]) $1.y])
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
-AT_CHECK([[sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' ]$1.AT_SKEL_CC_IF([hh], [h])[ |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG']],
-         [1])
 AT_LANG_COMPILE([$1.o])
-
 AT_CHECK([[echo "$1" >>expout]])
 
 AT_BISON_OPTION_POPDEFS
@@ -236,8 +225,56 @@ AT_TEST([x7], [%define api.push-pull both])
 AT_TEST([x8], [%define api.pure %define api.push-pull both])
 #AT_TEST([x5], [%locations %language "c++" %glr-parser])
 
+# Check there is no 'yy' left.
+# C++ output relies on namespaces and still uses yy a lot.
+#
+# Check there is no 'YY' left.
+# Ignore comments, YYChar (template parameter), YYPARSE_PARAM
+# (obsolete), YYPUSH_MORE(_DEFINED)?  (constant definition),
+# YY_\w+_INCLUDED (header guards).
+#
+# YYDEBUG (not renamed) can be read, but not changed.
+AT_CHECK([[$PERL -n -0777 -e '
+  s{/\*.*?\*/}{}gs;
+  s{//.*}{}g;
+  s{\b(YYChar
+      |YYPARSE_PARAM
+      |YYPUSH_MORE(_DEFINED)?
+      |YY_\w+_INCLUDED
+      |YY_NULL
+      |(defined|if)\ YYDEBUG
+      )\b}{}gx;
+  while (/^(.*YY.*)$/gm)
+  {
+    print "$ARGV: invalid exported YY: $1\n";
+  }
+  if ($ARGV =~ /\.h$/)
+  {
+    while (/^(.*yy.*)$/gm)
+    {
+      print "$ARGV: invalid exported yy: $1\n";
+    }
+  }
+' -- *.hh *.h]])
+
+# Check that the headers are self-contained, and protected against
+# multiple inclusions.  While at it, check they are sane for C++.
+for h in *.h *.hh
+do
+  # No shell expansion with AT_DATA.
+  cat >$h.cc <<EOF
+AT_DATA_SOURCE_PROLOGUE
+#include "$h"
+#include "$h"
+EOF
+  AT_COMPILE_CXX([$h.o])
+done
+
+# Do this late, so that other checks have been performed.
+AT_SKIP_IF_CANNOT_LINK_C_AND_CXX
+
 AT_COMPILE_CXX([parser], [[x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc]])
-AT_CHECK([./parser], [0], [[expout]])
+AT_PARSER_CHECK([./parser], [0], [[expout]])
 
 m4_popdef([AT_TEST])
 
index ff1d392..3f9a62d 100644 (file)
@@ -1,6 +1,6 @@
 # Checking the Bison scanner.                    -*- Autotest -*-
 
-# Copyright (C) 2002-2012 Free Software Foundation, Inc.
+# Copyright (C) 2002-2013 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
@@ -20,6 +20,63 @@ AT_BANNER([[Input Processing.]])
 # Mostly test that we are robust to mistakes.
 
 
+## ---------------- ##
+## Invalid inputs.  ##
+## ---------------- ##
+
+AT_SETUP([Invalid inputs])
+
+AT_DATA([input.y],
+[[\000\001\002\377?
+%%
+?
+default: 'a' }
+%&
+%a-does-not-exist
+%-
+%{
+]])
+AT_CHECK([[$PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' input.y || exit 77]])
+
+AT_BISON_CHECK([input.y], [1], [],
+[[input.y:1.1-2: error: invalid characters: '\0\001\002\377?'
+input.y:3.1: error: invalid character: '?'
+input.y:4.14: error: invalid character: '}'
+input.y:5.1: error: invalid character: '%'
+input.y:5.2: error: invalid character: '&'
+input.y:6.1-17: error: invalid directive: '%a-does-not-exist'
+input.y:7.1: error: invalid character: '%'
+input.y:7.2: error: invalid character: '-'
+input.y:8.1-9.0: error: missing '%}' at end of file
+input.y:8.1-9.0: error: syntax error, unexpected %{...%}
+]])
+
+AT_CLEANUP
+
+
+AT_SETUP([Invalid inputs with {}])
+
+# We used to SEGV here.  See
+# http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00053.html
+
+AT_DATA([input.y],
+[[
+%destructor
+%initial-action
+%lex-param
+%parse-param
+%printer
+%union
+]])
+
+AT_BISON_CHECK([input.y], [1], [],
+[[input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
+]])
+
+AT_CLEANUP
+
+
+
 ## ------------ ##
 ## Invalid $n.  ##
 ## ------------ ##
@@ -33,8 +90,8 @@ exp: { @$ = @1 ; };
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:2.13-14: integer out of range: '$1'
-input.y:3.13-14: integer out of range: '@1'
+[[input.y:2.13-14: error: integer out of range: '$1'
+input.y:3.13-14: error: integer out of range: '@1'
 ]])
 
 AT_CLEANUP
@@ -58,8 +115,8 @@ exp: foo { $$; } foo { $2; } foo
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:5.12-13: $$ for the midrule at $2 of 'exp' has no declared type
-input.y:5.24-25: $2 of 'exp' has no declared type
+[[input.y:5.12-13: error: $$ for the midrule at $2 of 'exp' has no declared type
+input.y:5.24-25: error: $2 of 'exp' has no declared type
 input.y:5.6-32: warning: type clash on default action: <bar> != <>
 input.y:6.6-8: warning: type clash on default action: <bar> != <>
 input.y:7.5: warning: empty rule for typed nonterminal, and no action
@@ -117,42 +174,109 @@ l: INT | INT { $<integer>$ = $<integer>1; } INT { $<integer>$ = $<integer>2 + $<
 _AT_UNUSED_VALUES_DECLARATIONS])
 )
 
-AT_BISON_CHECK(m4_ifval($2, [ --warnings=midrule-values ])[ input.y], [0], [],
-[[input.y:11.10-32: warning: unset value: $]$[
-input.y:11.10-32: warning: unused value: $]1[
-input.y:11.10-32: warning: unused value: $]3[
-input.y:11.10-32: warning: unused value: $]5[
+AT_BISON_CHECK(m4_ifval($2, [--warnings=midrule-values ])[-fcaret input.y],
+               [0], [],
+[[input.y:11.10-32: warning: unset value: $][$
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: $][1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: $][3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: $][5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
-]]m4_ifval($2, [[[input.y:13.14-20: warning: unset value: $$
-input.y:13.26-41: warning: unset value: $$
-]]])[[input.y:13.10-62: warning: unset value: $]$[
-input.y:13.10-62: warning: unused value: $]3[
-input.y:13.10-62: warning: unused value: $]5[
-]]m4_ifval($2, [[[input.y:14.14-16: warning: unset value: $$
-]]])[[input.y:14.10-49: warning: unset value: $]$[
-input.y:14.10-49: warning: unused value: $]3[
-input.y:14.10-49: warning: unused value: $]5[
-input.y:15.10-37: warning: unset value: $]$[
-input.y:15.10-37: warning: unused value: $]3[
-input.y:15.10-37: warning: unused value: $]5[
-input.y:17.10-58: warning: unset value: $]$[
-input.y:17.10-58: warning: unused value: $]1[
-]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]2[
-]]])[[input.y:17.10-58: warning: unused value: $]3[
-]]m4_ifval($2, [[[input.y:17.10-58: warning: unused value: $]4[
-]]])[[input.y:17.10-58: warning: unused value: $]5[
-input.y:18.10-72: warning: unset value: $]$[
-input.y:18.10-72: warning: unused value: $]1[
-input.y:18.10-72: warning: unused value: $]3[
-]]m4_ifval($2, [[[input.y:18.10-72: warning: unused value: $]4[
-]]])[[input.y:18.10-72: warning: unused value: $]5[
-]]m4_ifval($2, [[[input.y:20.10-55: warning: unused value: $]3[
-]]])[[input.y:21.10-68: warning: unset value: $]$[
-input.y:21.10-68: warning: unused value: $]1[
-input.y:21.10-68: warning: unused value: $]2[
-]]m4_ifval($2, [[[input.y:21.10-68: warning: unused value: $]4[
-]]]))])
-
+ b: INT | /* empty */;
+         ^
+]]m4_ifval($2, [[[input.y:13.14-20: warning: unset value: $][$
+ c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
+              ^^^^^^^
+input.y:13.26-41: warning: unset value: $][$
+ c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
+                          ^^^^^^^^^^^^^^^^
+]]])[[input.y:13.10-62: warning: unset value: $][$
+ c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: $][3
+ c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: $][5
+ c: INT | INT { $][1; } INT { $<integer>2; } INT { $<integer>4; };
+                                           ^^^
+]]m4_ifval($2, [[[input.y:14.14-16: warning: unset value: $][$
+ d: INT | INT { } INT { $][1; } INT { $<integer>2; };
+              ^^^
+]]])[[input.y:14.10-49: warning: unset value: $][$
+ d: INT | INT { } INT { $][1; } INT { $<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: $][3
+ d: INT | INT { } INT { $][1; } INT { $<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: $][5
+ d: INT | INT { } INT { $][1; } INT { $<integer>2; };
+                              ^^^
+input.y:15.10-37: warning: unset value: $][$
+ e: INT | INT { } INT {  } INT { $][1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: $][3
+ e: INT | INT { } INT {  } INT { $][1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: $][5
+ e: INT | INT { } INT {  } INT { $][1; };
+                           ^^^
+input.y:17.10-58: warning: unset value: $][$
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: $][1
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^
+]]m4_ifval($2, [[[input.y:17.14-29: warning: unused value: $][2
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+              ^^^^^^^^^^^^^^^^
+]]])[[input.y:17.31-33: warning: unused value: $][3
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                               ^^^
+]]m4_ifval($2, [[[input.y:17.35-50: warning: unused value: $][4
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                   ^^^^^^^^^^^^^^^^
+]]])[[input.y:17.52-54: warning: unused value: $][5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                                    ^^^
+input.y:18.10-72: warning: unset value: $][$
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: $][1
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: $][3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                               ^^^
+]]m4_ifval($2, [[[input.y:18.35-64: warning: unused value: $][4
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+]]])[[input.y:18.66-68: warning: unused value: $][5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                                                  ^^^
+]]m4_ifval($2, [[[input.y:20.18-37: warning: unused value: $][3
+ j: INT | INT INT { $<integer>$ = 1; } { $][$ = $][1 + $][2; };
+                  ^^^^^^^^^^^^^^^^^^^^
+]]])[[input.y:21.10-68: warning: unset value: $][$
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: $][1
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: $][2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+              ^^^
+]]m4_ifval($2, [[[input.y:21.35-64: warning: unused value: $][4
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+]]]))
+])
 
 ## --------------- ##
 ## Unused values.  ##
@@ -205,30 +329,30 @@ start: ;
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:1.13-29: redeclaration for default tagged %destructor
-input.y:1.13-29: previous declaration
-input.y:2.10-24: redeclaration for default tagged %printer
-input.y:2.10-24: previous declaration
-input.y:4.13-29: redeclaration for default tagged %destructor
-input.y:1.13-29: previous declaration
-input.y:5.10-24: redeclaration for default tagged %printer
-input.y:2.10-24: previous declaration
-input.y:7.13-29: redeclaration for default tagless %destructor
-input.y:7.13-29: previous declaration
-input.y:8.10-24: redeclaration for default tagless %printer
-input.y:8.10-24: previous declaration
-input.y:10.13-29: redeclaration for default tagless %destructor
-input.y:7.13-29: previous declaration
-input.y:11.10-24: redeclaration for default tagless %printer
-input.y:8.10-24: previous declaration
-input.y:17.13-29: redeclaration for default tagged %destructor
-input.y:4.13-29: previous declaration
-input.y:18.10-24: redeclaration for default tagged %printer
-input.y:5.10-24: previous declaration
-input.y:20.13-29: redeclaration for default tagless %destructor
-input.y:10.13-29: previous declaration
-input.y:21.10-24: redeclaration for default tagless %printer
-input.y:11.10-24: previous declaration
+[[input.y:1.13-29: error: redeclaration for default tagged %destructor
+input.y:1.13-29:     previous declaration
+input.y:2.10-24: error: redeclaration for default tagged %printer
+input.y:2.10-24:     previous declaration
+input.y:4.13-29: error: redeclaration for default tagged %destructor
+input.y:1.13-29:     previous declaration
+input.y:5.10-24: error: redeclaration for default tagged %printer
+input.y:2.10-24:     previous declaration
+input.y:7.13-29: error: redeclaration for default tagless %destructor
+input.y:7.13-29:     previous declaration
+input.y:8.10-24: error: redeclaration for default tagless %printer
+input.y:8.10-24:     previous declaration
+input.y:10.13-29: error: redeclaration for default tagless %destructor
+input.y:7.13-29:      previous declaration
+input.y:11.10-24: error: redeclaration for default tagless %printer
+input.y:8.10-24:      previous declaration
+input.y:17.13-29: error: redeclaration for default tagged %destructor
+input.y:4.13-29:      previous declaration
+input.y:18.10-24: error: redeclaration for default tagged %printer
+input.y:5.10-24:      previous declaration
+input.y:20.13-29: error: redeclaration for default tagless %destructor
+input.y:10.13-29:     previous declaration
+input.y:21.10-24: error: redeclaration for default tagless %printer
+input.y:11.10-24:     previous declaration
 ]])
 
 AT_CLEANUP
@@ -256,22 +380,22 @@ start: ;
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:4.13-29: %destructor redeclaration for <field1>
-input.y:1.13-29: previous declaration
-input.y:4.13-29: %destructor redeclaration for <field1>
-input.y:4.13-29: previous declaration
-input.y:5.10-24: %printer redeclaration for <field2>
-input.y:2.10-24: previous declaration
-input.y:5.10-24: %printer redeclaration for <field2>
-input.y:5.10-24: previous declaration
-input.y:11.13-29: %destructor redeclaration for <field1>
-input.y:4.13-29: previous declaration
-input.y:11.13-29: %destructor redeclaration for <field2>
-input.y:1.13-29: previous declaration
-input.y:12.10-24: %printer redeclaration for <field1>
-input.y:2.10-24: previous declaration
-input.y:12.10-24: %printer redeclaration for <field2>
-input.y:5.10-24: previous declaration
+[[input.y:4.13-29: error: %destructor redeclaration for <field1>
+input.y:1.13-29:     previous declaration
+input.y:4.13-29: error: %destructor redeclaration for <field1>
+input.y:4.13-29:     previous declaration
+input.y:5.10-24: error: %printer redeclaration for <field2>
+input.y:2.10-24:     previous declaration
+input.y:5.10-24: error: %printer redeclaration for <field2>
+input.y:5.10-24:     previous declaration
+input.y:11.13-29: error: %destructor redeclaration for <field1>
+input.y:4.13-29:      previous declaration
+input.y:11.13-29: error: %destructor redeclaration for <field2>
+input.y:1.13-29:      previous declaration
+input.y:12.10-24: error: %printer redeclaration for <field1>
+input.y:2.10-24:      previous declaration
+input.y:12.10-24: error: %printer redeclaration for <field2>
+input.y:5.10-24:      previous declaration
 ]])
 
 AT_CLEANUP
@@ -296,7 +420,7 @@ tagged: { } ;
 
 AT_BISON_CHECK([input.y], [0], [],
 [[input.y:6.8-45: warning: unset value: $$
-input.y:6.8-45: warning: unused value: $2
+input.y:6.12-14: warning: unused value: $2
 input.y:7.6-8: warning: unset value: $$
 ]])
 
@@ -312,7 +436,7 @@ tagged: { } ;
 ]])
 
 AT_BISON_CHECK([input.y], [0], [],
-[[input.y:6.8-45: warning: unused value: $4
+[[input.y:6.23-28: warning: unused value: $4
 input.y:8.9-11: warning: unset value: $$
 ]])
 
@@ -337,7 +461,7 @@ end: { }  ;
 
 AT_BISON_CHECK([input.y], [0], [],
 [[input.y:6.8-22: warning: unset value: $$
-input.y:6.8-22: warning: unused value: $2
+input.y:6.12-14: warning: unused value: $2
 input.y:7.6-8: warning: unset value: $$
 ]])
 
@@ -368,14 +492,14 @@ exp: foo;
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:8.7-11: %type redeclaration for foo
-input.y:3.7-11: previous declaration
-input.y:10.13-17: %destructor redeclaration for foo
-input.y:5.13-17: previous declaration
-input.y:9.10-14: %printer redeclaration for foo
-input.y:4.10-14: previous declaration
-input.y:11.1-5: %left redeclaration for foo
-input.y:6.1-5: previous declaration
+[[input.y:8.7-11: error: %type redeclaration for foo
+input.y:3.7-11:     previous declaration
+input.y:10.13-17: error: %destructor redeclaration for foo
+input.y:5.13-17:      previous declaration
+input.y:9.10-14: error: %printer redeclaration for foo
+input.y:4.10-14:     previous declaration
+input.y:11.1-5: error: %left redeclaration for foo
+input.y:6.1-5:      previous declaration
 ]])
 
 AT_CLEANUP
@@ -394,7 +518,7 @@ AT_SETUP([Torturing the Scanner])
 AT_BISON_OPTION_PUSHDEFS
 AT_DATA([input.y], [])
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:1.1: syntax error, unexpected end of file
+[[input.y:1.1: error: syntax error, unexpected end of file
 ]])
 
 
@@ -402,7 +526,7 @@ AT_DATA([input.y],
 [{}
 ])
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:1.1-2: syntax error, unexpected {...}
+[[input.y:1.1-2: error: syntax error, unexpected {...}
 ]])
 
 
@@ -668,9 +792,9 @@ AT_DATA_GRAMMAR([input.y],
 start: .GOOD GOOD
 ]])
 AT_BISON_CHECK([-o input.c input.y], [1], [],
-[[input.y:10.10: invalid character: '-'
-input.y:11.10-16: invalid identifier: '1NV4L1D'
-input.y:12.10: invalid character: '-'
+[[input.y:10.10: error: invalid character: '-'
+input.y:11.10-16: error: invalid identifier: '1NV4L1D'
+input.y:12.10: error: invalid character: '-'
 ]])
 
 AT_CLEANUP
@@ -692,10 +816,10 @@ start: DECIMAL_1 HEXADECIMAL_2;
 ]])
 
 AT_BISON_CHECK([redecl.y], [1], [],
-[[redecl.y:10.10-22: user token number 11259375 redeclaration for HEXADECIMAL_1
-redecl.y:9.8-16: previous declaration for DECIMAL_1
-redecl.y:12.10-18: user token number 16702650 redeclaration for DECIMAL_2
-redecl.y:11.10-22: previous declaration for HEXADECIMAL_2
+[[redecl.y:10.10-22: error: user token number 11259375 redeclaration for HEXADECIMAL_1
+redecl.y:9.8-16:       previous declaration for DECIMAL_1
+redecl.y:12.10-18: error: user token number 16702650 redeclaration for DECIMAL_2
+redecl.y:11.10-22:     previous declaration for HEXADECIMAL_2
 ]])
 
 AT_DATA_GRAMMAR([too-large.y],
@@ -707,8 +831,8 @@ start: TOO_LARGE_DEC TOO_LARGE_HEX
 ]])
 
 AT_BISON_CHECK([too-large.y], [1], [],
-[[too-large.y:9.22-42: integer out of range: '999999999999999999999'
-too-large.y:10.24-44: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
+[[too-large.y:9.22-42: error: integer out of range: '999999999999999999999'
+too-large.y:10.24-44: error: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
 ]])
 
 AT_CLEANUP
@@ -748,12 +872,31 @@ start: ;
 ]])
 
 AT_BISON_CHECK([-o input.c input.y], 1, [],
-[[input.y:1.10-2.0: missing '"' at end of line
-input.y:4.10-5.0: missing "'" at end of line
-input.y:14.11-15.0: missing "'" at end of line
-input.y:16.11-17.0: missing '"' at end of line
-input.y:19.13-20.0: missing '}' at end of file
-input.y:20.1: syntax error, unexpected end of file
+[[input.y:1.10-2.0: error: missing '"' at end of line
+input.y:4.10-5.0: error: missing "'" at end of line
+input.y:14.11-15.0: error: missing "'" at end of line
+input.y:16.11-17.0: error: missing '"' at end of line
+input.y:19.13-20.0: error: missing '}' at end of file
+input.y:20.1: error: syntax error, unexpected end of file
+]])
+
+AT_BISON_CHECK([-fcaret -o input.c input.y], 1, [],
+[[input.y:1.10-2.0: error: missing '"' at end of line
+ %token A "a
+          ^^
+input.y:4.10-5.0: error: missing "'" at end of line
+ %token C '1
+          ^^
+input.y:14.11-15.0: error: missing "'" at end of line
+ %type <f> 'a
+           ^^
+input.y:16.11-17.0: error: missing '"' at end of line
+ %type <f> "a
+           ^^
+input.y:19.13-20.0: error: missing '}' at end of file
+ %destructor { free ($$)
+             ^^^^^^^^^^^
+input.y:20.1: error: syntax error, unexpected end of file
 ]])
 
 AT_CLEANUP
@@ -795,7 +938,7 @@ PREC: ;
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:3.1-4: rule given for PREC, which is a token
+[[input.y:3.1-4: error: rule given for PREC, which is a token
 ]])
 
 AT_CLEANUP
@@ -836,10 +979,10 @@ AT_DATA([input-c.y],
 start: ;
 ]])
 AT_BISON_CHECK([[input-c.y]], [[1]], [],
-[[input-c.y:1.7: %code qualifier 'q' is not used
-input-c.y:2.7-9: %code qualifier 'bad' is not used
-input-c.y:3.7-9: %code qualifier 'bad' is not used
-input-c.y:4.7-12: %code qualifier 'format' is not used
+[[input-c.y:1.7: error: %code qualifier 'q' is not used
+input-c.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c.y:3.7-9: error: %code qualifier 'bad' is not used
+input-c.y:4.7-12: error: %code qualifier 'format' is not used
 ]])
 
 AT_DATA([input-c-glr.y],
@@ -850,9 +993,9 @@ AT_DATA([input-c-glr.y],
 start: ;
 ]])
 AT_BISON_CHECK([[input-c-glr.y]], [[1]], [],
-[[input-c-glr.y:1.7: %code qualifier 'q' is not used
-input-c-glr.y:2.7-9: %code qualifier 'bad' is not used
-input-c-glr.y:3.8-10: %code qualifier 'bad' is not used
+[[input-c-glr.y:1.7: error: %code qualifier 'q' is not used
+input-c-glr.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c-glr.y:3.8-10: error: %code qualifier 'bad' is not used
 ]])
 
 AT_DATA([input-c++.y],
@@ -863,9 +1006,9 @@ AT_DATA([input-c++.y],
 start: ;
 ]])
 AT_BISON_CHECK([[input-c++.y]], [[1]], [],
-[[input-c++.y:1.7: %code qualifier 'q' is not used
-input-c++.y:2.7-9: %code qualifier 'bad' is not used
-input-c++.y:3.8: %code qualifier 'q' is not used
+[[input-c++.y:1.7: error: %code qualifier 'q' is not used
+input-c++.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c++.y:3.8: error: %code qualifier 'q' is not used
 ]])
 
 AT_DATA([input-c++-glr.y],
@@ -876,9 +1019,9 @@ AT_DATA([input-c++-glr.y],
 start: ;
 ]])
 AT_BISON_CHECK([[input-c++-glr.y]], [[1]], [],
-[[input-c++-glr.y:1.7-9: %code qualifier 'bad' is not used
-input-c++-glr.y:2.7: %code qualifier 'q' is not used
-input-c++-glr.y:3.7: %code qualifier 'q' is not used
+[[input-c++-glr.y:1.7-9: error: %code qualifier 'bad' is not used
+input-c++-glr.y:2.7: error: %code qualifier 'q' is not used
+input-c++-glr.y:3.7: error: %code qualifier 'q' is not used
 ]])
 
 AT_DATA([special-char-@@.y],
@@ -889,9 +1032,9 @@ AT_DATA([special-char-@@.y],
 start: ;
 ]])
 AT_BISON_CHECK([[special-char-@@.y]], [[1]], [],
-[[special-char-@@.y:1.7-9: %code qualifier 'bad' is not used
-special-char-@@.y:2.7: %code qualifier 'q' is not used
-special-char-@@.y:3.7: %code qualifier 'q' is not used
+[[special-char-@@.y:1.7-9: error: %code qualifier 'bad' is not used
+special-char-@@.y:2.7: error: %code qualifier 'q' is not used
+special-char-@@.y:3.7: error: %code qualifier 'q' is not used
 ]])
 
 AT_DATA([special-char-@:>@.y],
@@ -902,9 +1045,9 @@ AT_DATA([special-char-@:>@.y],
 start: ;
 ]])
 AT_BISON_CHECK([[special-char-@:>@.y]], [[1]], [],
-[[special-char-@:>@.y:1.7-9: %code qualifier 'bad' is not used
-special-char-@:>@.y:2.7: %code qualifier 'q' is not used
-special-char-@:>@.y:3.7: %code qualifier 'q' is not used
+[[special-char-@:>@.y:1.7-9: error: %code qualifier 'bad' is not used
+special-char-@:>@.y:2.7: error: %code qualifier 'q' is not used
+special-char-@:>@.y:3.7: error: %code qualifier 'q' is not used
 ]])
 
 AT_CLEANUP
@@ -927,10 +1070,10 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[input-redefined.y]], [[1]], [],
-[[input-redefined.y:2.9-11: %define variable 'var' redefined
-input-redefined.y:1.9-11: previous definition
-input-redefined.y:3.10-12: %define variable 'var' redefined
-input-redefined.y:2.9-11: previous definition
+[[input-redefined.y:2.9-11: error: %define variable 'var' redefined
+input-redefined.y:1.9-11:     previous definition
+input-redefined.y:3.10-12: error: %define variable 'var' redefined
+input-redefined.y:2.9-11:      previous definition
 ]])
 
 AT_DATA([input-unused.y],
@@ -940,7 +1083,7 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[input-unused.y]], [[1]], [],
-[[input-unused.y:1.9-11: %define variable 'var' is not used
+[[input-unused.y:1.9-11: error: %define variable 'var' is not used
 ]])
 
 AT_CLEANUP
@@ -984,8 +1127,20 @@ AT_DATA([[input-dg.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[-Dvar=cmd-d input-dg.y]], [[1]], [],
-[[input-dg.y:1.9-11: %define variable 'var' redefined
-<command line>:2: previous definition
+[[input-dg.y:1.9-11: error: %define variable 'var' redefined
+<command line>:1:      previous definition
+]])
+
+AT_DATA([[input-dg.y]],
+[[%define var "gram"
+%%
+start: ;
+]])
+AT_BISON_CHECK([[-fcaret -Dvar=cmd-d input-dg.y]], [[1]], [],
+[[input-dg.y:1.9-11: error: %define variable 'var' redefined
+ %define var "gram"
+         ^^^
+<command line>:2:      previous definition
 ]])
 
 AT_DATA([[input-unused.y]],
@@ -993,8 +1148,8 @@ AT_DATA([[input-unused.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[-Dunused-d -Funused-f input-unused.y]], [[1]], [],
-[[<command line>:2: %define variable 'unused-d' is not used
-<command line>:3: %define variable 'unused-f' is not used
+[[<command line>:1: error: %define variable 'unused-d' is not used
+<command line>:2: error: %define variable 'unused-f' is not used
 ]])
 
 AT_CLEANUP
@@ -1014,7 +1169,7 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[Input.y]], [1], [],
-[[Input.y:2.9-14: invalid value for %define Boolean variable 'public'
+[[Input.y:2.9-14: error: invalid value for %define Boolean variable 'public'
 ]])
 
 AT_CLEANUP
@@ -1032,23 +1187,24 @@ AT_DATA([[input.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [[1]], [[]],
-[[input.y:1.9-29: invalid value for %define variable 'lr.default-reductions': 'bogus'
-input.y:1.9-29: accepted value: 'most'
-input.y:1.9-29: accepted value: 'consistent'
-input.y:1.9-29: accepted value: 'accepting'
+[[input.y:1.9-29: error: invalid value for %define variable 'lr.default-reductions': 'bogus'
+input.y:1.9-29:     accepted value: 'most'
+input.y:1.9-29:     accepted value: 'consistent'
+input.y:1.9-29:     accepted value: 'accepting'
 ]])
 
 # Back-end.
+# FIXME: these should be indented, but we shouldn't mess with the m4 yet
 AT_DATA([[input.y]],
 [[%define api.push-pull neither
 %%
 start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [1], [],
-[[input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither'
-input.y:1.9-21: accepted value: 'pull'
-input.y:1.9-21: accepted value: 'push'
-input.y:1.9-21: accepted value: 'both'
+[[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
+input.y:1.9-21: error: accepted value: 'pull'
+input.y:1.9-21: error: accepted value: 'push'
+input.y:1.9-21: error: accepted value: 'both'
 ]])
 
 AT_CLEANUP
@@ -1068,10 +1224,10 @@ AT_DATA([[input.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [1], [],
-[[input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither'
-input.y:1.9-21: accepted value: 'pull'
-input.y:1.9-21: accepted value: 'push'
-input.y:1.9-21: accepted value: 'both'
+[[input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
+input.y:1.9-21: error: accepted value: 'pull'
+input.y:1.9-21: error: accepted value: 'push'
+input.y:1.9-21: error: accepted value: 'both'
 ]])
 
 AT_DATA([[input.y]],
@@ -1080,7 +1236,7 @@ AT_DATA([[input.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [1], [],
-[[input.y:1.9-34: invalid value for %define Boolean variable 'lr.keep-unreachable-states'
+[[input.y:1.9-34: error: invalid value for %define Boolean variable 'lr.keep-unreachable-states'
 ]])
 
 AT_DATA([[input.y]],
@@ -1089,7 +1245,7 @@ AT_DATA([[input.y]],
 start: ;
 ]])
 AT_BISON_CHECK([[input.y]], [[1]], [],
-[[input.y:1.9-15: %define variable 'foo_bar' is not used
+[[input.y:1.9-15: error: %define variable 'foo_bar' is not used
 ]])
 
 AT_CLEANUP
@@ -1114,7 +1270,7 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[input.y]], [[1]], [],
-[[input.y:1.9-16: %define variable 'api.pure' is not used
+[[input.y:1.9-16: error: %define variable 'api.pure' is not used
 ]])
 ])
 
@@ -1148,7 +1304,7 @@ start: ;
 
 AT_BISON_CHECK([[input.y]], [1], [],
 [m4_foreach([b4_arg], m4_dquote(m4_shift($@)),
-[[input.y:3.9-17: ]b4_arg[
+[[input.y:3.9-17: error: ]b4_arg[
 ]])])
 ])
 
@@ -1194,14 +1350,14 @@ AT_DATA([empty.y],
 start: '';
 start: '
 ]])
-AT_CHECK([[perl -e "print 'start: \'';" >> empty.y || exit 77]])
+AT_CHECK([[$PERL -e "print 'start: \'';" >> empty.y || exit 77]])
 
 AT_BISON_CHECK([empty.y], [1], [],
 [[empty.y:2.8-9: warning: empty character literal
 empty.y:3.8-4.0: warning: empty character literal
-empty.y:3.8-4.0: missing "'" at end of line
+empty.y:3.8-4.0: error: missing "'" at end of line
 empty.y:4.8: warning: empty character literal
-empty.y:4.8: missing "'" at end of file
+empty.y:4.8: error: missing "'" at end of file
 ]])
 
 AT_DATA([two.y],
@@ -1209,14 +1365,14 @@ AT_DATA([two.y],
 start: 'ab';
 start: 'ab
 ]])
-AT_CHECK([[perl -e "print 'start: \'ab';" >> two.y || exit 77]])
+AT_CHECK([[$PERL -e "print 'start: \'ab';" >> two.y || exit 77]])
 
 AT_BISON_CHECK([two.y], [1], [],
 [[two.y:2.8-11: warning: extra characters in character literal
 two.y:3.8-4.0: warning: extra characters in character literal
-two.y:3.8-4.0: missing "'" at end of line
+two.y:3.8-4.0: error: missing "'" at end of line
 two.y:4.8-10: warning: extra characters in character literal
-two.y:4.8-10: missing "'" at end of file
+two.y:4.8-10: error: missing "'" at end of file
 ]])
 
 AT_DATA([three.y],
@@ -1224,14 +1380,14 @@ AT_DATA([three.y],
 start: 'abc';
 start: 'abc
 ]])
-AT_CHECK([[perl -e "print 'start: \'abc';" >> three.y || exit 77]])
+AT_CHECK([[$PERL -e "print 'start: \'abc';" >> three.y || exit 77]])
 
 AT_BISON_CHECK([three.y], [1], [],
 [[three.y:2.8-12: warning: extra characters in character literal
 three.y:3.8-4.0: warning: extra characters in character literal
-three.y:3.8-4.0: missing "'" at end of line
+three.y:3.8-4.0: error: missing "'" at end of line
 three.y:4.8-11: warning: extra characters in character literal
-three.y:4.8-11: missing "'" at end of file
+three.y:4.8-11: error: missing "'" at end of file
 ]])
 
 AT_CLEANUP
@@ -1253,34 +1409,34 @@ start: '\777' '\0' '\xfff' '\x0'
 # Beside we cannot even expect "echo '\0'" to output two characters
 # (well three with \n): at least Bash 3.2 converts the two-character
 # sequence "\0" into a single NUL character.
-AT_CHECK([[perl -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \
+AT_CHECK([[$PERL -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \
            || exit 77]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:2.9-12: invalid number after \-escape: 777
+[[input.y:2.9-12: error: invalid number after \-escape: 777
 input.y:2.8-13: warning: empty character literal
-input.y:2.16-17: invalid number after \-escape: 0
+input.y:2.16-17: error: invalid number after \-escape: 0
 input.y:2.15-18: warning: empty character literal
-input.y:2.21-25: invalid number after \-escape: xfff
+input.y:2.21-25: error: invalid number after \-escape: xfff
 input.y:2.20-26: warning: empty character literal
-input.y:2.29-31: invalid number after \-escape: x0
+input.y:2.29-31: error: invalid number after \-escape: x0
 input.y:2.28-32: warning: empty character literal
-input.y:3.9-14: invalid number after \-escape: uffff
+input.y:3.9-14: error: invalid number after \-escape: uffff
 input.y:3.8-15: warning: empty character literal
-input.y:3.18-23: invalid number after \-escape: u0000
+input.y:3.18-23: error: invalid number after \-escape: u0000
 input.y:3.17-24: warning: empty character literal
-input.y:3.27-36: invalid number after \-escape: Uffffffff
+input.y:3.27-36: error: invalid number after \-escape: Uffffffff
 input.y:3.26-37: warning: empty character literal
-input.y:3.40-49: invalid number after \-escape: U00000000
+input.y:3.40-49: error: invalid number after \-escape: U00000000
 input.y:3.39-50: warning: empty character literal
-input.y:4.9-10: invalid character after \-escape: ' '
+input.y:4.9-10: error: invalid character after \-escape: ' '
 input.y:4.8-11: warning: empty character literal
-input.y:4.14-15: invalid character after \-escape: A
+input.y:4.14-15: error: invalid character after \-escape: A
 input.y:4.13-16: warning: empty character literal
-input.y:5.9-16: invalid character after \-escape: \t
-input.y:5.17: invalid character after \-escape: \f
-input.y:5.18: invalid character after \-escape: \0
-input.y:5.19: invalid character after \-escape: \001
+input.y:5.9-16: error: invalid character after \-escape: \t
+input.y:5.17: error: invalid character after \-escape: \f
+input.y:5.18: error: invalid character after \-escape: \0
+input.y:5.19: error: invalid character after \-escape: \001
 ]])
 
 AT_CLEANUP
@@ -1299,11 +1455,11 @@ start: ;
 # parse.lac.* options are useless if LAC isn't actually activated.
 AT_BISON_CHECK([[-Dparse.lac.es-capacity-initial=1 input.y]],
                [[1]], [],
-[[<command line>:2: %define variable 'parse.lac.es-capacity-initial' is not used
+[[<command line>:1: error: %define variable 'parse.lac.es-capacity-initial' is not used
 ]])
 AT_BISON_CHECK([[-Dparse.lac.memory-trace=full input.y]],
                [[1]], [],
-[[<command line>:2: %define variable 'parse.lac.memory-trace' is not used
+[[<command line>:1: error: %define variable 'parse.lac.memory-trace' is not used
 ]])
 
 AT_CLEANUP
@@ -1357,13 +1513,13 @@ m4_pushdef([AT_TEST],
 exp:;
 ]])
 AT_BISON_CHECK([[$2 input.y]], [[1]], [[]],
-[[$3: '%name-prefix' and '%define api.prefix' cannot be used together
+[[$3: error: '%name-prefix' and '%define api.prefix' cannot be used together
 ]])
 ])
 
 AT_TEST([%define api.prefix foo %name-prefix "bar"], [], [input.y:1.9-18])
-AT_TEST([], [-Dapi.prefix=foo -p bar], [<command line>:2])
-AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [<command line>:2])
+AT_TEST([], [-Dapi.prefix=foo -p bar], [<command line>:1])
+AT_TEST([%name-prefix "bar"], [-Dapi.prefix=foo], [<command line>:1])
 AT_TEST([%define api.prefix foo], [-p bar], [input.y:1.9-18])
 
 m4_popdef([AT_TEST])
index f822ec6..ad26be3 100644 (file)
@@ -1,6 +1,6 @@
 # Java tests for simple calculator.           -*- Autotest -*-
 
-# Copyright (C) 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007-2013 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
@@ -719,8 +719,8 @@ AT_SETUP([Java stype, position_class and location_class])
 AT_CHECK_JAVA_MINIMAL([[
 %define stype "java.awt.Color"
 %type<java.awt.Color> start;
-%define location_type "MyLoc"
-%define position_type "MyPos"
+%define api.location.type "MyLoc"
+%define api.position.type "MyPos"
 %code { class MyPos {} }]], [[$$ = $<java.awt.Color>1;]], [[MyPos]])
 AT_CHECK([[grep 'java.awt.Color' YYParser.java]], [0], [ignore])
 AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Position']], [1], [ignore])
@@ -729,8 +729,8 @@ AT_CHECK([[$EGREP -v ' */?\*' YYParser.java | grep 'Location']], [1], [ignore])
 AT_CHECK_JAVA_MINIMAL_W_LEXER([[
 %define stype "java.awt.Color"
 %type<java.awt.Color> start;
-%define location_type "MyLoc"
-%define position_type "MyPos"
+%define api.location.type "MyLoc"
+%define api.position.type "MyPos"
 %code { class MyPos {} }]], [], [[return EOF;]], [],
 [[$$ = $<java.awt.Color>1;]],
 [[java.awt.Color]], [[MyPos]], [[MyLoc]])
index 5c9b865..4a3993b 100644 (file)
@@ -2,7 +2,7 @@
 
 # Macros for the GNU Bison Test suite.
 
-# Copyright (C) 2003-2012 Free Software Foundation, Inc.
+# Copyright (C) 2003-2013 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
@@ -38,7 +38,7 @@ m4_define([m4_null_if],
 # Expect COUNT matches of the PERL-REGEXP in FILE.  The file is
 # taken in "slurp" mode, i.e., one can match end-of-lines.
 m4_define([AT_MATCHES_CHECK],
-[AT_CHECK([perl -0777 -ne '
+[AT_CHECK([$PERL -0777 -ne '
 my $count = 0;
 s{$2}{ ++$count; "" }gem;
 printf "$count\n";' $1], [0], [$3
@@ -119,6 +119,7 @@ m4_pushdef([AT_SKEL_CC_IF],
 [m4_bmatch([$3], [%language "[Cc]\+\+"\|%skeleton "[a-z0-9]+\.cc"], [$1], [$2])])
 m4_pushdef([AT_SKEL_JAVA_IF],
 [m4_bmatch([$3], [%language "[Jj][Aa][Vv][Aa]"\|%skeleton "[a-z0-9]+\.java"], [$1], [$2])])
+# The target language: "c", "c++", or "java".
 m4_pushdef([AT_LANG],
 [AT_SKEL_JAVA_IF([java],
                  [AT_SKEL_CC_IF([c++],
@@ -137,17 +138,19 @@ m4_pushdef([AT_LEXPARAM_IF],
 m4_pushdef([AT_LOCATION_IF],
 [m4_bmatch([$3], [%locations], [$1], [$2])])
 m4_pushdef([AT_LOCATION_TYPE_IF],
-[m4_bmatch([$3], [%define location_type], [$1], [$2])])
+[m4_bmatch([$3], [%define \(api\.location\.type\|location_type\)], [$1], [$2])])
 m4_pushdef([AT_PARAM_IF],
 [m4_bmatch([$3], [%parse-param], [$1], [$2])])
+# Comma-terminated list of formals parse-parameters.
+# E.g., %parse-param { int x } {int y} -> "int x, int y, ".
+m4_pushdef([AT_PARSE_PARAMS])
+m4_bpatsubst([$3], [%parse-param { *\([^{}]*[^{} ]\) *}],
+             [m4_append([AT_PARSE_PARAMS], [\1, ])])
+
 m4_pushdef([AT_PURE_IF],
 [m4_bmatch([$3], [%define  *api\.pure\|%pure-parser],
            [m4_bmatch([$3], [%define  *api\.pure *"?false"?], [$2], [$1])],
            [$2])])
-m4_pushdef([AT_PURE_AND_LOC_IF],
-[m4_bmatch([$3], [%locations], [AT_PURE_IF($@)], [$2])])
-m4_pushdef([AT_GLR_OR_PARAM_IF],
-[m4_bmatch([$3], [%glr-parser\|%parse-param], [$1], [$2])])
 m4_pushdef([AT_NAME_PREFIX],
 [m4_bmatch([$3], [\(%define api\.prefix\|%name-prefix\) ".*"],
            [m4_bregexp([$3], [\(%define api\.prefix\|%name-prefix\) "\([^""]*\)"], [\2])],
@@ -158,17 +161,29 @@ m4_pushdef([AT_API_prefix],
            [yy])])
 m4_pushdef([AT_API_PREFIX],
 [m4_toupper(AT_API_prefix)])
-# yyerror receives the location if %location & %pure & (%glr or %parse-param).
+# yyerror receives the location if %location, and if the parser is pure. For
+# historical reasons, with the "yacc.c" skeleton, the location is not passed
+# unless an additional "%parse-param" is present, or if the purity is defined
+# as "full".
 m4_pushdef([AT_YYERROR_ARG_LOC_IF],
-[AT_GLR_OR_PARAM_IF([AT_PURE_AND_LOC_IF([$1], [$2])],
-                   [$2])])
-# yyerror always sees the locations (when activated), except if
-# (yacc & pure & !param).  FIXME: This is wrong.  See the manual.
+[AT_LOCATION_IF([AT_PURE_IF([m4_bmatch([$3],
+                                       m4_quote(m4_join([\|],
+                                                        [%define api.pure "?full"?],
+                                                        [%glr-parser],
+                                                        [%parse-param],
+                                                        [%skeleton "?glr.c"?])),
+                                       [$1], [$2])],
+                            [$2])],
+                [$2])])
+
+# yyerror always sees the locations (when activated) if the parser is impure.
+# When the parser is pure, yyerror sees the location if it is received as an
+# argument.
 m4_pushdef([AT_YYERROR_SEES_LOC_IF],
-[AT_LOCATION_IF([AT_YACC_IF([AT_PURE_IF([AT_PARAM_IF([$1], [$2])],
-                                       [$1])],
-                           [$1])],
-               [$2])])
+[AT_LOCATION_IF([AT_YACC_IF([AT_PURE_IF([AT_YYERROR_ARG_LOC_IF([$1], [$2])],
+                                        [$1])],
+                            [$1])],
+                [$2])])
 
 # The interface is pure: either because %define api.pure, or because we
 # are using the C++ parsers.
@@ -237,10 +252,9 @@ m4_popdef([AT_YYERROR_ARG_LOC_IF])
 m4_popdef([AT_API_PREFIX])
 m4_popdef([AT_API_prefix])
 m4_popdef([AT_NAME_PREFIX])
-m4_popdef([AT_GLR_OR_PARAM_IF])
-m4_popdef([AT_PURE_AND_LOC_IF])
 m4_popdef([AT_LOCATION_TYPE_IF])
 m4_popdef([AT_LOCATION_IF])
+m4_popdef([AT_PARSE_PARAMS])
 m4_popdef([AT_PARAM_IF])
 m4_popdef([AT_LEXPARAM_IF])
 m4_popdef([AT_YACC_IF])
@@ -342,6 +356,7 @@ static
 }]dnl
 ])
 
+# AT_YYERROR_FORMALS
 # AT_YYERROR_PROTOTYPE
 # AT_YYERROR_DECLARE_EXTERN
 # AT_YYERROR_DECLARE
@@ -350,7 +365,7 @@ static
 # Must be called inside a AT_BISON_OPTION_PUSHDEFS/POPDEFS pair.
 m4_define([AT_YYERROR_FORMALS],
 [m4_case(AT_LANG,
-[c], [AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE *llocp, ])[const char *msg]])[]dnl
+[c], [AT_YYERROR_ARG_LOC_IF([AT_YYLTYPE const * const llocp, ])AT_PARSE_PARAMS [const char *msg]])[]dnl
 ])
 
 m4_define([AT_YYERROR_PROTOTYPE],
@@ -374,16 +389,11 @@ m4_define([AT_YYERROR_DEFINE],
 /* A C error reporting function.  */
 static
 ]AT_YYERROR_PROTOTYPE[
-{
-]AT_YYERROR_SEES_LOC_IF([[
-  fprintf (stderr, "%d.%d",
-           ]AT_LOC_FIRST_LINE[, ]AT_LOC_FIRST_COLUMN[);
-  if (]AT_LOC_FIRST_LINE[ != ]AT_LOC_LAST_LINE[)
-    fprintf (stderr, "-%d.%d",
-             ]AT_LOC_LAST_LINE[,  ]AT_LOC_LAST_COLUMN[ - 1);
-  else if (]AT_LOC_FIRST_COLUMN[ != ]AT_LOC_LAST_COLUMN[ - 1)
-    fprintf (stderr, "-%d",
-             ]AT_LOC_LAST_COLUMN[ - 1);
+{]m4_bpatsubst(m4_defn([AT_PARSE_PARAMS]),
+              [[^,]+[^A-Za-z_0-9]\([A-Za-z_][A-Za-z_0-9]*\), *], [
+  YYUSE(\1);])dnl
+AT_YYERROR_SEES_LOC_IF([[
+  YY_LOCATION_PRINT (stderr, ]AT_LOC[);
   fprintf (stderr, ": ");]])[
   fprintf (stderr, "%s\n", msg);
 }]],
@@ -405,7 +415,8 @@ void
   public void yyerror (String s)
   {
     System.err.println (s);
-  }]])])dnl
+  }]])],
+[m4_fatal([$0: invalid language: ]AT_LANG)])dnl
 ])
 
 
@@ -461,10 +472,10 @@ m4_define([AT_BISON_CHECK_WARNINGS],
       [m4_null_if([$2], [AT_BISON_CHECK_WARNINGS_($@)])])])
 
 m4_define([AT_BISON_CHECK_WARNINGS_],
-[[# 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
+[[# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   ]AT_SAVE_SPECIAL_FILES[
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -552,10 +563,10 @@ m4_define([AT_BISON_CHECK_XML],
   AT_CHECK([[$XSLTPROC \
              `]]AT_QUELL_VALGRIND[[ bison --print-datadir`/xslt/xml2text.xsl \
              xml-tests/test.xml]], [[0]], [expout])
-  [cp xml-tests/test.dot expout]
+  [sort xml-tests/test.dot > expout]
   AT_CHECK([[$XSLTPROC \
              `]]AT_QUELL_VALGRIND[[ bison --print-datadir`/xslt/xml2dot.xsl \
-             xml-tests/test.xml]], [[0]], [expout])
+             xml-tests/test.xml | sort]], [[0]], [expout])
   [rm -rf xml-tests expout]
   AT_RESTORE_SPECIAL_FILES
 [fi]])
@@ -589,7 +600,8 @@ m4_define([AT_QUELL_VALGRIND],
 # otherwise pass "-c"; this is a hack.  The default SOURCES is OUTPUT
 # with trailing .o removed, and ".c" appended.
 m4_define([AT_COMPILE],
-[AT_CHECK(m4_join([ ],
+[AT_CHECK([$BISON_C_WORKS], 0, ignore, ignore)
+AT_CHECK(m4_join([ ],
                   [$CC $CFLAGS $CPPFLAGS],
                   [m4_bmatch([$1], [[.]], [-c], [$LDFLAGS])],
                   [-o $1],
@@ -675,6 +687,44 @@ m4_define([AT_FULL_COMPILE],
 ])
 
 
+
+# AT_SKIP_IF_CANNOT_LINK_C_AND_CXX
+# --------------------------------
+# Check that we can link together C and C++ objects.
+m4_define([AT_SKIP_IF_CANNOT_LINK_C_AND_CXX],
+[AT_DATA([c-and-cxx.h],
+[[#ifdef __cplusplus
+extern "C"
+{
+#endif
+  int fortytwo (void);
+#ifdef __cplusplus
+}
+#endif
+]])
+AT_DATA([c-only.c],
+[[#include "c-and-cxx.h"
+int
+main (void)
+{
+  return fortytwo () == 42 ? 0 : 1;
+}
+]])
+AT_DATA([cxx-only.cc],
+[[#include "c-and-cxx.h"
+int fortytwo ()
+{
+  return 42;
+}
+]])
+AT_COMPILE([c-only.o], [c-only.c])
+AT_COMPILE_CXX([cxx-only.o], [cxx-only.cc])
+AT_CHECK([$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx ||
+          exit 77], [ignore], [ignore])
+AT_PARSER_CHECK([./c-and-cxx])
+])
+
+
 ## ---------------------------- ##
 ## Running a generated parser.  ##
 ## ---------------------------- ##
@@ -823,9 +873,9 @@ m4_if(m4_index(m4_quote($3), [no-xml]), -1,
                                [0], [], m4_dquote($7))
 
 m4_if(m4_index(m4_quote($3), [last-state]), -1,
-      [AT_CHECK([[sed -n '/^state 0$/,$p' input.output]], [[0]],
+      [AT_CHECK([[sed -n '/^State 0$/,$p' input.output]], [[0]],
                 m4_dquote($8))],
-      [AT_CHECK([[sed -n 's/^state //p' input.output | tail -1]], [[0]],
+      [AT_CHECK([[sed -n 's/^State //p' input.output | tail -1]], [[0]],
                 m4_dquote($8)[[
 ]])])
 
@@ -839,8 +889,8 @@ $9
 # There is no "" around `wc` since some indent the result.
 m4_bmatch([$4], [%define lr.type canonical-lr],
 [if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi])
 AT_COMPILE([[input]])
 
index 3ccf1f6..12e726b 100644 (file)
@@ -1,6 +1,6 @@
 # Named references test.                           -*- Autotest -*-
 
-# Copyright (C) 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2009-2013 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
@@ -49,18 +49,18 @@ static int power (int base, int exponent);
 %nonassoc '='   /* comparison         */
 %left '-' '+'
 %left '*' '/'
-%left NEG /* negation--unary minus */
+%left NEG       /* negation--unary minus */
 %right '^'      /* exponentiation        */
 
 %%
 input:
   line
-| input line         {  }
+| input line         {}
 ;
 
 line:
   '\n'
-| exp '\n'           {  }
+| exp '\n'           {}
 ;
 
 exp:
@@ -69,15 +69,15 @@ exp:
   {
     if ($l != $r)
       fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
+    $$ = $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[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;           }
+| exp[l] '^' exp[r]  { $$ = power ($l, $r); }
+| '(' exp[e] ')'     { $$ = $e;           }
 | '(' error ')'      { $$ = 1111; yyerrok;  }
 | '!'                { $$ = 0; YYERROR;     }
 | '-' error          { $$ = 0; YYERROR;     }
@@ -214,18 +214,18 @@ static int power (int base, int exponent);
 %nonassoc '='   /* comparison         */
 %left '-' '+'
 %left '*' '/'
-%left NEG /* negation--unary minus */
+%left NEG       /* negation--unary minus */
 %right '^'      /* exponentiation        */
 
 %%
 input:
   line
-| input line         {  }
+| input line         {}
 ;
 
 line:
   '\n'
-| exp '\n'           {  }
+| exp '\n'           {}
 ;
 
 exp:
@@ -234,14 +234,14 @@ exp:
   {
     if ($l != $r)
       fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
+    $$ = $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[l] '^' exp[r]  { $$ = power ($l, $r12); }
 | '(' exp ')'        { $$ = $expo;           }
 | '(' error ')'      { $$ = 1111; yyerrok;  }
 | '!'                { $$ = 0; YYERROR;     }
@@ -251,16 +251,16 @@ exp:
 ]])
 
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:50.51-60: invalid reference: '$<ival>lo9'
+[[test.y:50.51-60: error: 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:42.1-3:       refers to: $exp at $$
+test.y:51.7:         possibly meant: $x, hiding $exp at $1
+test.y:51.41:        possibly meant: $r, hiding $exp at $4
+test.y:52.51-52: error: $l of 'exp' has no declared type
+test.y:55.40-43: error: invalid reference: '$r12'
+test.y:55.3-47:      symbol not found in production: r12
+test.y:56.29-33: error: invalid reference: '$expo'
 test.y:56.3-46:      symbol not found in production: expo
 ]])
 AT_BISON_OPTION_POPDEFS
@@ -278,8 +278,8 @@ foo.bar: '2'
 ]])
 AT_BISON_CHECK([-o test.c test.y], 0, [],
 [[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
+test.y:11.8-10:      refers to: $foo at $1
+test.y:11.12-18:     possibly meant: $[foo.bar] at $2
 ]])
 AT_CLEANUP
 
@@ -353,46 +353,167 @@ factor:     '(' expr ')'  { $$ = $2; }
     ;
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:24.36-41: invalid reference: '$cond1'
+[[test.y:24.36-41: error: invalid reference: '$cond1'
 test.y:23.11-24.62:  symbol not found in production: cond1
-test.y:26.43-53: invalid reference: '$stmt.field'
+test.y:26.43-53: error: invalid reference: '$stmt.field'
 test.y:25.11-26.60:  symbol not found in production: stmt
 test.y:25.35-38:     possibly meant: $then.field, hiding $stmt.field at $4
-test.y:28.43-52: invalid reference: '$stmt.list'
+test.y:28.43-52: error: invalid reference: '$stmt.list'
 test.y:27.11-28.59:  symbol not found in production: stmt
 test.y:27.30-38:     possibly meant: $[stmt.list] at $4
-test.y:30.43-46: ambiguous reference: '$xyz'
+test.y:30.43-46: error: ambiguous reference: '$xyz'
 test.y:29.35-37:     refers to: $xyz at $4
 test.y:29.50-52:     refers to: $xyz at $6
-test.y:32.43-52: invalid reference: '$stmt.list'
+test.y:32.43-52: error: invalid reference: '$stmt.list'
 test.y:31.11-32.63:  symbol not found in production: stmt
 test.y:31.40-43:     possibly meant: $then, hiding $[stmt.list] at $4
 test.y:31.61-64:     possibly meant: $else, hiding $[stmt.list] at $6
-test.y:34.43-58: invalid reference: '$stmt.list.field'
+test.y:34.43-58: error: invalid reference: '$stmt.list.field'
 test.y:33.11-34.69:  symbol not found in production: stmt
 test.y:33.40-43:     possibly meant: $then.field, hiding $[stmt.list].field at $4
 test.y:33.61-64:     possibly meant: $else.field, hiding $[stmt.list].field at $6
-test.y:36.43-54: invalid reference: '$[stmt.list]'
+test.y:36.43-54: error: invalid reference: '$[stmt.list]'
 test.y:35.11-36.71:  symbol not found in production: stmt.list
 test.y:35.40-43:     possibly meant: $then, hiding $[stmt.list] at $4
 test.y:35.61-64:     possibly meant: $else, hiding $[stmt.list] at $6
-test.y:38.43-49: invalid reference: '$then.1'
+test.y:38.43-49: error: invalid reference: '$then.1'
 test.y:37.11-38.60:  symbol not found in production: then
 test.y:37.40-45:     possibly meant: $[then.1] at $4
-test.y:40.43-55: invalid reference: '$then.1.field'
+test.y:40.43-55: error: invalid reference: '$then.1.field'
 test.y:39.11-40.66:  symbol not found in production: then
 test.y:39.40-45:     possibly meant: $[then.1].field at $4
-test.y:42.44-50: invalid reference: '$stmt.x'
+test.y:42.44-50: error: invalid reference: '$stmt.x'
 test.y:41.12-42.57:  symbol not found in production: stmt
 test.y:41.36-41:     possibly meant: $[stmt.x].x, hiding $stmt.x at $4
 test.y:41.36-41:     possibly meant: $[stmt.x] at $4
-test.y:44.13-22: invalid reference: '$if-stmt-a'
+test.y:44.13-22: error: invalid reference: '$if-stmt-a'
 test.y:43.12-44.59:  symbol not found in production: if
 test.y:43.1-9:       possibly meant: $[if-stmt-a] at $$
-test.y:46.46-54: invalid reference: '$then-a.f'
+test.y:46.46-54: error: invalid reference: '$then-a.f'
 test.y:45.12-46.65:  symbol not found in production: then
 test.y:45.41-46:     possibly meant: $[then-a].f at $4
 ]])
+
+AT_BISON_CHECK([-fcaret -o test.c test.y], 1, [],
+[[test.y:24.36-41: error: invalid reference: '$cond1'
+           { $if_stmt1 = new IfStmt($cond1, $then.f1, $else); };
+                                    ^^^^^^
+test.y:23.11-24.62:  symbol not found in production: cond1
+ if_stmt1: IF expr[cond] THEN stmt[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:26.43-53: error: invalid reference: '$stmt.field'
+           { $if_stmt2 = new IfStmt($cond, $stmt.field, 0); };
+                                           ^^^^^^^^^^^
+test.y:25.11-26.60:  symbol not found in production: stmt
+ if_stmt2: IF expr[cond] THEN stmt[then] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:25.35-38:     possibly meant: $then.field, hiding $stmt.field at $4
+ if_stmt2: IF expr[cond] THEN stmt[then] FI
+                                   ^^^^
+test.y:28.43-52: error: invalid reference: '$stmt.list'
+           { $if_stmt3 = new IfStmt($cond, $stmt.list, 0); };
+                                           ^^^^^^^^^^
+test.y:27.11-28.59:  symbol not found in production: stmt
+ if_stmt3: IF expr[cond] THEN stmt.list FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:27.30-38:     possibly meant: $[stmt.list] at $4
+ if_stmt3: IF expr[cond] THEN stmt.list FI
+                              ^^^^^^^^^
+test.y:30.43-46: error: ambiguous reference: '$xyz'
+           { $if_stmt4 = new IfStmt($cond, $xyz, $cond); };
+                                           ^^^^
+test.y:29.35-37:     refers to: $xyz at $4
+ if_stmt4: IF expr[cond] THEN stmt[xyz] ELSE stmt[xyz] FI
+                                   ^^^
+test.y:29.50-52:     refers to: $xyz at $6
+ if_stmt4: IF expr[cond] THEN stmt[xyz] ELSE stmt[xyz] FI
+                                                  ^^^
+test.y:32.43-52: error: invalid reference: '$stmt.list'
+           { $if_stmt5 = new IfStmt($cond, $stmt.list, $else); };
+                                           ^^^^^^^^^^
+test.y:31.11-32.63:  symbol not found in production: stmt
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:31.40-43:     possibly meant: $then, hiding $[stmt.list] at $4
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:31.61-64:     possibly meant: $else, hiding $[stmt.list] at $6
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:34.43-58: error: invalid reference: '$stmt.list.field'
+           { $if_stmt6 = new IfStmt($cond, $stmt.list.field, $else); };
+                                           ^^^^^^^^^^^^^^^^
+test.y:33.11-34.69:  symbol not found in production: stmt
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:33.40-43:     possibly meant: $then.field, hiding $[stmt.list].field at $4
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:33.61-64:     possibly meant: $else.field, hiding $[stmt.list].field at $6
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:36.43-54: error: invalid reference: '$[stmt.list]'
+           { $if_stmt7 = new IfStmt($cond, $[stmt.list].field, $else); };
+                                           ^^^^^^^^^^^^
+test.y:35.11-36.71:  symbol not found in production: stmt.list
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:35.40-43:     possibly meant: $then, hiding $[stmt.list] at $4
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:35.61-64:     possibly meant: $else, hiding $[stmt.list] at $6
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:38.43-49: error: invalid reference: '$then.1'
+           { $if_stmt8 = new IfStmt($cond, $then.1, $else); };
+                                           ^^^^^^^
+test.y:37.11-38.60:  symbol not found in production: then
+ if_stmt8: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:37.40-45:     possibly meant: $[then.1] at $4
+ if_stmt8: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+                                        ^^^^^^
+test.y:40.43-55: error: invalid reference: '$then.1.field'
+           { $if_stmt9 = new IfStmt($cond, $then.1.field, $else); };
+                                           ^^^^^^^^^^^^^
+test.y:39.11-40.66:  symbol not found in production: then
+ if_stmt9: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:39.40-45:     possibly meant: $[then.1].field at $4
+ if_stmt9: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+                                        ^^^^^^
+test.y:42.44-50: error: invalid reference: '$stmt.x'
+           { $if_stmt10 = new IfStmt($cond, $stmt.x, 0); };
+                                            ^^^^^^^
+test.y:41.12-42.57:  symbol not found in production: stmt
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:41.36-41:     possibly meant: $[stmt.x].x, hiding $stmt.x at $4
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+                                    ^^^^^^
+test.y:41.36-41:     possibly meant: $[stmt.x] at $4
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+                                    ^^^^^^
+test.y:44.13-22: error: invalid reference: '$if-stmt-a'
+           { $if-stmt-a = new IfStmt($cond, $then, $else); };
+             ^^^^^^^^^^
+test.y:43.12-44.59:  symbol not found in production: if
+ if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:43.1-9:       possibly meant: $[if-stmt-a] at $$
+ if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+ ^^^^^^^^^
+test.y:46.46-54: error: invalid reference: '$then-a.f'
+           { $[if-stmt-b] = new IfStmt($cond, $then-a.f, $else); };
+                                              ^^^^^^^^^
+test.y:45.12-46.65:  symbol not found in production: then
+ if-stmt-b: IF expr[cond] THEN if-stmt-a[then-a] ELSE stmt.list[else] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:45.41-46:     possibly meant: $[then-a].f at $4
+ if-stmt-b: IF expr[cond] THEN if-stmt-a[then-a] ELSE stmt.list[else] FI
+                                         ^^^^^^
+]])
+
 AT_CLEANUP
 
 #######################################################################
@@ -405,7 +526,7 @@ start: foo[] bar
   { s = $foo; }
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:11.12: an identifier expected
+[[test.y:11.12: error: an identifier expected
 ]])
 AT_CLEANUP
 
@@ -419,7 +540,7 @@ start: foo[ a d ] bar
   { s = $foo; }
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:11.15: unexpected identifier in bracketed name: 'd'
+[[test.y:11.15: error: unexpected identifier in bracketed name: 'd'
 ]])
 AT_CLEANUP
 
@@ -433,7 +554,7 @@ start: foo[/* comment */] bar
   { s = $foo; }
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:11.25: an identifier expected
+[[test.y:11.25: error: an identifier expected
 ]])
 AT_CLEANUP
 
@@ -443,14 +564,14 @@ AT_SETUP([Stray symbols in brackets])
 AT_DATA_GRAMMAR([test.y],
 [[
 %%
-start: foo[ /* aaa */ *&-.+ ] bar
+start: foo[ % /* aaa */ *&-.+\000\001\002\377 ] bar
   { s = $foo; }
 ]])
+AT_CHECK([[$PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' test.y || exit 77]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:11.23: invalid character in bracketed name: '*'
-test.y:11.24: invalid character in bracketed name: '&'
-test.y:11.25: invalid character in bracketed name: '-'
-test.y:11.27: invalid character in bracketed name: '+'
+[[test.y:11.13: error: invalid character in bracketed name: '%'
+test.y:11.25-27: error: invalid characters in bracketed name: '*&-'
+test.y:11.29-30: error: invalid characters in bracketed name: '+\0\001\002\377'
 ]])
 AT_CLEANUP
 
@@ -463,7 +584,7 @@ AT_DATA_GRAMMAR([test.y],
 start[a s]: foo;
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:11.9: unexpected identifier in bracketed name: 's'
+[[test.y:11.9: error: unexpected identifier in bracketed name: 's'
 ]])
 AT_CLEANUP
 
@@ -510,37 +631,37 @@ sym_a: 'a';
 sym_b: 'b';
 ]])
 AT_BISON_CHECK([-o test.c test.y], 1, [],
-[[test.y:12.22-31: invalid reference: '$sym.field'
+[[test.y:12.22-31: error: invalid reference: '$sym.field'
 test.y:12.3-35:      symbol not found in production: sym
-test.y:13.22-35: invalid reference: '$<aa>sym.field'
+test.y:13.22-35: error: invalid reference: '$<aa>sym.field'
 test.y:13.3-39:      symbol not found in production: sym
-test.y:14.22-33: invalid reference: '$[sym.field]'
+test.y:14.22-33: error: invalid reference: '$[sym.field]'
 test.y:14.3-37:      symbol not found in production: sym.field
-test.y:15.22-37: invalid reference: '$<aa>[sym.field]'
+test.y:15.22-37: error: invalid reference: '$<aa>[sym.field]'
 test.y:15.3-41:      symbol not found in production: sym.field
-test.y:16.22-25: invalid reference: '$sym'
+test.y:16.22-25: error: invalid reference: '$sym'
 test.y:16.3-29:      symbol not found in production: sym
-test.y:17.22-29: invalid reference: '$<aa>sym'
+test.y:17.22-29: error: invalid reference: '$<aa>sym'
 test.y:17.3-33:      symbol not found in production: sym
-test.y:18.22-27: invalid reference: '$[sym]'
+test.y:18.22-27: error: invalid reference: '$[sym]'
 test.y:18.3-65:      symbol not found in production before $3: sym
-test.y:18.52-61: invalid reference: '$<aa>[sym]'
+test.y:18.52-61: error: invalid reference: '$<aa>[sym]'
 test.y:18.3-65:      symbol not found in production: sym
-test.y:22.22-31: invalid reference: '$sym-field'
+test.y:22.22-31: error: invalid reference: '$sym-field'
 test.y:22.3-35:      symbol not found in production: sym
-test.y:23.22-35: invalid reference: '$<aa>sym-field'
+test.y:23.22-35: error: invalid reference: '$<aa>sym-field'
 test.y:23.3-39:      symbol not found in production: sym
-test.y:24.22-33: invalid reference: '$[sym-field]'
+test.y:24.22-33: error: invalid reference: '$[sym-field]'
 test.y:24.3-37:      symbol not found in production: sym-field
-test.y:25.22-37: invalid reference: '$<aa>[sym-field]'
+test.y:25.22-37: error: invalid reference: '$<aa>[sym-field]'
 test.y:25.3-41:      symbol not found in production: sym-field
-test.y:26.22-25: invalid reference: '$sym'
+test.y:26.22-25: error: invalid reference: '$sym'
 test.y:26.3-29:      symbol not found in production: sym
-test.y:27.22-29: invalid reference: '$<aa>sym'
+test.y:27.22-29: error: invalid reference: '$<aa>sym'
 test.y:27.3-33:      symbol not found in production: sym
-test.y:28.22-27: invalid reference: '$[sym]'
+test.y:28.22-27: error: invalid reference: '$[sym]'
 test.y:28.3-65:      symbol not found in production before $3: sym
-test.y:28.52-61: invalid reference: '$<aa>[sym]'
+test.y:28.52-61: error: invalid reference: '$<aa>[sym]'
 test.y:28.3-65:      symbol not found in production: sym
 ]])
 AT_CLEANUP
@@ -558,10 +679,10 @@ start:
 .field: ;
 ]])
 AT_BISON_CHECK([[test.y]], [[1]], [],
-[[test.y:4.12-18: invalid reference: '$.field'
+[[test.y:4.12-18: error: invalid reference: '$.field'
 test.y:4.13:        syntax error after '$', expecting integer, letter, '_', '@<:@', or '$'
 test.y:4.3-8:       possibly meant: $[.field] at $1
-test.y:5.12-18: invalid reference: '@.field'
+test.y:5.12-18: error: invalid reference: '@.field'
 test.y:5.13:        syntax error after '@', expecting integer, letter, '_', '@<:@', or '$'
 ]])
 AT_DATA([[test.y]],
index f7a7d8e..fa8978d 100644 (file)
@@ -1,6 +1,6 @@
 # Checking the output filenames.                    -*- Autotest -*-
 
-# Copyright (C) 2000-2002, 2005-2012 Free Software Foundation, Inc.
+# Copyright (C) 2000-2002, 2005-2013 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
@@ -171,7 +171,7 @@ AT_CHECK_CONFLICTING_OUTPUT([foo.y],
 ])
 
 AT_CHECK_CONFLICTING_OUTPUT([foo.y], [], [-o foo.y],
-[foo.y: refusing to overwrite the input file 'foo.y'
+[foo.y: error: refusing to overwrite the input file 'foo.y'
 ], 1)
 
 
@@ -205,9 +205,9 @@ AT_DATA_GRAMMAR([cxx.y],
 %%
 start: {};
 ]])
-AT_BISON_CHECK([-o "AS_ESCAPE([$1.c])" --defines="AS_ESCAPE([$1.h])" cxx.y])
-AT_CHECK([ls "AS_ESCAPE([$1.c])" "AS_ESCAPE([$1.h])"], [], [ignore])
-AT_COMPILE_CXX([cxx.o], [-c "AS_ESCAPE([$1.c])"])
+AT_BISON_CHECK([-o "AS_ESCAPE([$1.cc])" --defines="AS_ESCAPE([$1.hh])" cxx.y])
+AT_CHECK([ls "AS_ESCAPE([$1.cc])" "AS_ESCAPE([$1.hh])"], [], [ignore])
+AT_COMPILE_CXX([cxx.o], [-c "AS_ESCAPE([$1.cc])"])
 $2
 
 AT_BISON_OPTION_POPDEFS
@@ -231,3 +231,368 @@ AT_CHECK_OUTPUT_FILE_NAME([[@{]])
 AT_CHECK_OUTPUT_FILE_NAME([[@}]])
 AT_CHECK_OUTPUT_FILE_NAME([[@<:@]])
 AT_CHECK_OUTPUT_FILE_NAME([[@:>@]])
+
+
+# AT_TEST(SETUP-NAME, GRAMMAR, DOT-BODY)
+# --------------------------------------
+# Check that the DOT graph for GRAMMAR is DOT-BODY.
+m4_pushdef([AT_TEST],
+[AT_SETUP([$1])
+AT_KEYWORDS([[graph]])
+AT_DATA([[input.y]], [$2])
+AT_BISON_CHECK([[-rall --graph input.y]], [0], [[]], [[ignore]])
+AT_CHECK([[grep -v // input.dot]], [0],
+[[
+digraph "input.y"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+  ]$3[}
+]])
+AT_CLEANUP
+])
+
+
+## ------------------------ ##
+## Graph with no conflicts. ##
+## ------------------------ ##
+
+AT_TEST([Graph with no conflicts],
+[[%%
+exp: a '?' b;
+a: ;
+b: 'b';
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . exp $end\l  1 exp: . a '?' b\l  2 a: .\l"]
+  0 -> 1 [style=dashed label="exp"]
+  0 -> 2 [style=dashed label="a"]
+  0 -> "0R2" [style=solid]
+ "0R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+  1 [label="State 1\n\l  0 $accept: exp . $end\l"]
+  1 -> 3 [style=solid label="$end"]
+  2 [label="State 2\n\l  1 exp: a . '?' b\l"]
+  2 -> 4 [style=solid label="'?'"]
+  3 [label="State 3\n\l  0 $accept: exp $end .\l"]
+  3 -> "3R0" [style=solid]
+ "3R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  4 [label="State 4\n\l  1 exp: a '?' . b\l  3 b: . 'b'\l"]
+  4 -> 5 [style=solid label="'b'"]
+  4 -> 6 [style=dashed label="b"]
+  5 [label="State 5\n\l  3 b: 'b' .\l"]
+  5 -> "5R3" [style=solid]
+ "5R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  6 [label="State 6\n\l  1 exp: a '?' b .\l"]
+  6 -> "6R1" [style=solid]
+ "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+]])
+
+## ------------------------ ##
+## Graph with unsolved S/R. ##
+## ------------------------ ##
+
+AT_TEST([Graph with unsolved S/R],
+[[%%
+start:
+    'a'
+  | empty_a 'a'
+  | 'b'
+  | empty_b 'b'
+  | 'c'
+  | empty_c 'c'
+  ;
+empty_a: %prec 'a';
+empty_b: %prec 'b';
+empty_c: %prec 'c';
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . start $end\l  1 start: . 'a'\l  2      | . empty_a 'a'\l  3      | . 'b'\l  4      | . empty_b 'b'\l  5      | . 'c'\l  6      | . empty_c 'c'\l  7 empty_a: .  ['a']\l  8 empty_b: .  ['b']\l  9 empty_c: .  ['c']\l"]
+  0 -> 1 [style=solid label="'a'"]
+  0 -> 2 [style=solid label="'b'"]
+  0 -> 3 [style=solid label="'c'"]
+  0 -> 4 [style=dashed label="start"]
+  0 -> 5 [style=dashed label="empty_a"]
+  0 -> 6 [style=dashed label="empty_b"]
+  0 -> 7 [style=dashed label="empty_c"]
+  0 -> "0R7d" [label="['a']", style=solid]
+ "0R7d" [label="R7", fillcolor=5, shape=diamond, style=filled]
+  0 -> "0R8d" [label="['b']", style=solid]
+ "0R8d" [label="R8", fillcolor=5, shape=diamond, style=filled]
+  0 -> "0R9d" [label="['c']", style=solid]
+ "0R9d" [label="R9", fillcolor=5, shape=diamond, style=filled]
+  1 [label="State 1\n\l  1 start: 'a' .\l"]
+  1 -> "1R1" [style=solid]
+ "1R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+  2 [label="State 2\n\l  3 start: 'b' .\l"]
+  2 -> "2R3" [style=solid]
+ "2R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  3 [label="State 3\n\l  5 start: 'c' .\l"]
+  3 -> "3R5" [style=solid]
+ "3R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
+  4 [label="State 4\n\l  0 $accept: start . $end\l"]
+  4 -> 8 [style=solid label="$end"]
+  5 [label="State 5\n\l  2 start: empty_a . 'a'\l"]
+  5 -> 9 [style=solid label="'a'"]
+  6 [label="State 6\n\l  4 start: empty_b . 'b'\l"]
+  6 -> 10 [style=solid label="'b'"]
+  7 [label="State 7\n\l  6 start: empty_c . 'c'\l"]
+  7 -> 11 [style=solid label="'c'"]
+  8 [label="State 8\n\l  0 $accept: start $end .\l"]
+  8 -> "8R0" [style=solid]
+ "8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  9 [label="State 9\n\l  2 start: empty_a 'a' .\l"]
+  9 -> "9R2" [style=solid]
+ "9R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+  10 [label="State 10\n\l  4 start: empty_b 'b' .\l"]
+  10 -> "10R4" [style=solid]
+ "10R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
+  11 [label="State 11\n\l  6 start: empty_c 'c' .\l"]
+  11 -> "11R6" [style=solid]
+ "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
+]])
+
+## ---------------------- ##
+## Graph with solved S/R. ##
+## ---------------------- ##
+
+AT_TEST([Graph with solved S/R],
+[[%left 'a'
+%right 'b'
+%right 'c'
+%%
+start:
+    'a'
+  | empty_a 'a'
+  | 'b'
+  | empty_b 'b'
+  | 'c'
+  | empty_c 'c'
+  ;
+empty_a: %prec 'a';
+empty_b: %prec 'b';
+empty_c: %prec 'c';
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . start $end\l  1 start: . 'a'\l  2      | . empty_a 'a'\l  3      | . 'b'\l  4      | . empty_b 'b'\l  5      | . 'c'\l  6      | . empty_c 'c'\l  7 empty_a: .  ['a']\l  8 empty_b: .  []\l  9 empty_c: .  []\l"]
+  0 -> 1 [style=solid label="'b'"]
+  0 -> 2 [style=solid label="'c'"]
+  0 -> 3 [style=dashed label="start"]
+  0 -> 4 [style=dashed label="empty_a"]
+  0 -> 5 [style=dashed label="empty_b"]
+  0 -> 6 [style=dashed label="empty_c"]
+  0 -> "0R7" [style=solid]
+ "0R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
+  1 [label="State 1\n\l  3 start: 'b' .\l"]
+  1 -> "1R3" [style=solid]
+ "1R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  2 [label="State 2\n\l  5 start: 'c' .\l"]
+  2 -> "2R5" [style=solid]
+ "2R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
+  3 [label="State 3\n\l  0 $accept: start . $end\l"]
+  3 -> 7 [style=solid label="$end"]
+  4 [label="State 4\n\l  2 start: empty_a . 'a'\l"]
+  4 -> 8 [style=solid label="'a'"]
+  5 [label="State 5\n\l  4 start: empty_b . 'b'\l"]
+  5 -> 9 [style=solid label="'b'"]
+  6 [label="State 6\n\l  6 start: empty_c . 'c'\l"]
+  6 -> 10 [style=solid label="'c'"]
+  7 [label="State 7\n\l  0 $accept: start $end .\l"]
+  7 -> "7R0" [style=solid]
+ "7R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  8 [label="State 8\n\l  2 start: empty_a 'a' .\l"]
+  8 -> "8R2" [style=solid]
+ "8R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+  9 [label="State 9\n\l  4 start: empty_b 'b' .\l"]
+  9 -> "9R4" [style=solid]
+ "9R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
+  10 [label="State 10\n\l  6 start: empty_c 'c' .\l"]
+  10 -> "10R6" [style=solid]
+ "10R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
+]])
+
+## ---------------- ##
+## Graph with  R/R. ##
+## ---------------- ##
+
+AT_TEST([Graph with R/R],
+[[%%
+exp: a | b;
+a: ;
+b: ;
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . exp $end\l  1 exp: . a\l  2    | . b\l  3 a: .  [$end]\l  4 b: .  [$end]\l"]
+  0 -> 1 [style=dashed label="exp"]
+  0 -> 2 [style=dashed label="a"]
+  0 -> 3 [style=dashed label="b"]
+  0 -> "0R3" [style=solid]
+ "0R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  0 -> "0R4d" [label="[$end]", style=solid]
+ "0R4d" [label="R4", fillcolor=5, shape=diamond, style=filled]
+  1 [label="State 1\n\l  0 $accept: exp . $end\l"]
+  1 -> 4 [style=solid label="$end"]
+  2 [label="State 2\n\l  1 exp: a .\l"]
+  2 -> "2R1" [style=solid]
+ "2R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+  3 [label="State 3\n\l  2 exp: b .\l"]
+  3 -> "3R2" [style=solid]
+ "3R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+  4 [label="State 4\n\l  0 $accept: exp $end .\l"]
+  4 -> "4R0" [style=solid]
+ "4R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+]])
+
+## ---------------------------------------- ##
+## Graph with reductions with multiple LAT. ##
+## ---------------------------------------- ##
+
+AT_TEST([Graph with reductions with multiple LAT],
+[[%%
+exp: a ';' | a ';' | a '.' | b '?' | b '!' | c '?' | c ';';
+a: ;
+b: ;
+c: ;
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . exp $end\l  1 exp: . a ';'\l  2    | . a ';'\l  3    | . a '.'\l  4    | . b '?'\l  5    | . b '!'\l  6    | . c '?'\l  7    | . c ';'\l  8 a: .  [';', '.']\l  9 b: .  ['?', '!']\l 10 c: .  [';', '?']\l"]
+  0 -> 1 [style=dashed label="exp"]
+  0 -> 2 [style=dashed label="a"]
+  0 -> 3 [style=dashed label="b"]
+  0 -> 4 [style=dashed label="c"]
+  0 -> "0R8" [style=solid]
+ "0R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
+  0 -> "0R9" [label="['?', '!']", style=solid]
+ "0R9" [label="R9", fillcolor=3, shape=diamond, style=filled]
+  0 -> "0R10d" [label="[';', '?']", style=solid]
+ "0R10d" [label="R10", fillcolor=5, shape=diamond, style=filled]
+  1 [label="State 1\n\l  0 $accept: exp . $end\l"]
+  1 -> 5 [style=solid label="$end"]
+  2 [label="State 2\n\l  1 exp: a . ';'\l  2    | a . ';'\l  3    | a . '.'\l"]
+  2 -> 6 [style=solid label="';'"]
+  2 -> 7 [style=solid label="'.'"]
+  3 [label="State 3\n\l  4 exp: b . '?'\l  5    | b . '!'\l"]
+  3 -> 8 [style=solid label="'?'"]
+  3 -> 9 [style=solid label="'!'"]
+  4 [label="State 4\n\l  6 exp: c . '?'\l  7    | c . ';'\l"]
+  4 -> 10 [style=solid label="';'"]
+  4 -> 11 [style=solid label="'?'"]
+  5 [label="State 5\n\l  0 $accept: exp $end .\l"]
+  5 -> "5R0" [style=solid]
+ "5R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  6 [label="State 6\n\l  1 exp: a ';' .  [$end]\l  2    | a ';' .  [$end]\l"]
+  6 -> "6R1" [style=solid]
+ "6R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+  6 -> "6R2d" [label="[$end]", style=solid]
+ "6R2d" [label="R2", fillcolor=5, shape=diamond, style=filled]
+  7 [label="State 7\n\l  3 exp: a '.' .\l"]
+  7 -> "7R3" [style=solid]
+ "7R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  8 [label="State 8\n\l  4 exp: b '?' .\l"]
+  8 -> "8R4" [style=solid]
+ "8R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
+  9 [label="State 9\n\l  5 exp: b '!' .\l"]
+  9 -> "9R5" [style=solid]
+ "9R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
+  10 [label="State 10\n\l  7 exp: c ';' .\l"]
+  10 -> "10R7" [style=solid]
+ "10R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
+  11 [label="State 11\n\l  6 exp: c '?' .\l"]
+  11 -> "11R6" [style=solid]
+ "11R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
+]])
+
+## ------------------------------------------------------ ##
+## Graph with a reduction rule both enabled and disabled. ##
+## ------------------------------------------------------ ##
+
+AT_TEST([Graph with a reduction rule both enabled and disabled],
+[[%%
+exp: ifexp | opexp | imm;
+ifexp: "if" exp "then" exp elseexp;
+elseexp: "else" exp | ;
+opexp: exp '+' exp;
+imm: '0';
+]],
+[[
+  0 [label="State 0\n\l  0 $accept: . exp $end\l  1 exp: . ifexp\l  2    | . opexp\l  3    | . imm\l  4 ifexp: . \"if\" exp \"then\" exp elseexp\l  7 opexp: . exp '+' exp\l  8 imm: . '0'\l"]
+  0 -> 1 [style=solid label="\"if\""]
+  0 -> 2 [style=solid label="'0'"]
+  0 -> 3 [style=dashed label="exp"]
+  0 -> 4 [style=dashed label="ifexp"]
+  0 -> 5 [style=dashed label="opexp"]
+  0 -> 6 [style=dashed label="imm"]
+  1 [label="State 1\n\l  1 exp: . ifexp\l  2    | . opexp\l  3    | . imm\l  4 ifexp: . \"if\" exp \"then\" exp elseexp\l  4      | \"if\" . exp \"then\" exp elseexp\l  7 opexp: . exp '+' exp\l  8 imm: . '0'\l"]
+  1 -> 1 [style=solid label="\"if\""]
+  1 -> 2 [style=solid label="'0'"]
+  1 -> 7 [style=dashed label="exp"]
+  1 -> 4 [style=dashed label="ifexp"]
+  1 -> 5 [style=dashed label="opexp"]
+  1 -> 6 [style=dashed label="imm"]
+  2 [label="State 2\n\l  8 imm: '0' .\l"]
+  2 -> "2R8" [style=solid]
+ "2R8" [label="R8", fillcolor=3, shape=diamond, style=filled]
+  3 [label="State 3\n\l  0 $accept: exp . $end\l  7 opexp: exp . '+' exp\l"]
+  3 -> 8 [style=solid label="$end"]
+  3 -> 9 [style=solid label="'+'"]
+  4 [label="State 4\n\l  1 exp: ifexp .\l"]
+  4 -> "4R1" [style=solid]
+ "4R1" [label="R1", fillcolor=3, shape=diamond, style=filled]
+  5 [label="State 5\n\l  2 exp: opexp .\l"]
+  5 -> "5R2" [style=solid]
+ "5R2" [label="R2", fillcolor=3, shape=diamond, style=filled]
+  6 [label="State 6\n\l  3 exp: imm .\l"]
+  6 -> "6R3" [style=solid]
+ "6R3" [label="R3", fillcolor=3, shape=diamond, style=filled]
+  7 [label="State 7\n\l  4 ifexp: \"if\" exp . \"then\" exp elseexp\l  7 opexp: exp . '+' exp\l"]
+  7 -> 10 [style=solid label="\"then\""]
+  7 -> 9 [style=solid label="'+'"]
+  8 [label="State 8\n\l  0 $accept: exp $end .\l"]
+  8 -> "8R0" [style=solid]
+ "8R0" [label="Acc", fillcolor=1, shape=diamond, style=filled]
+  9 [label="State 9\n\l  1 exp: . ifexp\l  2    | . opexp\l  3    | . imm\l  4 ifexp: . \"if\" exp \"then\" exp elseexp\l  7 opexp: . exp '+' exp\l  7      | exp '+' . exp\l  8 imm: . '0'\l"]
+  9 -> 1 [style=solid label="\"if\""]
+  9 -> 2 [style=solid label="'0'"]
+  9 -> 11 [style=dashed label="exp"]
+  9 -> 4 [style=dashed label="ifexp"]
+  9 -> 5 [style=dashed label="opexp"]
+  9 -> 6 [style=dashed label="imm"]
+  10 [label="State 10\n\l  1 exp: . ifexp\l  2    | . opexp\l  3    | . imm\l  4 ifexp: . \"if\" exp \"then\" exp elseexp\l  4      | \"if\" exp \"then\" . exp elseexp\l  7 opexp: . exp '+' exp\l  8 imm: . '0'\l"]
+  10 -> 1 [style=solid label="\"if\""]
+  10 -> 2 [style=solid label="'0'"]
+  10 -> 12 [style=dashed label="exp"]
+  10 -> 4 [style=dashed label="ifexp"]
+  10 -> 5 [style=dashed label="opexp"]
+  10 -> 6 [style=dashed label="imm"]
+  11 [label="State 11\n\l  7 opexp: exp . '+' exp\l  7      | exp '+' exp .  [$end, \"then\", \"else\", '+']\l"]
+  11 -> 9 [style=solid label="'+'"]
+  11 -> "11R7d" [label="['+']", style=solid]
+ "11R7d" [label="R7", fillcolor=5, shape=diamond, style=filled]
+  11 -> "11R7" [style=solid]
+ "11R7" [label="R7", fillcolor=3, shape=diamond, style=filled]
+  12 [label="State 12\n\l  4 ifexp: \"if\" exp \"then\" exp . elseexp\l  5 elseexp: . \"else\" exp\l  6        | .  [$end, \"then\", \"else\", '+']\l  7 opexp: exp . '+' exp\l"]
+  12 -> 13 [style=solid label="\"else\""]
+  12 -> 9 [style=solid label="'+'"]
+  12 -> 14 [style=dashed label="elseexp"]
+  12 -> "12R6d" [label="[\"else\", '+']", style=solid]
+ "12R6d" [label="R6", fillcolor=5, shape=diamond, style=filled]
+  12 -> "12R6" [style=solid]
+ "12R6" [label="R6", fillcolor=3, shape=diamond, style=filled]
+  13 [label="State 13\n\l  1 exp: . ifexp\l  2    | . opexp\l  3    | . imm\l  4 ifexp: . \"if\" exp \"then\" exp elseexp\l  5 elseexp: \"else\" . exp\l  7 opexp: . exp '+' exp\l  8 imm: . '0'\l"]
+  13 -> 1 [style=solid label="\"if\""]
+  13 -> 2 [style=solid label="'0'"]
+  13 -> 15 [style=dashed label="exp"]
+  13 -> 4 [style=dashed label="ifexp"]
+  13 -> 5 [style=dashed label="opexp"]
+  13 -> 6 [style=dashed label="imm"]
+  14 [label="State 14\n\l  4 ifexp: \"if\" exp \"then\" exp elseexp .\l"]
+  14 -> "14R4" [style=solid]
+ "14R4" [label="R4", fillcolor=3, shape=diamond, style=filled]
+  15 [label="State 15\n\l  5 elseexp: \"else\" exp .  [$end, \"then\", \"else\", '+']\l  7 opexp: exp . '+' exp\l"]
+  15 -> 9 [style=solid label="'+'"]
+  15 -> "15R5d" [label="['+']", style=solid]
+ "15R5d" [label="R5", fillcolor=5, shape=diamond, style=filled]
+  15 -> "15R5" [style=solid]
+ "15R5" [label="R5", fillcolor=3, shape=diamond, style=filled]
+]])
+
+m4_popdef([AT_TEST])
index b330abf..3384307 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.2])
-m4_define([AT_PACKAGE_STRING],    [GNU Bison 2.6.2])
+m4_define([AT_PACKAGE_VERSION],   [2.7.12-4996])
+m4_define([AT_PACKAGE_STRING],    [GNU Bison 2.7.12-4996])
 m4_define([AT_PACKAGE_BUGREPORT], [bug-bison@gnu.org])
index d2c0926..7dde295 100644 (file)
@@ -1,6 +1,6 @@
 # Checking Push Parsing.                            -*- Autotest -*-
 
-# Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2013 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
@@ -153,7 +153,7 @@ start: ;
 AT_BISON_OPTION_POPDEFS
 
 AT_BISON_CHECK([[input.y]], [[1]], [],
-[[input.y:2.9-21: %define variable 'api.push-pull' is not used
+[[input.y:2.9-21: error: %define variable 'api.push-pull' is not used
 ]])
 
 AT_CLEANUP
index c528eed..6de7186 100644 (file)
@@ -1,6 +1,6 @@
 # Exercising Bison Grammar Reduction.                      -*- Autotest -*-
 
-# Copyright (C) 2001-2002, 2007-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2002, 2007-2013 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
@@ -142,6 +142,65 @@ useless8: '8';
 useless9: '9';
 ]])
 
+AT_BISON_CHECK([[-fcaret input.y]], 0, [],
+[[input.y: warning: 9 nonterminals useless in grammar
+input.y: warning: 9 rules useless in grammar
+input.y:6.1-8: warning: nonterminal useless in grammar: useless1
+ useless1: '1';
+ ^^^^^^^^
+input.y:7.1-8: warning: nonterminal useless in grammar: useless2
+ useless2: '2';
+ ^^^^^^^^
+input.y:8.1-8: warning: nonterminal useless in grammar: useless3
+ useless3: '3';
+ ^^^^^^^^
+input.y:9.1-8: warning: nonterminal useless in grammar: useless4
+ useless4: '4';
+ ^^^^^^^^
+input.y:10.1-8: warning: nonterminal useless in grammar: useless5
+ useless5: '5';
+ ^^^^^^^^
+input.y:11.1-8: warning: nonterminal useless in grammar: useless6
+ useless6: '6';
+ ^^^^^^^^
+input.y:12.1-8: warning: nonterminal useless in grammar: useless7
+ useless7: '7';
+ ^^^^^^^^
+input.y:13.1-8: warning: nonterminal useless in grammar: useless8
+ useless8: '8';
+ ^^^^^^^^
+input.y:14.1-8: warning: nonterminal useless in grammar: useless9
+ useless9: '9';
+ ^^^^^^^^
+input.y:6.11-13: warning: rule useless in grammar
+ useless1: '1';
+           ^^^
+input.y:7.11-13: warning: rule useless in grammar
+ useless2: '2';
+           ^^^
+input.y:8.11-13: warning: rule useless in grammar
+ useless3: '3';
+           ^^^
+input.y:9.11-13: warning: rule useless in grammar
+ useless4: '4';
+           ^^^
+input.y:10.11-13: warning: rule useless in grammar
+ useless5: '5';
+           ^^^
+input.y:11.11-13: warning: rule useless in grammar
+ useless6: '6';
+           ^^^
+input.y:12.11-13: warning: rule useless in grammar
+ useless7: '7';
+           ^^^
+input.y:13.11-13: warning: rule useless in grammar
+ useless8: '8';
+           ^^^
+input.y:14.11-13: warning: rule useless in grammar
+ useless9: '9';
+           ^^^
+]])
+
 AT_BISON_CHECK([[input.y]], 0, [],
 [[input.y: warning: 9 nonterminals useless in grammar
 input.y: warning: 9 rules useless in grammar
@@ -238,6 +297,26 @@ non_productive: non_productive useless_token
 %%
 ]])
 
+AT_BISON_CHECK([[-fcaret not-reduced.y]], 0, [],
+[[not-reduced.y: warning: 2 nonterminals useless in grammar
+not-reduced.y: warning: 3 rules useless in grammar
+not-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable
+ not_reachable: useful  { /* A not reachable action. */ }
+ ^^^^^^^^^^^^^
+not-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^
+not-reduced.y:11.6-57: warning: rule useless in grammar
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:14.16-56: warning: rule useless in grammar
+ not_reachable: useful  { /* A not reachable action. */ }
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:17.17-18.63: warning: rule useless in grammar
+ non_productive: non_productive useless_token
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+]])
+
 AT_BISON_CHECK([[not-reduced.y]], 0, [],
 [[not-reduced.y: warning: 2 nonterminals useless in grammar
 not-reduced.y: warning: 3 rules useless in grammar
@@ -437,7 +516,7 @@ dnl BISON-STDERR
 [],
 
 dnl TABLES
-[[state 0
+[[State 0
 
     0 $accept: . S $end
     1 S: . 'a' A 'a'
@@ -451,7 +530,7 @@ dnl TABLES
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a'
@@ -462,7 +541,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a'
@@ -473,7 +552,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a'
@@ -487,14 +566,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 $accept: S . $end
 
     $end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a'
     5  | 'a' .  ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
@@ -505,21 +584,21 @@ state 5
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a'
     5  | 'a' .  [$end]
@@ -533,7 +612,7 @@ state 8
                   [[$default]])[  reduce using rule 5 (A)
 
 
-state 9
+State 9
 
     7 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -541,7 +620,7 @@ state 9
                   [[$default]])[  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -549,14 +628,14 @@ state 10
                   [[$default]])[  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 $accept: S $end .
 
     $default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
 
@@ -564,7 +643,7 @@ state 12
                   [[$default]])[  reduce using rule 4 (A)
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -572,7 +651,7 @@ state 13
                   [[$default]])[  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -580,7 +659,7 @@ state 14
                   [[$default]])[  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     6 c: 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -589,7 +668,7 @@ state 15
                                                                        [[]], [[
 
 
-state 16
+State 16
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['b']
@@ -601,14 +680,14 @@ state 16
                   [[$default]])[  reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' .  [$end]
 
     $end  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     4 A: 'a' 'a' .  ['b']
 
@@ -653,7 +732,7 @@ dnl BISON-STDERR
 [],
 
 dnl TABLES
-[[state 0
+[[State 0
 
     0 $accept: . S $end
     1 S: . 'a' A 'a'
@@ -667,7 +746,7 @@ dnl TABLES
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' 'a'
@@ -678,7 +757,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' 'a'
@@ -689,7 +768,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' 'a'
@@ -703,14 +782,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 $accept: S . $end
 
     $end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -718,21 +797,21 @@ state 5
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -741,7 +820,7 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     7 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -749,7 +828,7 @@ state 9
                   [[$default]])[  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -757,14 +836,14 @@ state 10
                   [[$default]])[  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 $accept: S $end .
 
     $default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ]AT_COND_CASE([[LALR]], [[['a', 'b']]], [[['a']]])[
@@ -775,7 +854,7 @@ state 12
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -783,7 +862,7 @@ state 13
                   [[$default]])[  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -791,7 +870,7 @@ state 14
                   [[$default]])[  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  [$end]
@@ -805,7 +884,7 @@ state 15
                   [[$default]])[  reduce using rule 5 (A)
 
 
-state 16
+State 16
 
     4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
 
@@ -813,7 +892,7 @@ state 16
                   [[$default]])[  reduce using rule 4 (A)
 
 
-state 17
+State 17
 
     6 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -822,7 +901,7 @@ state 17
                                                                        [[]], [[
 
 
-state 18
+State 18
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -831,7 +910,7 @@ state 18
                                               [[19]])[
 
 
-state 19]AT_COND_CASE([[canonical LR]], [[
+State 19]AT_COND_CASE([[canonical LR]], [[
 
     4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -839,7 +918,7 @@ state 19]AT_COND_CASE([[canonical LR]], [[
                   [[$default]])[  reduce using rule 4 (A)
 
 
-state 20]])[
+State 20]])[
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['b']
@@ -851,7 +930,7 @@ state 20]])[
                   [[$default]])[  reduce using rule 5 (A)]AT_COND_CASE([[canonical LR]], [[
 
 
-state 21
+State 21
 
     4 A: 'a' 'a' 'a' .]AT_COND_CASE([[canonical LR]], [[  ['b']]])[
 
@@ -900,7 +979,7 @@ dnl BISON-STDERR
 [],
 
 dnl TABLES
-[[state 0
+[[State 0
 
     0 $accept: . S $end
     1 S: . 'a' A 'a'
@@ -914,7 +993,7 @@ dnl TABLES
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' B
@@ -924,7 +1003,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' B
@@ -934,7 +1013,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' B
@@ -947,35 +1026,35 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 $accept: S . $end
 
     $end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' B
     7 c: 'a' . 'a' 'b'
@@ -983,7 +1062,7 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     8 c: A .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -991,7 +1070,7 @@ state 9
                   [[$default]])[  reduce using rule 8 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -999,14 +1078,14 @@ state 10
                   [[$default]])[  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 $accept: S $end .
 
     $default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -1020,7 +1099,7 @@ state 12
     Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1028,7 +1107,7 @@ state 13
                   [[$default]])[  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1036,7 +1115,7 @@ state 14
                   [[$default]])[  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -1053,7 +1132,7 @@ state 15
     B  go to state ]AT_COND_CASE([[canonical LR]], [[21]], [[17]])[
 
 
-state 16
+State 16
 
     5 B: 'a' .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
 
@@ -1061,7 +1140,7 @@ state 16
                   [[$default]])[  reduce using rule 5 (B)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' B .]AT_COND_CASE([[canonical LR]], [[  ['a']]])[
 
@@ -1069,7 +1148,7 @@ state 17
                   [[$default]])[  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     7 c: 'a' 'a' 'b' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1077,7 +1156,7 @@ state 18
                   [[$default]])[  reduce using rule 7 (c)]AT_COND_CASE([[LALR]], [], [[
 
 
-state 19
+State 19
 
     4 A: 'a' . 'a' B
 
@@ -1085,21 +1164,21 @@ state 19
                                               [[20]])[
 
 
-state 20]AT_COND_CASE([[canonical LR]], [[
+State 20]AT_COND_CASE([[canonical LR]], [[
 
     5 B: 'a' .  [$end]
 
     $end  reduce using rule 5 (B)
 
 
-state 21
+State 21
 
     4 A: 'a' 'a' B .  [$end]
 
     $end  reduce using rule 4 (A)
 
 
-state 22]])[
+State 22]])[
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -1114,14 +1193,14 @@ state 22]])[
     B  go to state ]AT_COND_CASE([[canonical LR]], [[24
 
 
-state 23
+State 23
 
     5 B: 'a' .  ['b']
 
     'b'  reduce using rule 5 (B)
 
 
-state 24
+State 24
 
     4 A: 'a' 'a' B .  ['b']
 
@@ -1195,7 +1274,7 @@ dnl BISON-STDERR
 ]], [])],
 
 dnl TABLES
-[[state 0
+[[State 0
 
     0 $accept: . S $end
     1 S: . 'a' A 'f'
@@ -1213,7 +1292,7 @@ dnl TABLES
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'f'
     2  | 'a' . B
@@ -1226,7 +1305,7 @@ state 1
     B  go to state 7
 
 
-state 2
+State 2
 
     3 S: 'b' . A 'f'
     4  | 'b' . B 'g'
@@ -1240,7 +1319,7 @@ state 2
     B  go to state 10
 
 
-state 3
+State 3
 
     6 S: 'c' . 'c' A 'g'
     7  | 'c' . 'c' B
@@ -1248,14 +1327,14 @@ state 3
     'c'  shift, and go to state 11
 
 
-state 4
+State 4
 
     0 $accept: S . $end
 
     $end  shift, and go to state 12
 
 
-state 5
+State 5
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -1265,14 +1344,14 @@ state 5
                                                [[20]])[
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'f'
 
     'f'  shift, and go to state 14
 
 
-state 7
+State 7
 
     2 S: 'a' B .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1280,7 +1359,7 @@ state 7
                   [[$default]])[  reduce using rule 2 (S)
 
 
-state 8
+State 8
 
     5 S: 'b' 'd' .  [$end]
     8 A: 'd' . 'e'
@@ -1293,21 +1372,21 @@ state 8
                   [[$default]])[  reduce using rule 5 (S)
 
 
-state 9
+State 9
 
     3 S: 'b' A . 'f'
 
     'f'  shift, and go to state 15
 
 
-state 10
+State 10
 
     4 S: 'b' B . 'g'
 
     'g'  shift, and go to state 16
 
 
-state 11
+State 11
 
     6 S: 'c' 'c' . A 'g'
     7  | 'c' 'c' . B
@@ -1321,14 +1400,14 @@ state 11
     B  go to state 18
 
 
-state 12
+State 12
 
     0 $accept: S $end .
 
     $default  accept]AT_COND_CASE([[LALR]], [[
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f', 'g']
     9 B: 'd' 'e' .  [$end, 'g']
@@ -1339,7 +1418,7 @@ state 13
     $default  reduce using rule 8 (A)]], [[
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f']
     9 B: 'd' 'e' .  ]AT_COND_CASE([[canonical LR]], [[[$end]]], [[['g']]])[
@@ -1350,7 +1429,7 @@ state 13
                   [[$default]])[  reduce using rule 8 (A)]])[
 
 
-state 14
+State 14
 
     1 S: 'a' A 'f' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1358,7 +1437,7 @@ state 14
                   [[$default]])[  reduce using rule 1 (S)
 
 
-state 15
+State 15
 
     3 S: 'b' A 'f' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1366,7 +1445,7 @@ state 15
                   [[$default]])[  reduce using rule 3 (S)
 
 
-state 16
+State 16
 
     4 S: 'b' B 'g' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1374,14 +1453,14 @@ state 16
                   [[$default]])[  reduce using rule 4 (S)
 
 
-state 17
+State 17
 
     6 S: 'c' 'c' A . 'g'
 
     'g'  shift, and go to state 19
 
 
-state 18
+State 18
 
     7 S: 'c' 'c' B .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1389,7 +1468,7 @@ state 18
                   [[$default]])[  reduce using rule 7 (S)
 
 
-state 19
+State 19
 
     6 S: 'c' 'c' A 'g' .]AT_COND_CASE([[canonical LR]], [[  [$end]]])[
 
@@ -1398,7 +1477,7 @@ state 19
                                                                        [[]], [[
 
 
-state 20]AT_COND_CASE([[canonical LR]], [[
+State 20]AT_COND_CASE([[canonical LR]], [[
 
     8 A: 'd' 'e' .  ['f']
     9 B: 'd' 'e' .  ['g']
@@ -1407,7 +1486,7 @@ state 20]AT_COND_CASE([[canonical LR]], [[
     'g'  reduce using rule 9 (B)
 
 
-state 21
+State 21
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -1415,7 +1494,7 @@ state 21
     'e'  shift, and go to state 22
 
 
-state 22
+State 22
 
     8 A: 'd' 'e' .  ['g']
     9 B: 'd' 'e' .  [$end]
@@ -1491,7 +1570,7 @@ c: ;
 ]],
 dnl Visit each state mentioned above.
 [['a', 'a']],
-[[state 0
+[[State 0
 
     0 $accept: . start $end
     1 start: . a b
@@ -1505,7 +1584,7 @@ dnl Visit each state mentioned above.
     a      go to state 3
 
 
-state 1
+State 1
 
     4 a: 'a' .]AT_COND_CASE([[accepting]], [[  [$end, 'a', 'b']
 
@@ -1516,14 +1595,14 @@ state 1
     $default  reduce using rule 4 (a)]])[
 
 
-state 2
+State 2
 
     0 $accept: start . $end
 
     $end  shift, and go to state 4
 
 
-state 3
+State 3
 
     1 start: a . b
     2      | a . b 'a'
@@ -1542,14 +1621,14 @@ state 3
     c  go to state 6
 
 
-state 4
+State 4
 
     0 $accept: start $end .
 
     $default  accept
 
 
-state 5
+State 5
 
     1 start: a b .  [$end]
     2      | a b . 'a'
@@ -1560,14 +1639,14 @@ state 5
                   [[$end]])[  reduce using rule 1 (start)
 
 
-state 6
+State 6
 
     3 start: a c . 'b'
 
     'b'  shift, and go to state 8
 
 
-state 7
+State 7
 
     2 start: a b 'a' .]AT_COND_CASE([[accepting]], [[  [$end]
 
@@ -1576,7 +1655,7 @@ state 7
     $default  reduce using rule 2 (start)]])[
 
 
-state 8
+State 8
 
     3 start: a c 'b' .]AT_COND_CASE([[accepting]], [[  [$end]
 
index 2f02993..6a165bf 100644 (file)
@@ -1,6 +1,6 @@
 # Bison Regressions.                               -*- Autotest -*-
 
-# Copyright (C) 2001-2012 Free Software Foundation, Inc.
+# Copyright (C) 2001-2013 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
@@ -293,7 +293,7 @@ $@2 (9)
     on left: 3, on right: 4
 
 
-state 0
+State 0
 
     0 $accept: . expr $end
 
@@ -305,7 +305,7 @@ state 0
     $@2   go to state 3
 
 
-state 1
+State 1
 
     2 expr: 'a' . $@1 'b'
 
@@ -314,42 +314,42 @@ state 1
     $@1  go to state 4
 
 
-state 2
+State 2
 
     0 $accept: expr . $end
 
     $end  shift, and go to state 5
 
 
-state 3
+State 3
 
     4 expr: $@2 . 'c'
 
     'c'  shift, and go to state 6
 
 
-state 4
+State 4
 
     2 expr: 'a' $@1 . 'b'
 
     'b'  shift, and go to state 7
 
 
-state 5
+State 5
 
     0 $accept: expr $end .
 
     $default  accept
 
 
-state 6
+State 6
 
     4 expr: $@2 'c' .
 
     $default  reduce using rule 4 (expr)
 
 
-state 7
+State 7
 
     2 expr: 'a' $@1 'b' .
 
@@ -401,15 +401,15 @@ default: 'a' }
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:2.1: invalid character: '?'
-input.y:3.14: invalid character: '}'
-input.y:4.1: invalid character: '%'
-input.y:4.2: invalid character: '&'
-input.y:5.1-17: invalid directive: '%a-does-not-exist'
-input.y:6.1: invalid character: '%'
-input.y:6.2: invalid character: '-'
-input.y:7.1-8.0: missing '%}' at end of file
-input.y:7.1-8.0: syntax error, unexpected %{...%}
+[[input.y:2.1: error: invalid character: '?'
+input.y:3.14: error: invalid character: '}'
+input.y:4.1: error: invalid character: '%'
+input.y:4.2: error: invalid character: '&'
+input.y:5.1-17: error: invalid directive: '%a-does-not-exist'
+input.y:6.1: error: invalid character: '%'
+input.y:6.2: error: invalid character: '-'
+input.y:7.1-8.0: error: missing '%}' at end of file
+input.y:7.1-8.0: error: syntax error, unexpected %{...%}
 ]])
 
 AT_CLEANUP
@@ -428,7 +428,7 @@ AT_DATA([input.y],
 ]])
 
 AT_BISON_CHECK([input.y], [1], [],
-[[input.y:3.1-15: syntax error, unexpected %initial-action, expecting {...}
+[[input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
 ]])
 
 AT_CLEANUP
@@ -481,6 +481,14 @@ AT_BISON_CHECK([-o input.c input.y], [[0]], [[]],
 [[input.y:22.8-14: warning: symbol SPECIAL redeclared
 input.y:22.8-63: warning: symbol "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!" used more than once as a literal string
 ]])
+AT_BISON_CHECK([-fcaret -o input.c input.y], [[0]], [[]],
+[[input.y:22.8-14: warning: symbol SPECIAL redeclared
+ %token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
+        ^^^^^^^
+input.y:22.8-63: warning: symbol "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!" used more than once as a literal string
+ %token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+]])
 AT_COMPILE([input])
 
 # Checking the error message here guarantees that yytname, which does contain
@@ -598,7 +606,7 @@ $@1 (11)
     on left: 4, on right: 5
 
 
-state 0
+State 0
 
     0 $accept: . CONST_DEC_PART $end
 
@@ -610,14 +618,14 @@ state 0
     $@1             go to state 4
 
 
-state 1
+State 1
 
     0 $accept: CONST_DEC_PART . $end
 
     $end  shift, and go to state 5
 
 
-state 2
+State 2
 
     1 CONST_DEC_PART: CONST_DEC_LIST .
     3 CONST_DEC_LIST: CONST_DEC_LIST . CONST_DEC
@@ -629,56 +637,56 @@ state 2
     $@1        go to state 4
 
 
-state 3
+State 3
 
     2 CONST_DEC_LIST: CONST_DEC .
 
     $default  reduce using rule 2 (CONST_DEC_LIST)
 
 
-state 4
+State 4
 
     5 CONST_DEC: $@1 . undef_id_tok '=' const_id_tok ';'
 
     undef_id_tok  shift, and go to state 7
 
 
-state 5
+State 5
 
     0 $accept: CONST_DEC_PART $end .
 
     $default  accept
 
 
-state 6
+State 6
 
     3 CONST_DEC_LIST: CONST_DEC_LIST CONST_DEC .
 
     $default  reduce using rule 3 (CONST_DEC_LIST)
 
 
-state 7
+State 7
 
     5 CONST_DEC: $@1 undef_id_tok . '=' const_id_tok ';'
 
     '='  shift, and go to state 8
 
 
-state 8
+State 8
 
     5 CONST_DEC: $@1 undef_id_tok '=' . const_id_tok ';'
 
     const_id_tok  shift, and go to state 9
 
 
-state 9
+State 9
 
     5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok . ';'
 
     ';'  shift, and go to state 10
 
 
-state 10
+State 10
 
     5 CONST_DEC: $@1 undef_id_tok '=' const_id_tok ';' .
 
@@ -1125,8 +1133,8 @@ a: 'a' ;
 ]])
 
 AT_BISON_CHECK([[--report=all input.y]])
-AT_CHECK([[sed -n '/^state 1$/,/^state 2$/p' input.output]], [[0]],
-[[state 1
+AT_CHECK([[sed -n '/^State 1$/,/^State 2$/p' input.output]], [[0]],
+[[State 1
 
     2 start: 'a' . a 'a'
     3 a: . 'a'
@@ -1139,7 +1147,7 @@ AT_CHECK([[sed -n '/^state 1$/,/^state 2$/p' input.output]], [[0]],
     a  go to state 5
 
 
-state 2
+State 2
 ]])
 
 AT_CLEANUP
@@ -1481,17 +1489,17 @@ AT_CHECK([[grep 'syntax error,' stderr.txt]], [[0]],
 
 # Check number of default reductions in inconsistent states to be sure
 # syntax error is detected before unnecessary reductions are performed.
-AT_CHECK([[perl -0777 -ne 'print s/inconsistent default reduction//g;' \
+AT_CHECK([[$PERL -0777 -ne 'print s/inconsistent default reduction//g;' \
            < stdout.txt || exit 77]], [[0]], [[14]])
 
 # Check number of default reductions in consistent states to be sure
 # it is performed before the syntax error is detected.
-AT_CHECK([[perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
+AT_CHECK([[$PERL -0777 -ne 'print s/\bconsistent default reduction//g;' \
            < stdout.txt || exit 77]], [[0]], [[2]])
 
 # Check number of reallocs to be sure reallocated memory isn't somehow
 # lost between LAC invocations.
-AT_CHECK([[perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
+AT_CHECK([[$PERL -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
            || exit 77]], [[0]], [[3]])
 
 AT_BISON_OPTION_POPDEFS
@@ -1597,14 +1605,14 @@ AT_CLEANUP
 m4_pushdef([AT_TEST],
 [AT_SETUP([[Lex and parse params: $1]])
 
-AT_BISON_OPTION_PUSHDEFS([%locations %skeleton $1])
+AT_BISON_OPTION_PUSHDEFS([%locations %skeleton "$1" %parse-param { int x } %parse-param { int y }])
 
 ## FIXME: Improve parsing of parse-param and use the generated
 ## yyerror.
 AT_DATA_GRAMMAR([input.y],
 [[%defines
 %locations
-%skeleton $1
+%skeleton "$1"
 %union { int ival; }
 %parse-param { int x }
 // Spaces, tabs, and new lines.
@@ -1618,26 +1626,18 @@ AT_DATA_GRAMMAR([input.y],
 #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_YYERROR_DECLARE[
   ]AT_YYLEX_DECLARE[
 %}
 
 %%
 exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
 %%
+]AT_YYERROR_DEFINE[
 ]AT_YYLEX_DEFINE(["a"])[
 
 ]AT_SKEL_CC_IF(
-[AT_YYERROR_DEFINE
-
-int
+[int
 yyparse (int x, int y)
 {
   yy::parser parser(x, y);
@@ -1653,7 +1653,7 @@ main (void)
 ]])
 
 AT_FULL_COMPILE([input])
-AT_CHECK([./input], 0, [[x: 1, y: 2
+AT_PARSER_CHECK([./input], 0, [[x: 1, y: 2
 ]])
 AT_BISON_OPTION_POPDEFS
 
@@ -1661,9 +1661,9 @@ 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")
+AT_TEST([yacc.c])
+AT_TEST([glr.c])
+AT_TEST([lalr1.cc])
+AT_TEST([glr.cc])
 
 m4_popdef([AT_TEST])
index 388ee09..0e6b80f 100644 (file)
@@ -1,6 +1,6 @@
 # Exercising Bison Grammar Sets.                      -*- Autotest -*-
 
-# Copyright (C) 2001-2002, 2005, 2007, 2009-2012 Free Software
+# Copyright (C) 2001-2002, 2005, 2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -287,7 +287,7 @@ mv stdout expout
 
 # Get the final state in the report, from the "accept" action..
 AT_CHECK([sed -n '
-           /^state \(.*\)/{
+           /^State \(.*\)/{
             s//final state \1/
             x
           }
index 76cf066..0afe103 100644 (file)
@@ -1,6 +1,6 @@
 # Checking skeleton support.                     -*- Autotest -*-
 
-# Copyright (C) 2007, 2009-2012 Free Software Foundation, Inc.
+# Copyright (C) 2007, 2009-2013 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
@@ -114,10 +114,10 @@ main (void)
 }
 ]])
 
-AT_DATA([[input-cmd-line.y]],
+AT_DATA_GRAMMAR([[input-cmd-line.y]],
 [AT_GRAM])
 
-AT_DATA([[input-gram.y]],
+AT_DATA_GRAMMAR([[input-gram.y]],
 [[%skeleton "yacc.c"]
 AT_GRAM])
 
@@ -157,7 +157,7 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[input.y]], [[1]], [[]],
-[[<skeleton default value>: invalid value for %define Boolean variable 'foo'
+[[<skeleton default value>: error: invalid value for %define Boolean variable 'foo'
 ]])
 
 AT_CLEANUP
@@ -193,8 +193,8 @@ start: ;
 AT_BISON_CHECK([[input1.y]], [[1]], [[]],
 [[input1.y: warning: foow fubar
 foow.y:2.3-5.3: warning: foowat fubar
-input1.y: fooc fubar
-fooc.y:1.1-10.5: foocat fubar
+input1.y: error: fooc fubar
+fooc.y:1.1-10.5: error: foocat fubar
 input1.y: fatal error: foof fubar
 ]])
 
@@ -264,7 +264,7 @@ start: ;
 ]])
 
 AT_BISON_CHECK([[input1.y]], [[1]], [[]],
-[[input1.y: non-fatal error
+[[input1.y: error: non-fatal error
 input1.y: fatal error: M4 should exit immediately here
 ]])
 
@@ -315,7 +315,7 @@ print '@output(@,@)', "\n";
 (print "garbage"x10, "\n") for (1..1000);
 print "${M4}_divert_pop(0)\n";
 ]])
-AT_CHECK([[perl gen-skel.pl > skel.c || exit 77]])
+AT_CHECK([[$PERL gen-skel.pl > skel.c || exit 77]])
 
 AT_DATA([[input.y]],
 [[%skeleton "./skel.c"
index e2b7005..05f2057 100644 (file)
@@ -1,6 +1,6 @@
 # Executing Actions.                               -*- Autotest -*-
 
-# Copyright (C) 2002, 2004-2005, 2007, 2009-2012 Free Software
+# Copyright (C) 2002, 2004-2005, 2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -47,13 +47,14 @@ m4_define([AT_SYNCLINES_COMPILE],
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -63,13 +64,38 @@ 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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
-AT_CHECK([[perl -p -0777 - stderr <<\EOF
+AT_CHECK([[$PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$][1:$][2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$][1:$][2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$][1: #error /gm;
 EOF
 ]],
   0, [stdout])
@@ -101,7 +127,7 @@ AT_BISON_OPTION_PUSHDEFS
 
 AT_DATA([syncline.c],
 [[#error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 ]])
 
 AT_SYNCLINES_COMPILE([syncline.c])
@@ -216,4 +242,54 @@ exp: '0';
 [input.y:8: #error "8"
 ])
 
+## -------------------- ##
+## %code top syncline.  ##
+## -------------------- ##
+
+AT_TEST([%code top syncline],
+[[%code top {
+#error "2"
+}
+%{
+]AT_YYERROR_DECLARE_EXTERN[
+]AT_YYLEX_DECLARE_EXTERN[
+%}
+%%
+exp: '0';
+%%
+]],
+[input.y:2: #error "2"
+])
+
+m4_popdef([AT_TEST])
+
+## ----------- ##
+## %no-lines.  ##
+## ----------- ##
+
+m4_pushdef([AT_TEST],
+[AT_SETUP([%no-lines])
+
+AT_BISON_OPTION_PUSHDEFS([%skeleton "$1" %defines])
+AT_DATA_GRAMMAR([input.y],
+[%skeleton "$1" %defines
+%{
+]AT_YYERROR_DECLARE_EXTERN[
+]AT_YYLEX_DECLARE_EXTERN[
+%}
+%%
+exp: '0'
+])
+AT_BISON_CHECK([--no-lines -o input.AT_SKEL_CC_IF([cc], [c]) -d input.y])
+AT_CHECK([[grep '#line' ]AT_SKEL_CC_IF([*.cc *.hh], [*.c *.h])], 1)
+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])
index e26fb06..93a9e37 100755 (executable)
@@ -590,331 +590,358 @@ at_tested='bison'
 # numerical order.
 at_format='???'
 # Description of all the test groups.
-at_help_all="1;input.at:27;Invalid \$n and @n;;
-2;input.at:47;Type Clashes;;
-3;input.at:161;Unused values;;
-4;input.at:171;Unused values before symbol declarations;;
-5;input.at:181;Default %printer and %destructor redeclared;;
-6;input.at:241;Per-type %printer and %destructor redeclared;;
-7;input.at:284;Unused values with default %destructor;;
-8;input.at:326;Unused values with per-type %destructor;;
-9;input.at:351;Incompatible Aliases;;
-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.2;;
-14;input.at:589;Require 100.0;;
-15;input.at:596;String aliases for character tokens;;
-16;input.at:617;Symbols;;
-17;input.at:683;Numbered tokens;;
-18;input.at:721;Unclosed constructs;;
-19;input.at:766;%start after first rule;;
-20;input.at:787;%prec takes a token;;
-21;input.at:808;%prec's token must be defined;;
-22;input.at:828;Reject unused %code qualifiers;;
-23;input.at:917;%define errors;;
-24;input.at:953;%define, --define, --force-define;;
-25;input.at:1006;%define Boolean variables;;
-26;input.at:1026;%define enum variables;;
-27;input.at:1060;%define backward compatibility;;
-28;input.at:1101;Unused %define api.pure;;
-29;input.at:1134;C++ namespace reference errors;;
-30;input.at:1190;Bad character literals;;
-31;input.at:1243;Bad escapes in literals;;
-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;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;;
+at_help_all="1;input.at:27;Invalid inputs;;
+2;input.at:57;Invalid inputs with {};;
+3;input.at:84;Invalid \$n and @n;;
+4;input.at:104;Type Clashes;;
+5;input.at:285;Unused values;;
+6;input.at:295;Unused values before symbol declarations;;
+7;input.at:305;Default %printer and %destructor redeclared;;
+8;input.at:365;Per-type %printer and %destructor redeclared;;
+9;input.at:408;Unused values with default %destructor;;
+10;input.at:450;Unused values with per-type %destructor;;
+11;input.at:475;Incompatible Aliases;;
+12;input.at:516;Torturing the Scanner;;
+13;input.at:674;Typed symbol aliases;;
+14;input.at:710;Require 1.0;;
+15;input.at:711;Require 2.7.12-4996;;
+16;input.at:713;Require 100.0;;
+17;input.at:720;String aliases for character tokens;;
+18;input.at:741;Symbols;;
+19;input.at:807;Numbered tokens;;
+20;input.at:845;Unclosed constructs;;
+21;input.at:909;%start after first rule;;
+22;input.at:930;%prec takes a token;;
+23;input.at:951;%prec's token must be defined;;
+24;input.at:971;Reject unused %code qualifiers;;
+25;input.at:1060;%define errors;;
+26;input.at:1096;%define, --define, --force-define;;
+27;input.at:1161;%define Boolean variables;;
+28;input.at:1181;%define enum variables;;
+29;input.at:1216;%define backward compatibility;;
+30;input.at:1257;Unused %define api.pure;;
+31;input.at:1290;C++ namespace reference errors;;
+32;input.at:1346;Bad character literals;;
+33;input.at:1399;Bad escapes in literals;;
+34;input.at:1448;LAC: Errors for %define;;
+35;input.at:1471;-Werror is not affected by -Wnone and -Wall;;
+36;input.at:1505;%name-prefix and %define api.prefix are incompatible;;
+37;input.at:1534;Stray \$ or @;;
+38;input.at:1568;Code injection;;
+39;named-refs.at:21;Tutorial calculator;;
+40;named-refs.at:195;Undefined and ambiguous references;;
+41;named-refs.at:271;Misleading references;;
+42;named-refs.at:288;Many kinds of errors;;
+43;named-refs.at:521;Missing identifiers in brackets;;
+44;named-refs.at:535;Redundant words in brackets;;
+45;named-refs.at:549;Comments in brackets;;
+46;named-refs.at:563;Stray symbols in brackets;;
+47;named-refs.at:580;Redundant words in LHS brackets;;
+48;named-refs.at:595;Factored LHS;;
+49;named-refs.at:606;Unresolved references;;
+50;named-refs.at:671;\$ or @ followed by . or -;;
+51;output.at:44;Output files:  -dv ;;
+52;output.at:50;Output files:  -dv >&-;;
+53;output.at:55;Output files:  -dv -o foo.c ;;
+54;output.at:57;Output files:  -dv -o foo.tab.c ;;
+55;output.at:59;Output files:  -dv -y ;;
+56;output.at:61;Output files:  -dv -b bar ;;
+57;output.at:63;Output files:  -dv -g -o foo.c ;;
+58;output.at:67;Output files: %defines %verbose  ;;
+59;output.at:69;Output files: %defines %verbose %yacc  ;;
+60;output.at:72;Output files: %defines %verbose %yacc  ;;
+61;output.at:76;Output files: %file-prefix \"bar\" %defines %verbose  ;;
+62;output.at:78;Output files: %output=\"bar.c\" %defines %verbose %yacc  ;;
+63;output.at:80;Output files: %file-prefix=\"baz\" %output \"bar.c\" %defines %verbose %yacc  ;;
+64;output.at:87;Output files: %defines %verbose  ;;
+65;output.at:90;Output files: %defines %verbose  -o foo.c ;;
+66;output.at:93;Output files:  --defines=foo.hpp -o foo.c++ ;;
+67;output.at:97;Output files: %defines \"foo.hpp\" -o foo.c++ ;;
+68;output.at:101;Output files:  -o foo.c++ --graph=foo.gph ;;
+69;output.at:116;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
+70;output.at:119;Output files: %skeleton \"lalr1.cc\" %defines %verbose  ;;
+71;output.at:123;Output files: %skeleton \"lalr1.cc\" %defines %verbose -o subdir/foo.cc ;;
+72;output.at:128;Output files: %skeleton \"lalr1.cc\" %defines %verbose %file-prefix \"output_dir/foo\"  ;;
+73;output.at:158;Conflicting output files:  --graph=\"foo.tab.c\";;
+74;output.at:163;Conflicting output files: %defines \"foo.output\" -v;;
+75;output.at:168;Conflicting output files: %skeleton \"lalr1.cc\" %defines --graph=\"location.hh\";;
+76;output.at:173;Conflicting output files:  -o foo.y;;
+77;output.at:219;Output file name: \`~!@#\$%^&*()-=_+{}[]|\\:;<>, .';c++;
+78;output.at:226;Output file name: (;c++;
+79;output.at:227;Output file name: );c++;
+80;output.at:228;Output file name: #;c++;
+81;output.at:229;Output file name: @@;c++;
+82;output.at:230;Output file name: @{;c++;
+83;output.at:231;Output file name: @};c++;
+84;output.at:232;Output file name: [;c++;
+85;output.at:233;Output file name: ];c++;
+86;output.at:260;Graph with no conflicts;graph;
+87;output.at:294;Graph with unsolved S/R;graph;
+88;output.at:358;Graph with solved S/R;graph;
+89;output.at:417;Graph with R/R;graph;
+90;output.at:449;Graph with reductions with multiple LAT;graph;
+91;output.at:508;Graph with a reduction rule both enabled and disabled;graph;
+92;skeletons.at:24;Relative skeleton file names;;
+93;skeletons.at:84;Installed skeleton file names;;
+94;skeletons.at:146;%define Boolean variables: invalid skeleton defaults;;
+95;skeletons.at:170;Complaining during macro argument expansion;;
+96;skeletons.at:252;Fatal errors make M4 exit immediately;;
+97;skeletons.at:306;Fatal errors but M4 continues producing output;;
+98;sets.at:66;Nullable;;
+99;sets.at:151;Broken Closure;;
+100;sets.at:193;Firsts;;
+101;sets.at:269;Accept;;
+102;reduce.at:25;Useless Terminals;;
+103;reduce.at:69;Useless Nonterminals;;
+104;reduce.at:124;Useless Rules;report;
+105;reduce.at:271;Reduced Automaton;report;
+106;reduce.at:381;Underivable Rules;report;
+107;reduce.at:423;Empty Language;;
+108;reduce.at:474;no %define lr.type: Single State Split;;
+109;reduce.at:474;%define lr.type lalr: Single State Split;;
+110;reduce.at:474;%define lr.type ielr: Single State Split;;
+111;reduce.at:474;%define lr.type canonical-lr: Single State Split;;
+112;reduce.at:707;no %define lr.type: Lane Split;;
+113;reduce.at:707;%define lr.type lalr: Lane Split;;
+114;reduce.at:707;%define lr.type ielr: Lane Split;;
+115;reduce.at:707;%define lr.type canonical-lr: Lane Split;;
+116;reduce.at:951;no %define lr.type: Complex Lane Split;;
+117;reduce.at:951;%define lr.type lalr: Complex Lane Split;;
+118;reduce.at:951;%define lr.type ielr: Complex Lane Split;;
+119;reduce.at:951;%define lr.type canonical-lr: Complex Lane Split;;
+120;reduce.at:1220;no %define lr.type: Split During Added Lookahead Propagation;;
+121;reduce.at:1220;%define lr.type lalr: Split During Added Lookahead Propagation;;
+122;reduce.at:1220;%define lr.type ielr: Split During Added Lookahead Propagation;;
+123;reduce.at:1220;%define lr.type canonical-lr: Split During Added Lookahead Propagation;;
+124;reduce.at:1550;no %define lr.default-reductions;;
+125;reduce.at:1550;%define lr.default-reductions most;;
+126;reduce.at:1550;%define lr.default-reductions consistent;;
+127;reduce.at:1550;%define lr.default-reductions accepting;;
+128;synclines.at:150;Prologue syncline;;
+129;synclines.at:168;%union syncline;;
+130;synclines.at:189;Postprologue syncline;;
+131;synclines.at:213;Action syncline;;
+132;synclines.at:232;Epilogue syncline;;
+133;synclines.at:249;%code top syncline;;
+134;synclines.at:290;%no-lines;;
+135;synclines.at:291;%no-lines;;
+136;synclines.at:292;%no-lines;;
+137;synclines.at:293;%no-lines;;
+138;headers.at:57;Invalid CPP guards:  --defines=input/input.h;;
+139;headers.at:58;Invalid CPP guards:  --defines=9foo.h;;
+140;headers.at:59;Invalid CPP guards: %glr-parser --defines=input/input.h;;
+141;headers.at:60;Invalid CPP guards: %glr-parser --defines=9foo.h;;
+142;headers.at:69;export YYLTYPE;;
+143;headers.at:125;Several parsers;c++;
+144;actions.at:24;Mid-rule actions;;
+145;actions.at:133;Initial location: yacc.c ;;
+146;actions.at:134;Initial location: yacc.c %define api.pure full;;
+147;actions.at:135;Initial location: yacc.c %define api.pure %parse-param { int x };;
+148;actions.at:136;Initial location: yacc.c %define api.push-pull both;;
+149;actions.at:137;Initial location: yacc.c %define api.push-pull both %define api.pure full;;
+150;actions.at:138;Initial location: glr.c ;;
+151;actions.at:139;Initial location: glr.c %define api.pure;;
+152;actions.at:140;Initial location: lalr1.cc ;c++;
+153;actions.at:141;Initial location: glr.cc ;c++;
+154;actions.at:150;Initial location: yacc.c %define api.pure full;;
+155;actions.at:161;Initial location: yacc.c %define api.pure full;;
+156;actions.at:244;Location print: yacc.c ;;
+157;actions.at:245;Location print: glr.c ;;
+158;actions.at:257;Exotic Dollars;;
+159;actions.at:751;Printers and Destructors;;
+160;actions.at:752;Printers and Destructors with union;;
+161;actions.at:754;Printers and Destructors: %defines %skeleton \"lalr1.cc\";c++;
+162;actions.at:755;Printers and Destructors with union: %defines %skeleton \"lalr1.cc\";c++;
+163;actions.at:757;Printers and Destructors: %glr-parser;;
+164;actions.at:758;Printers and Destructors with union: %glr-parser;;
+165;actions.at:769;Default tagless %printer and %destructor;;
+166;actions.at:867;Default tagged and per-type %printer and %destructor;;
+167;actions.at:991;Default %printer and %destructor for user-defined end token;;
+168;actions.at:1098;Default %printer and %destructor are not for error or \$undefined;;
+169;actions.at:1193;Default %printer and %destructor are not for \$accept;;
+170;actions.at:1258;Default %printer and %destructor for mid-rule values;;
+171;actions.at:1406;@\$ in %initial-action implies %locations;;
+172;actions.at:1407;@\$ in %destructor implies %locations;;
+173;actions.at:1408;@\$ in %printer implies %locations;;
+174;actions.at:1529;Qualified \$\$ in actions: yacc.c;;
+175;actions.at:1530;Qualified \$\$ in actions: glr.c;;
+176;actions.at:1531;Qualified \$\$ in actions: lalr1.cc;c++;
+177;actions.at:1532;Qualified \$\$ in actions: glr.cc;c++;
+178;actions.at:1540;Fix user actions without a trailing semicolon;;
+179;actions.at:1649;Destroying lookahead assigned by semantic action;;
+180;actions.at:1708;YYBACKUP;;
+181;conflicts.at:31;S/R in initial;;
+182;conflicts.at:57;%nonassoc and eof;;
+183;conflicts.at:155;%error-verbose and consistent errors;c++ java;
+184;conflicts.at:456;LAC: %nonassoc requires splitting canonical LR states;;
+185;conflicts.at:546;Unresolved SR Conflicts;report;
+186;conflicts.at:653;Resolved SR Conflicts;report;
+187;conflicts.at:775;Defaulted Conflicted Reduction;report;
+188;conflicts.at:894;%expect not enough;;
+189;conflicts.at:914;%expect right;;
+190;conflicts.at:931;%expect too much;;
+191;conflicts.at:951;%expect with reduce conflicts;;
+192;conflicts.at:971;%prec with user string;;
+193;conflicts.at:988;%no-default-prec without %prec;;
+194;conflicts.at:1014;%no-default-prec with %prec;;
+195;conflicts.at:1038;%default-prec;;
+196;conflicts.at:1062;Unreachable States After Conflict Resolution;;
+197;conflicts.at:1273;Solved conflicts report for multiple reductions in a state;;
+198;conflicts.at:1353;%nonassoc error actions for multiple reductions in a state;;
+199;conflicts.at:1422;-W versus %expect and %expect-rr;;
+200;calc.at:597;Calculator ;;
+201;calc.at:599;Calculator %defines;;
+202;calc.at:600;Calculator %locations;;
+203;calc.at:602;Calculator %name-prefix=\"calc\";;
+204;calc.at:603;Calculator %verbose;;
+205;calc.at:604;Calculator %yacc;;
+206;calc.at:605;Calculator %error-verbose;;
+207;calc.at:607;Calculator %define api.pure full %locations;;
+208;calc.at:608;Calculator %define api.push-pull both %define api.pure full %locations;;
+209;calc.at:609;Calculator %error-verbose %locations;;
+210;calc.at:611;Calculator %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+211;calc.at:612;Calculator %error-verbose %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+212;calc.at:614;Calculator %debug;;
+213;calc.at:615;Calculator %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+214;calc.at:616;Calculator %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+215;calc.at:618;Calculator %define api.pure full %verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+216;calc.at:619;Calculator %define api.push-pull both %define api.pure full %verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+217;calc.at:621;Calculator %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc %parse-param {semantic_value *result} %parse-param {int *count};;
+218;calc.at:638;Calculator %glr-parser ;;
+219;calc.at:640;Calculator %glr-parser %defines;;
+220;calc.at:641;Calculator %glr-parser %locations;;
+221;calc.at:642;Calculator %glr-parser %name-prefix \"calc\";;
+222;calc.at:643;Calculator %glr-parser %define api.prefix \"calc\";;
+223;calc.at:644;Calculator %glr-parser %verbose;;
+224;calc.at:645;Calculator %glr-parser %yacc;;
+225;calc.at:646;Calculator %glr-parser %error-verbose;;
+226;calc.at:648;Calculator %glr-parser %define api.pure %locations;;
+227;calc.at:649;Calculator %glr-parser %error-verbose %locations;;
+228;calc.at:651;Calculator %glr-parser %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+229;calc.at:653;Calculator %glr-parser %debug;;
+230;calc.at:654;Calculator %glr-parser %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+231;calc.at:655;Calculator %glr-parser %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc;;
+232;calc.at:657;Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc;;
+233;calc.at:659;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};;
+234;calc.at:660;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};;
+235;calc.at:670;Calculator %skeleton \"lalr1.cc\" %defines %locations;c++;
+236;calc.at:679;Calculator %language \"C++\" %defines %locations ;c++;
+237;calc.at:680;Calculator %language \"C++\" %defines %locations %define api.location.type Span;c++;
+238;calc.at:681;Calculator %language \"C++\" %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
+239;calc.at:682;Calculator %language \"C++\" %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
+240;calc.at:683;Calculator %language \"C++\" %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+241;calc.at:685;Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc;c++;
+242;calc.at:687;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++;
+243;calc.at:688;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++;
+244;calc.at:699;Calculator %skeleton \"glr.cc\" %defines %locations;c++;
+245;calc.at:708;Calculator %language \"C++\" %glr-parser %defines %locations ;c++;
+246;calc.at:709;Calculator %language \"C++\" %glr-parser %defines %locations %define api.location.type Span;c++;
+247;calc.at:710;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc;c++;
+248;calc.at:711;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc;c++;
+249;calc.at:713;Calculator %language \"C++\" %glr-parser %defines %locations %debug;c++;
+250;calc.at:714;Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+251;calc.at:716;Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc;c++;
+252;calc.at:718;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++;
+253;calc.at:719;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++;
+254;torture.at:137;Big triangle;;
+255;torture.at:227;Big horizontal;;
+256;torture.at:364;Many lookahead tokens;;
+257;torture.at:466;Exploding the Stack Size with Alloca;;
+258;torture.at:512;Exploding the Stack Size with Malloc;;
+259;existing.at:79;GNU AWK 3.1.0 Grammar: LALR(1);;
+260;existing.at:79;GNU AWK 3.1.0 Grammar: IELR(1);;
+261;existing.at:79;GNU AWK 3.1.0 Grammar: Canonical LR(1);;
+262;existing.at:783;GNU Cim Grammar: LALR(1);;
+263;existing.at:783;GNU Cim Grammar: IELR(1);;
+264;existing.at:783;GNU Cim Grammar: Canonical LR(1);;
+265;existing.at:1403;GNU pic (Groff 1.18.1) Grammar: LALR(1);;
+266;existing.at:1403;GNU pic (Groff 1.18.1) Grammar: IELR(1);;
+267;existing.at:1403;GNU pic (Groff 1.18.1) Grammar: Canonical LR(1);;
+268;regression.at:25;Trivial grammars;;
+269;regression.at:55;YYSTYPE typedef;;
+270;regression.at:85;Early token definitions with --yacc;;
+271;regression.at:125;Early token definitions without --yacc;;
+272;regression.at:170;Braces parsing;;
+273;regression.at:194;Duplicate string;;
+274;regression.at:222;Rule Line Numbers;report;
+275;regression.at:368;Mixing %token styles;;
+276;regression.at:391;Invalid inputs;;
+277;regression.at:418;Invalid inputs with {};;
+278;regression.at:443;Token definitions;;
+279;regression.at:511;Characters Escapes;;
+280;regression.at:544;Web2c Report;report;
+281;regression.at:721;Web2c Actions;report;
+282;regression.at:936;Dancer ;;
+283;regression.at:937;Dancer %glr-parser;;
+284;regression.at:938;Dancer %skeleton \"lalr1.cc\";c++;
+285;regression.at:1020;Expecting two tokens ;;
+286;regression.at:1021;Expecting two tokens %glr-parser;;
+287;regression.at:1022;Expecting two tokens %skeleton \"lalr1.cc\";c++;
+288;regression.at:1030;Braced code in declaration in rules section;;
+289;regression.at:1097;String alias declared after use;;
+290;regression.at:1120;Extra lookahead sets in report;;
+291;regression.at:1161;Token number in precedence declaration;;
+292;regression.at:1219;parse-gram.y: LALR = IELR;;
+293;regression.at:1240;%error-verbose and YYSTACK_USE_ALLOCA;;
+294;regression.at:1319;%error-verbose overflow;;
+295;regression.at:1429;LAC: Exploratory stack;;
+296;regression.at:1523;LAC: Memory exhaustion;;
+297;regression.at:1664;Lex and parse params: yacc.c;;
+298;regression.at:1665;Lex and parse params: glr.c;;
+299;regression.at:1666;Lex and parse params: lalr1.cc;c++;
+300;regression.at:1667;Lex and parse params: glr.cc;c++;
+301;c++.at:101;Doxygen Public Documentation;;
+302;c++.at:102;Doxygen Private Documentation;;
+303;c++.at:160;Relative namespace references;c++;
+304;c++.at:166;Absolute namespace references;c++;
+305;c++.at:175;Syntactically invalid namespace references;;
+306;c++.at:190;Exception safety;c++;
+307;java.at:360;Calculator ;java;
+308;java.at:360;Calculator %error-verbose ;java;
+309;java.at:360;Calculator %locations ;java;
+310;java.at:360;Calculator %error-verbose %locations ;java;
+311;java.at:369;Calculator %lex-param { InputStream is } ;java;
+312;java.at:369;Calculator %error-verbose %lex-param { InputStream is } ;java;
+313;java.at:369;Calculator %locations %lex-param { InputStream is } ;java;
+314;java.at:369;Calculator %error-verbose %locations %lex-param { InputStream is } ;java;
+315;java.at:455;Java parser class and package names;java;
+316;java.at:476;Java parser class modifiers;java;
+317;java.at:534;Java parser class extends and implements;java;
+318;java.at:554;Java %parse-param and %lex-param;java;
+319;java.at:628;Java throws specifications;java;
+320;java.at:717;Java stype, position_class and location_class;java;
+321;java.at:748;Java syntax error handling without error token;java;
+322;cxx-type.at:394;GLR: Resolve ambiguity, impure, no locations;;
+323;cxx-type.at:401;GLR: Resolve ambiguity, impure, locations;;
+324;cxx-type.at:407;GLR: Resolve ambiguity, pure, no locations;;
+325;cxx-type.at:414;GLR: Resolve ambiguity, pure, locations;;
+326;cxx-type.at:421;GLR: Merge conflicting parses, impure, no locations;;
+327;cxx-type.at:428;GLR: Merge conflicting parses, impure, locations;;
+328;cxx-type.at:435;GLR: Merge conflicting parses, pure, no locations;;
+329;cxx-type.at:441;GLR: Merge conflicting parses, pure, locations;;
+330;cxx-type.at:448;GLR: Verbose messages, resolve ambiguity, impure, no locations;;
+331;glr-regression.at:25;Badly Collapsed GLR States;;
+332;glr-regression.at:112;Improper handling of embedded actions and dollar(-N) in GLR parsers;;
+333;glr-regression.at:244;Improper merging of GLR delayed action sets;;
+334;glr-regression.at:364;Duplicate representation of merged trees;;
+335;glr-regression.at:455;User destructor for unresolved GLR semantic value;;
+336;glr-regression.at:515;User destructor after an error during a split parse;;
+337;glr-regression.at:569;Duplicated user destructor for lookahead;;
+338;glr-regression.at:658;Incorrectly initialized location for empty right-hand side in GLR;;
+339;glr-regression.at:752;No users destructors if stack 0 deleted;;
+340;glr-regression.at:829;Corrupted semantic options if user action cuts parse;;
+341;glr-regression.at:883;Undesirable destructors if user action cuts parse;;
+342;glr-regression.at:941;Leaked semantic values if user action cuts parse;;
+343;glr-regression.at:1064;Incorrect lookahead during deterministic GLR;;
+344;glr-regression.at:1188;Incorrect lookahead during nondeterministic GLR;;
+345;glr-regression.at:1405;Leaked semantic values when reporting ambiguity;;
+346;glr-regression.at:1487;Leaked lookahead after nondeterministic parse syntax error;;
+347;glr-regression.at:1547;Uninitialized location when reporting ambiguity;;
+348;glr-regression.at:1625;Missed %merge type warnings when LHS type is declared later;;
+349;glr-regression.at:1678;Ambiguity reports;;
+350;push.at:24;Memory Leak for Early Deletion;;
+351;push.at:83;Multiple impure instances;;
+352;push.at:144;Unsupported Skeletons;;
 "
 # List of the all the test groups.
 at_groups_all=`$as_echo "$at_help_all" | sed 's/;.*//'`
@@ -928,7 +955,7 @@ at_fn_validate_ranges ()
   for at_grp
   do
     eval at_value=\$$at_grp
-    if test $at_value -lt 1 || test $at_value -gt 325; then
+    if test $at_value -lt 1 || test $at_value -gt 352; then
       $as_echo "invalid test group: $at_value" >&2
       exit 1
     fi
@@ -1254,7 +1281,7 @@ fi
 # List of tests.
 if $at_list_p; then
   cat <<_ATEOF || at_write_fail=1
-GNU Bison 2.6.2 test suite test groups:
+GNU Bison 2.7.12-4996 test suite test groups:
 
  NUM: FILE-NAME:LINE     TEST-GROUP-NAME
       KEYWORDS
@@ -1295,7 +1322,7 @@ _ATEOF
   exit $at_write_fail
 fi
 if $at_version_p; then
-  $as_echo "$as_me (GNU Bison 2.6.2)" &&
+  $as_echo "$as_me (GNU Bison 2.7.12-4996)" &&
   cat <<\_ATEOF || at_write_fail=1
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1316,70 +1343,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 37.
+# Category starts at test group 39.
 at_banner_text_2="Named references tests."
 # Banner 3. output.at:18
-# Category starts at test group 49.
+# Category starts at test group 51.
 at_banner_text_3="Output file names."
 # Banner 4. skeletons.at:18
-# Category starts at test group 84.
+# Category starts at test group 92.
 at_banner_text_4="Skeleton Support."
 # Banner 5. sets.at:59
-# Category starts at test group 90.
+# Category starts at test group 98.
 at_banner_text_5="Grammar Sets (Firsts etc.)."
 # Banner 6. reduce.at:18
-# Category starts at test group 94.
+# Category starts at test group 102.
 at_banner_text_6="Grammar Reduction."
 # Banner 7. synclines.at:19
-# Category starts at test group 120.
+# Category starts at test group 128.
 at_banner_text_7="User Actions."
 # Banner 8. headers.at:19
-# Category starts at test group 125.
+# Category starts at test group 138.
 at_banner_text_8="Parser Headers."
 # Banner 9. actions.at:18
-# Category starts at test group 131.
+# Category starts at test group 144.
 at_banner_text_9="User Actions."
 # Banner 10. conflicts.at:19
-# Category starts at test group 155.
+# Category starts at test group 181.
 at_banner_text_10="Conflicts."
-# Banner 11. calc.at:621
-# Category starts at test group 174.
+# Banner 11. calc.at:588
+# Category starts at test group 200.
 at_banner_text_11="Simple LALR(1) Calculator."
-# Banner 12. calc.at:661
-# Category starts at test group 192.
+# Banner 12. calc.at:628
+# Category starts at test group 218.
 at_banner_text_12="Simple GLR Calculator."
-# Banner 13. calc.at:700
-# Category starts at test group 209.
+# Banner 13. calc.at:667
+# Category starts at test group 235.
 at_banner_text_13="Simple LALR(1) C++ Calculator."
-# Banner 14. calc.at:729
-# Category starts at test group 218.
+# Banner 14. calc.at:696
+# Category starts at test group 244.
 at_banner_text_14="Simple GLR C++ Calculator."
 # Banner 15. torture.at:19
-# Category starts at test group 228.
+# Category starts at test group 254.
 at_banner_text_15="Torture Tests."
 # Banner 16. existing.at:19
-# Category starts at test group 233.
+# Category starts at test group 259.
 at_banner_text_16="Existing Grammars."
 # Banner 17. regression.at:18
-# Category starts at test group 242.
+# Category starts at test group 268.
 at_banner_text_17="Regression tests."
 # Banner 18. c++.at:19
-# Category starts at test group 275.
+# Category starts at test group 301.
 at_banner_text_18="C++ Features."
 # Banner 19. java.at:18
-# Category starts at test group 280.
+# Category starts at test group 307.
 at_banner_text_19="Java Calculator."
 # Banner 20. java.at:382
-# Category starts at test group 288.
+# Category starts at test group 315.
 at_banner_text_20="Java Parameters."
 # Banner 21. cxx-type.at:18
-# Category starts at test group 295.
+# Category starts at test group 322.
 at_banner_text_21="C++ Type Syntax (GLR)."
 # Banner 22. glr-regression.at:19
-# Category starts at test group 304.
+# Category starts at test group 331.
 at_banner_text_22="GLR Regression Tests"
 # Banner 23. push.at:18
-# Category starts at test group 323.
+# Category starts at test group 350.
 at_banner_text_23="Push Parsing Tests"
 
 # Take any -C into account.
@@ -1540,13 +1567,13 @@ fi
 exec 5>>"$at_suite_log"
 
 # Banners and logs.
-$as_echo "## --------------------------- ##
-## GNU Bison 2.6.2 test suite. ##
-## --------------------------- ##"
+$as_echo "## --------------------------------- ##
+## GNU Bison 2.7.12-4996 test suite. ##
+## --------------------------------- ##"
 {
-  $as_echo "## --------------------------- ##
-## GNU Bison 2.6.2 test suite. ##
-## --------------------------- ##"
+  $as_echo "## --------------------------------- ##
+## GNU Bison 2.7.12-4996 test suite. ##
+## --------------------------------- ##"
   echo
 
   $as_echo "$as_me: command line was:"
@@ -1809,7 +1836,7 @@ IFS=$as_save_IFS
   esac
   if test -f "$at_program_"; then
     {
-      $as_echo "$at_srcdir/local.at:863: $at_program_ --version"
+      $as_echo "$at_srcdir/local.at:913: $at_program_ --version"
       "$at_program_" --version </dev/null
       echo
     } >&5 2>&1
@@ -2408,7 +2435,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.2] $as_me: $at_fail_list${at_fail_list:+ failed${at_xpass_list:+, }}$at_xpass_list${at_xpass_list:+ passed unexpectedly}
+   Subject: [GNU Bison 2.7.12-4996] $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
@@ -2424,7 +2451,7 @@ exit 0
 ## ------------- ##
 #AT_START_1
 at_fn_group_banner 1 'input.at:27' \
-  "Invalid \$n and @n" "                              " 1
+  "Invalid inputs" "                                 " 1
 at_xfail=no
 (
   $as_echo "1. $at_setup_line: testing $at_desc ..."
@@ -2432,26 +2459,52 @@ at_xfail=no
 
 
 cat >input.y <<'_ATEOF'
+\000\001\002\377?
 %%
-exp: { $$ = $1 ; };
-exp: { @$ = @1 ; };
+?
+default: 'a' }
+%&
+%a-does-not-exist
+%-
+%{
 _ATEOF
 
+{ set +x
+$as_echo "$at_srcdir/input.at:39: \$PERL -pi -e 's/\\\\(\\d{3})/chr(oct(\$1))/ge' input.y || exit 77"
+at_fn_check_prepare_dynamic "$PERL -pi -e 's/\\\\(\\d{3})/chr(oct($1))/ge' input.y || exit 77" "input.at:39"
+( $at_check_trace; $PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' input.y || 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/input.at:39"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:35: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:35"
+$as_echo "$at_srcdir/input.at:41: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:41"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:2.13-14: integer out of range: '\$1'
-input.y:3.13-14: integer out of range: '@1'
+echo >>"$at_stderr"; $as_echo "input.y:1.1-2: error: invalid characters: '\\0\\001\\002\\377?'
+input.y:3.1: error: invalid character: '?'
+input.y:4.14: error: invalid character: '}'
+input.y:5.1: error: invalid character: '%'
+input.y:5.2: error: invalid character: '&'
+input.y:6.1-17: error: invalid directive: '%a-does-not-exist'
+input.y:7.1: error: invalid character: '%'
+input.y:7.2: error: invalid character: '-'
+input.y:8.1-9.0: error: missing '%}' at end of file
+input.y:8.1-9.0: error: syntax error, unexpected %{...%}
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:35"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:41"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2463,14 +2516,100 @@ $at_traceon; }
 read at_status <"$at_status_file"
 #AT_STOP_1
 #AT_START_2
-at_fn_group_banner 2 'input.at:47' \
-  "Type Clashes" "                                   " 1
+at_fn_group_banner 2 'input.at:57' \
+  "Invalid inputs with {}" "                         " 1
 at_xfail=no
 (
   $as_echo "2. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
+# We used to SEGV here.  See
+# http://lists.gnu.org/archive/html/bug-bison/2005-07/msg00053.html
+
+cat >input.y <<'_ATEOF'
+
+%destructor
+%initial-action
+%lex-param
+%parse-param
+%printer
+%union
+_ATEOF
+
+
+
+{ set +x
+$as_echo "$at_srcdir/input.at:72: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:72"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:72"
+$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_2
+#AT_START_3
+at_fn_group_banner 3 'input.at:84' \
+  "Invalid \$n and @n" "                              " 1
+at_xfail=no
+(
+  $as_echo "3. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+exp: { $$ = $1 ; };
+exp: { @$ = @1 ; };
+_ATEOF
+
+
+
+{ set +x
+$as_echo "$at_srcdir/input.at:92: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:92"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y:2.13-14: error: integer out of range: '\$1'
+input.y:3.13-14: error: integer out of range: '@1'
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:92"
+$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_3
+#AT_START_4
+at_fn_group_banner 4 'input.at:104' \
+  "Type Clashes" "                                   " 1
+at_xfail=no
+(
+  $as_echo "4. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
 cat >input.y <<'_ATEOF'
 %union { int bar; }
 %token foo
@@ -2485,21 +2624,21 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:60: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:60"
+$as_echo "$at_srcdir/input.at:117: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:117"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:5.12-13: \$\$ for the midrule at \$2 of 'exp' has no declared type
-input.y:5.24-25: \$2 of 'exp' has no declared type
+echo >>"$at_stderr"; $as_echo "input.y:5.12-13: error: \$\$ for the midrule at \$2 of 'exp' has no declared type
+input.y:5.24-25: error: \$2 of 'exp' has no declared type
 input.y:5.6-32: warning: type clash on default action: <bar> != <>
 input.y:6.6-8: warning: type clash on default action: <bar> != <>
 input.y:7.5: warning: empty rule for typed nonterminal, and no action
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:60"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:117"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2509,13 +2648,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_2
-#AT_START_3
-at_fn_group_banner 3 'input.at:161' \
+#AT_STOP_4
+#AT_START_5
+at_fn_group_banner 5 'input.at:285' \
   "Unused values" "                                  " 1
 at_xfail=no
 (
-  $as_echo "3. $at_setup_line: testing $at_desc ..."
+  $as_echo "5. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >input.y <<'_ATEOF'
@@ -2550,39 +2689,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/input.at:162: 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:162"
+$as_echo "$at_srcdir/input.at:286: 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 -fcaret input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:286"
 ( $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  input.y
+                  --graph=xml-tests/test.dot -fcaret 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:162: 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:162"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  input.y
+$as_echo "$at_srcdir/input.at:286: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret 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 -fcaret input.y" "input.at:286"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:162: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:286: \$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:162"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:286"
 ( $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
@@ -2591,25 +2730,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:162: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:286: \$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:162"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:286"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2617,48 +2756,98 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:162: bison  input.y"
-at_fn_check_prepare_trace "input.at:162"
-( $at_check_trace; bison  input.y
+$as_echo "$at_srcdir/input.at:286: bison -fcaret input.y"
+at_fn_check_prepare_trace "input.at:286"
+( $at_check_trace; bison -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "input.y:11.10-32: warning: unset value: \$\$
-input.y:11.10-32: warning: unused value: \$1
-input.y:11.10-32: warning: unused value: \$3
-input.y:11.10-32: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: \$1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: \$3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.10-62: warning: unset value: \$\$
-input.y:13.10-62: warning: unused value: \$3
-input.y:13.10-62: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: \$3
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                                           ^^^
 input.y:14.10-49: warning: unset value: \$\$
-input.y:14.10-49: warning: unused value: \$3
-input.y:14.10-49: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: \$3
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: \$\$
-input.y:15.10-37: warning: unused value: \$3
-input.y:15.10-37: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: \$3
+ e: INT | INT { } INT {  } INT { \$1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: \$\$
-input.y:17.10-58: warning: unused value: \$1
-input.y:17.10-58: warning: unused value: \$3
-input.y:17.10-58: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: \$1
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^
+input.y:17.31-33: warning: unused value: \$3
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                               ^^^
+input.y:17.52-54: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: \$\$
-input.y:18.10-72: warning: unused value: \$1
-input.y:18.10-72: warning: unused value: \$3
-input.y:18.10-72: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: \$1
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                               ^^^
+input.y:18.66-68: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                                                  ^^^
 input.y:21.10-68: warning: unset value: \$\$
-input.y:21.10-68: warning: unused value: \$1
-input.y:21.10-68: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: \$1
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+              ^^^
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -2666,15 +2855,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:162: 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:162"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y -Werror
+$as_echo "$at_srcdir/input.at:286: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror" "input.at:286"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/input.at:162"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2683,30 +2872,80 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:11.10-32: warning: unset value: $$
-input.y:11.10-32: warning: unused value: $1
-input.y:11.10-32: warning: unused value: $3
-input.y:11.10-32: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: $1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: $3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.10-62: warning: unset value: $$
-input.y:13.10-62: warning: unused value: $3
-input.y:13.10-62: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: $3
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                                           ^^^
 input.y:14.10-49: warning: unset value: $$
-input.y:14.10-49: warning: unused value: $3
-input.y:14.10-49: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: $3
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: $$
-input.y:15.10-37: warning: unused value: $3
-input.y:15.10-37: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: $3
+ e: INT | INT { } INT {  } INT { $1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: $$
-input.y:17.10-58: warning: unused value: $1
-input.y:17.10-58: warning: unused value: $3
-input.y:17.10-58: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: $1
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^
+input.y:17.31-33: warning: unused value: $3
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                               ^^^
+input.y:17.52-54: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: $$
-input.y:18.10-72: warning: unused value: $1
-input.y:18.10-72: warning: unused value: $3
-input.y:18.10-72: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: $1
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                               ^^^
+input.y:18.66-68: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                                                  ^^^
 input.y:21.10-68: warning: unset value: $$
-input.y:21.10-68: warning: unused value: $1
-input.y:21.10-68: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: $1
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+              ^^^
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -2734,9 +2973,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:162: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:286: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:162"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:286"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -2744,7 +2983,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/input.at:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2752,15 +2991,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:162: 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:162"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y --warnings=error
+$as_echo "$at_srcdir/input.at:286: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error" "input.at:286"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:162"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2769,34 +3008,35 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:162: 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:162"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y -Wnone -Werror
+$as_echo "$at_srcdir/input.at:286: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror" "input.at:286"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:162: 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:162"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y --warnings=none -Werror
+$as_echo "$at_srcdir/input.at:286: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror" "input.at:286"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:286"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
   at_restore_special_files
 fi
+
 cat >input.y <<'_ATEOF'
 %token <integer> INT;
 %type <integer> a b c d e f g h i j k l;
@@ -2829,39 +3069,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/input.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  --warnings=midrule-values  input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:163"
+$as_echo "$at_srcdir/input.at:287: 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 --warnings=midrule-values -fcaret input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:287"
 ( $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  --warnings=midrule-values  input.y
+                  --graph=xml-tests/test.dot --warnings=midrule-values -fcaret 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  --warnings=midrule-values  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  --warnings=midrule-values  input.y" "input.at:163"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  --warnings=midrule-values  input.y
+$as_echo "$at_srcdir/input.at:287: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --warnings=midrule-values -fcaret 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 --warnings=midrule-values -fcaret input.y" "input.at:287"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --warnings=midrule-values -fcaret 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:163: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:287: \$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:163"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:287"
 ( $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
@@ -2870,25 +3110,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:163: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:287: \$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:163"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:287"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2896,56 +3136,122 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:163: bison  --warnings=midrule-values  input.y"
-at_fn_check_prepare_trace "input.at:163"
-( $at_check_trace; bison  --warnings=midrule-values  input.y
+$as_echo "$at_srcdir/input.at:287: bison --warnings=midrule-values -fcaret input.y"
+at_fn_check_prepare_trace "input.at:287"
+( $at_check_trace; bison --warnings=midrule-values -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "input.y:11.10-32: warning: unset value: \$\$
-input.y:11.10-32: warning: unused value: \$1
-input.y:11.10-32: warning: unused value: \$3
-input.y:11.10-32: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: \$1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: \$3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.14-20: warning: unset value: \$\$
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+              ^^^^^^^
 input.y:13.26-41: warning: unset value: \$\$
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                          ^^^^^^^^^^^^^^^^
 input.y:13.10-62: warning: unset value: \$\$
-input.y:13.10-62: warning: unused value: \$3
-input.y:13.10-62: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: \$3
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                                           ^^^
 input.y:14.14-16: warning: unset value: \$\$
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+              ^^^
 input.y:14.10-49: warning: unset value: \$\$
-input.y:14.10-49: warning: unused value: \$3
-input.y:14.10-49: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: \$3
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: \$\$
-input.y:15.10-37: warning: unused value: \$3
-input.y:15.10-37: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: \$3
+ e: INT | INT { } INT {  } INT { \$1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: \$\$
-input.y:17.10-58: warning: unused value: \$1
-input.y:17.10-58: warning: unused value: \$2
-input.y:17.10-58: warning: unused value: \$3
-input.y:17.10-58: warning: unused value: \$4
-input.y:17.10-58: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: \$1
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^
+input.y:17.14-29: warning: unused value: \$2
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+              ^^^^^^^^^^^^^^^^
+input.y:17.31-33: warning: unused value: \$3
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                               ^^^
+input.y:17.35-50: warning: unused value: \$4
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                   ^^^^^^^^^^^^^^^^
+input.y:17.52-54: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: \$\$
-input.y:18.10-72: warning: unused value: \$1
-input.y:18.10-72: warning: unused value: \$3
-input.y:18.10-72: warning: unused value: \$4
-input.y:18.10-72: warning: unused value: \$5
-input.y:20.10-55: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: \$1
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                               ^^^
+input.y:18.35-64: warning: unused value: \$4
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.66-68: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                                                  ^^^
+input.y:20.18-37: warning: unused value: \$3
+ j: INT | INT INT { \$<integer>\$ = 1; } { \$\$ = \$1 + \$2; };
+                  ^^^^^^^^^^^^^^^^^^^^
 input.y:21.10-68: warning: unset value: \$\$
-input.y:21.10-68: warning: unused value: \$1
-input.y:21.10-68: warning: unused value: \$2
-input.y:21.10-68: warning: unused value: \$4
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: \$1
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+              ^^^
+input.y:21.35-64: warning: unused value: \$4
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -2953,15 +3259,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror" "input.at:163"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror
+$as_echo "$at_srcdir/input.at:287: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Werror" "input.at:287"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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/input.at:163"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -2970,38 +3276,104 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:11.10-32: warning: unset value: $$
-input.y:11.10-32: warning: unused value: $1
-input.y:11.10-32: warning: unused value: $3
-input.y:11.10-32: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: $1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: $3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.14-20: warning: unset value: $$
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+              ^^^^^^^
 input.y:13.26-41: warning: unset value: $$
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                          ^^^^^^^^^^^^^^^^
 input.y:13.10-62: warning: unset value: $$
-input.y:13.10-62: warning: unused value: $3
-input.y:13.10-62: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: $3
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                                           ^^^
 input.y:14.14-16: warning: unset value: $$
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+              ^^^
 input.y:14.10-49: warning: unset value: $$
-input.y:14.10-49: warning: unused value: $3
-input.y:14.10-49: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: $3
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: $$
-input.y:15.10-37: warning: unused value: $3
-input.y:15.10-37: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: $3
+ e: INT | INT { } INT {  } INT { $1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: $$
-input.y:17.10-58: warning: unused value: $1
-input.y:17.10-58: warning: unused value: $2
-input.y:17.10-58: warning: unused value: $3
-input.y:17.10-58: warning: unused value: $4
-input.y:17.10-58: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: $1
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^
+input.y:17.14-29: warning: unused value: $2
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+              ^^^^^^^^^^^^^^^^
+input.y:17.31-33: warning: unused value: $3
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                               ^^^
+input.y:17.35-50: warning: unused value: $4
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                   ^^^^^^^^^^^^^^^^
+input.y:17.52-54: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: $$
-input.y:18.10-72: warning: unused value: $1
-input.y:18.10-72: warning: unused value: $3
-input.y:18.10-72: warning: unused value: $4
-input.y:18.10-72: warning: unused value: $5
-input.y:20.10-55: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: $1
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                               ^^^
+input.y:18.35-64: warning: unused value: $4
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.66-68: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                                                  ^^^
+input.y:20.18-37: warning: unused value: $3
+ j: INT | INT INT { $<integer>$ = 1; } { $$ = $1 + $2; };
+                  ^^^^^^^^^^^^^^^^^^^^
 input.y:21.10-68: warning: unset value: $$
-input.y:21.10-68: warning: unused value: $1
-input.y:21.10-68: warning: unused value: $2
-input.y:21.10-68: warning: unused value: $4
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: $1
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+              ^^^
+input.y:21.35-64: warning: unused value: $4
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -3029,9 +3401,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:163: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:287: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:163"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:287"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -3039,7 +3411,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/input.at:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3047,15 +3419,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error" "input.at:163"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error
+$as_echo "$at_srcdir/input.at:287: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=error" "input.at:287"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:163"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3064,45 +3436,46 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror" "input.at:163"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror
+$as_echo "$at_srcdir/input.at:287: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Wnone -Werror" "input.at:287"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror" "input.at:163"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror
+$as_echo "$at_srcdir/input.at:287: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=none -Werror" "input.at:287"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:287"
 $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_3
-#AT_START_4
-at_fn_group_banner 4 'input.at:171' \
+#AT_STOP_5
+#AT_START_6
+at_fn_group_banner 6 'input.at:295' \
   "Unused values before symbol declarations" "       " 1
 at_xfail=no
 (
-  $as_echo "4. $at_setup_line: testing $at_desc ..."
+  $as_echo "6. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >input.y <<'_ATEOF'
@@ -3140,39 +3513,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/input.at:172: 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:172"
+$as_echo "$at_srcdir/input.at:296: 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 -fcaret input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:296"
 ( $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  input.y
+                  --graph=xml-tests/test.dot -fcaret 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:172: 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:172"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  input.y
+$as_echo "$at_srcdir/input.at:296: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret 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 -fcaret input.y" "input.at:296"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:172: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:296: \$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:172"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:296"
 ( $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
@@ -3181,25 +3554,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:172: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:296: \$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:172"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:296"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3207,48 +3580,98 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:172: bison  input.y"
-at_fn_check_prepare_trace "input.at:172"
-( $at_check_trace; bison  input.y
+$as_echo "$at_srcdir/input.at:296: bison -fcaret input.y"
+at_fn_check_prepare_trace "input.at:296"
+( $at_check_trace; bison -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "input.y:11.10-32: warning: unset value: \$\$
-input.y:11.10-32: warning: unused value: \$1
-input.y:11.10-32: warning: unused value: \$3
-input.y:11.10-32: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: \$1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: \$3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.10-62: warning: unset value: \$\$
-input.y:13.10-62: warning: unused value: \$3
-input.y:13.10-62: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: \$3
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                                           ^^^
 input.y:14.10-49: warning: unset value: \$\$
-input.y:14.10-49: warning: unused value: \$3
-input.y:14.10-49: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: \$3
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: \$\$
-input.y:15.10-37: warning: unused value: \$3
-input.y:15.10-37: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: \$3
+ e: INT | INT { } INT {  } INT { \$1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: \$\$
-input.y:17.10-58: warning: unused value: \$1
-input.y:17.10-58: warning: unused value: \$3
-input.y:17.10-58: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: \$1
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^
+input.y:17.31-33: warning: unused value: \$3
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                               ^^^
+input.y:17.52-54: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: \$\$
-input.y:18.10-72: warning: unused value: \$1
-input.y:18.10-72: warning: unused value: \$3
-input.y:18.10-72: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: \$1
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                               ^^^
+input.y:18.66-68: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                                                  ^^^
 input.y:21.10-68: warning: unset value: \$\$
-input.y:21.10-68: warning: unused value: \$1
-input.y:21.10-68: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: \$1
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+              ^^^
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -3256,15 +3679,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:172: 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:172"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y -Werror
+$as_echo "$at_srcdir/input.at:296: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror" "input.at:296"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/input.at:172"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3273,30 +3696,80 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:11.10-32: warning: unset value: $$
-input.y:11.10-32: warning: unused value: $1
-input.y:11.10-32: warning: unused value: $3
-input.y:11.10-32: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: $1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: $3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.10-62: warning: unset value: $$
-input.y:13.10-62: warning: unused value: $3
-input.y:13.10-62: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: $3
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                                           ^^^
 input.y:14.10-49: warning: unset value: $$
-input.y:14.10-49: warning: unused value: $3
-input.y:14.10-49: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: $3
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: $$
-input.y:15.10-37: warning: unused value: $3
-input.y:15.10-37: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: $3
+ e: INT | INT { } INT {  } INT { $1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: $$
-input.y:17.10-58: warning: unused value: $1
-input.y:17.10-58: warning: unused value: $3
-input.y:17.10-58: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: $1
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^
+input.y:17.31-33: warning: unused value: $3
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                               ^^^
+input.y:17.52-54: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: $$
-input.y:18.10-72: warning: unused value: $1
-input.y:18.10-72: warning: unused value: $3
-input.y:18.10-72: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: $1
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                               ^^^
+input.y:18.66-68: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                                                  ^^^
 input.y:21.10-68: warning: unset value: $$
-input.y:21.10-68: warning: unused value: $1
-input.y:21.10-68: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: $1
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+              ^^^
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -3324,9 +3797,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:172: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:296: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:172"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:296"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -3334,7 +3807,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/input.at:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3342,15 +3815,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:172: 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:172"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y --warnings=error
+$as_echo "$at_srcdir/input.at:296: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error" "input.at:296"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:172"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3359,34 +3832,35 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:172: 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:172"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y -Wnone -Werror
+$as_echo "$at_srcdir/input.at:296: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror" "input.at:296"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:172: 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:172"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y --warnings=none -Werror
+$as_echo "$at_srcdir/input.at:296: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror" "input.at:296"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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:172"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
   at_restore_special_files
 fi
+
 cat >input.y <<'_ATEOF'
 
 
@@ -3422,39 +3896,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/input.at:173: 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  --warnings=midrule-values  input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:173"
+$as_echo "$at_srcdir/input.at:297: 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 --warnings=midrule-values -fcaret input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:297"
 ( $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  --warnings=midrule-values  input.y
+                  --graph=xml-tests/test.dot --warnings=midrule-values -fcaret 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:173: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  --warnings=midrule-values  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  --warnings=midrule-values  input.y" "input.at:173"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml  --warnings=midrule-values  input.y
+$as_echo "$at_srcdir/input.at:297: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --warnings=midrule-values -fcaret 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 --warnings=midrule-values -fcaret input.y" "input.at:297"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --warnings=midrule-values -fcaret 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:173: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:297: \$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:173"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:297"
 ( $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
@@ -3463,25 +3937,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:173: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:297: \$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:173"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:297"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3489,56 +3963,122 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:173: bison  --warnings=midrule-values  input.y"
-at_fn_check_prepare_trace "input.at:173"
-( $at_check_trace; bison  --warnings=midrule-values  input.y
+$as_echo "$at_srcdir/input.at:297: bison --warnings=midrule-values -fcaret input.y"
+at_fn_check_prepare_trace "input.at:297"
+( $at_check_trace; bison --warnings=midrule-values -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "input.y:11.10-32: warning: unset value: \$\$
-input.y:11.10-32: warning: unused value: \$1
-input.y:11.10-32: warning: unused value: \$3
-input.y:11.10-32: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: \$1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: \$3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: \$5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.14-20: warning: unset value: \$\$
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+              ^^^^^^^
 input.y:13.26-41: warning: unset value: \$\$
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                          ^^^^^^^^^^^^^^^^
 input.y:13.10-62: warning: unset value: \$\$
-input.y:13.10-62: warning: unused value: \$3
-input.y:13.10-62: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: \$3
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: \$5
+ c: INT | INT { \$1; } INT { \$<integer>2; } INT { \$<integer>4; };
+                                           ^^^
 input.y:14.14-16: warning: unset value: \$\$
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+              ^^^
 input.y:14.10-49: warning: unset value: \$\$
-input.y:14.10-49: warning: unused value: \$3
-input.y:14.10-49: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: \$3
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: \$5
+ d: INT | INT { } INT { \$1; } INT { \$<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: \$\$
-input.y:15.10-37: warning: unused value: \$3
-input.y:15.10-37: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: \$3
+ e: INT | INT { } INT {  } INT { \$1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: \$5
+ e: INT | INT { } INT {  } INT { \$1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: \$\$
-input.y:17.10-58: warning: unused value: \$1
-input.y:17.10-58: warning: unused value: \$2
-input.y:17.10-58: warning: unused value: \$3
-input.y:17.10-58: warning: unused value: \$4
-input.y:17.10-58: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: \$1
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+          ^^^
+input.y:17.14-29: warning: unused value: \$2
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+              ^^^^^^^^^^^^^^^^
+input.y:17.31-33: warning: unused value: \$3
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                               ^^^
+input.y:17.35-50: warning: unused value: \$4
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                   ^^^^^^^^^^^^^^^^
+input.y:17.52-54: warning: unused value: \$5
+ g: INT | INT { \$<integer>\$; } INT { \$<integer>\$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: \$\$
-input.y:18.10-72: warning: unused value: \$1
-input.y:18.10-72: warning: unused value: \$3
-input.y:18.10-72: warning: unused value: \$4
-input.y:18.10-72: warning: unused value: \$5
-input.y:20.10-55: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: \$1
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: \$3
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                               ^^^
+input.y:18.35-64: warning: unused value: \$4
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.66-68: warning: unused value: \$5
+ h: INT | INT { \$<integer>\$; } INT { \$<integer>\$ = \$<integer>2; } INT { };
+                                                                  ^^^
+input.y:20.18-37: warning: unused value: \$3
+ j: INT | INT INT { \$<integer>\$ = 1; } { \$\$ = \$1 + \$2; };
+                  ^^^^^^^^^^^^^^^^^^^^
 input.y:21.10-68: warning: unset value: \$\$
-input.y:21.10-68: warning: unused value: \$1
-input.y:21.10-68: warning: unused value: \$2
-input.y:21.10-68: warning: unused value: \$4
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: \$1
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: \$2
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+              ^^^
+input.y:21.35-64: warning: unused value: \$4
+ k: INT | INT INT { \$<integer>\$; } { \$<integer>\$ = \$<integer>3; } { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -3546,15 +4086,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:173: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror" "input.at:173"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Werror
+$as_echo "$at_srcdir/input.at:297: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Werror" "input.at:297"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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/input.at:173"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3563,38 +4103,104 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:11.10-32: warning: unset value: $$
-input.y:11.10-32: warning: unused value: $1
-input.y:11.10-32: warning: unused value: $3
-input.y:11.10-32: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^
+input.y:11.10-12: warning: unused value: $1
+ a: INT | INT { } INT { } INT { };
+          ^^^
+input.y:11.18-20: warning: unused value: $3
+ a: INT | INT { } INT { } INT { };
+                  ^^^
+input.y:11.26-28: warning: unused value: $5
+ a: INT | INT { } INT { } INT { };
+                          ^^^
 input.y:12.9: warning: empty rule for typed nonterminal, and no action
+ b: INT | /* empty */;
+         ^
 input.y:13.14-20: warning: unset value: $$
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+              ^^^^^^^
 input.y:13.26-41: warning: unset value: $$
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                          ^^^^^^^^^^^^^^^^
 input.y:13.10-62: warning: unset value: $$
-input.y:13.10-62: warning: unused value: $3
-input.y:13.10-62: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:13.22-24: warning: unused value: $3
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                      ^^^
+input.y:13.43-45: warning: unused value: $5
+ c: INT | INT { $1; } INT { $<integer>2; } INT { $<integer>4; };
+                                           ^^^
 input.y:14.14-16: warning: unset value: $$
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+              ^^^
 input.y:14.10-49: warning: unset value: $$
-input.y:14.10-49: warning: unused value: $3
-input.y:14.10-49: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:14.18-20: warning: unused value: $3
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                  ^^^
+input.y:14.30-32: warning: unused value: $5
+ d: INT | INT { } INT { $1; } INT { $<integer>2; };
+                              ^^^
 input.y:15.10-37: warning: unset value: $$
-input.y:15.10-37: warning: unused value: $3
-input.y:15.10-37: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:15.18-20: warning: unused value: $3
+ e: INT | INT { } INT {  } INT { $1; };
+                  ^^^
+input.y:15.27-29: warning: unused value: $5
+ e: INT | INT { } INT {  } INT { $1; };
+                           ^^^
 input.y:17.10-58: warning: unset value: $$
-input.y:17.10-58: warning: unused value: $1
-input.y:17.10-58: warning: unused value: $2
-input.y:17.10-58: warning: unused value: $3
-input.y:17.10-58: warning: unused value: $4
-input.y:17.10-58: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:17.10-12: warning: unused value: $1
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+          ^^^
+input.y:17.14-29: warning: unused value: $2
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+              ^^^^^^^^^^^^^^^^
+input.y:17.31-33: warning: unused value: $3
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                               ^^^
+input.y:17.35-50: warning: unused value: $4
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                   ^^^^^^^^^^^^^^^^
+input.y:17.52-54: warning: unused value: $5
+ g: INT | INT { $<integer>$; } INT { $<integer>$; } INT { };
+                                                    ^^^
 input.y:18.10-72: warning: unset value: $$
-input.y:18.10-72: warning: unused value: $1
-input.y:18.10-72: warning: unused value: $3
-input.y:18.10-72: warning: unused value: $4
-input.y:18.10-72: warning: unused value: $5
-input.y:20.10-55: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.10-12: warning: unused value: $1
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+          ^^^
+input.y:18.31-33: warning: unused value: $3
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                               ^^^
+input.y:18.35-64: warning: unused value: $4
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:18.66-68: warning: unused value: $5
+ h: INT | INT { $<integer>$; } INT { $<integer>$ = $<integer>2; } INT { };
+                                                                  ^^^
+input.y:20.18-37: warning: unused value: $3
+ j: INT | INT INT { $<integer>$ = 1; } { $$ = $1 + $2; };
+                  ^^^^^^^^^^^^^^^^^^^^
 input.y:21.10-68: warning: unset value: $$
-input.y:21.10-68: warning: unused value: $1
-input.y:21.10-68: warning: unused value: $2
-input.y:21.10-68: warning: unused value: $4
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+input.y:21.10-12: warning: unused value: $1
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+          ^^^
+input.y:21.14-16: warning: unused value: $2
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+              ^^^
+input.y:21.35-64: warning: unused value: $4
+ k: INT | INT INT { $<integer>$; } { $<integer>$ = $<integer>3; } { };
+                                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -3622,9 +4228,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:173: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:297: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:173"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:297"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -3632,7 +4238,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/input.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3640,15 +4246,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:173: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error" "input.at:173"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=error
+$as_echo "$at_srcdir/input.at:297: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=error" "input.at:297"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:173"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3657,45 +4263,46 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:173: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror" "input.at:173"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y -Wnone -Werror
+$as_echo "$at_srcdir/input.at:297: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y -Wnone -Werror" "input.at:297"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:173: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror" "input.at:173"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  --warnings=midrule-values  input.y --warnings=none -Werror
+$as_echo "$at_srcdir/input.at:297: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret input.y --warnings=none -Werror" "input.at:297"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --warnings=midrule-values -fcaret 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:173"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
 $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_4
-#AT_START_5
-at_fn_group_banner 5 'input.at:181' \
+#AT_STOP_6
+#AT_START_7
+at_fn_group_banner 7 'input.at:305' \
   "Default %printer and %destructor redeclared" "    " 1
 at_xfail=no
 (
-  $as_echo "5. $at_setup_line: testing $at_desc ..."
+  $as_echo "7. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -3726,40 +4333,40 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:207: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:207"
+$as_echo "$at_srcdir/input.at:331: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:331"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.13-29: redeclaration for default tagged %destructor
-input.y:1.13-29: previous declaration
-input.y:2.10-24: redeclaration for default tagged %printer
-input.y:2.10-24: previous declaration
-input.y:4.13-29: redeclaration for default tagged %destructor
-input.y:1.13-29: previous declaration
-input.y:5.10-24: redeclaration for default tagged %printer
-input.y:2.10-24: previous declaration
-input.y:7.13-29: redeclaration for default tagless %destructor
-input.y:7.13-29: previous declaration
-input.y:8.10-24: redeclaration for default tagless %printer
-input.y:8.10-24: previous declaration
-input.y:10.13-29: redeclaration for default tagless %destructor
-input.y:7.13-29: previous declaration
-input.y:11.10-24: redeclaration for default tagless %printer
-input.y:8.10-24: previous declaration
-input.y:17.13-29: redeclaration for default tagged %destructor
-input.y:4.13-29: previous declaration
-input.y:18.10-24: redeclaration for default tagged %printer
-input.y:5.10-24: previous declaration
-input.y:20.13-29: redeclaration for default tagless %destructor
-input.y:10.13-29: previous declaration
-input.y:21.10-24: redeclaration for default tagless %printer
-input.y:11.10-24: previous declaration
+echo >>"$at_stderr"; $as_echo "input.y:1.13-29: error: redeclaration for default tagged %destructor
+input.y:1.13-29:     previous declaration
+input.y:2.10-24: error: redeclaration for default tagged %printer
+input.y:2.10-24:     previous declaration
+input.y:4.13-29: error: redeclaration for default tagged %destructor
+input.y:1.13-29:     previous declaration
+input.y:5.10-24: error: redeclaration for default tagged %printer
+input.y:2.10-24:     previous declaration
+input.y:7.13-29: error: redeclaration for default tagless %destructor
+input.y:7.13-29:     previous declaration
+input.y:8.10-24: error: redeclaration for default tagless %printer
+input.y:8.10-24:     previous declaration
+input.y:10.13-29: error: redeclaration for default tagless %destructor
+input.y:7.13-29:      previous declaration
+input.y:11.10-24: error: redeclaration for default tagless %printer
+input.y:8.10-24:      previous declaration
+input.y:17.13-29: error: redeclaration for default tagged %destructor
+input.y:4.13-29:      previous declaration
+input.y:18.10-24: error: redeclaration for default tagged %printer
+input.y:5.10-24:      previous declaration
+input.y:20.13-29: error: redeclaration for default tagless %destructor
+input.y:10.13-29:     previous declaration
+input.y:21.10-24: error: redeclaration for default tagless %printer
+input.y:11.10-24:     previous declaration
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:207"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:331"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3769,13 +4376,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_5
-#AT_START_6
-at_fn_group_banner 6 'input.at:241' \
+#AT_STOP_7
+#AT_START_8
+at_fn_group_banner 8 'input.at:365' \
   "Per-type %printer and %destructor redeclared" "   " 1
 at_xfail=no
 (
-  $as_echo "6. $at_setup_line: testing $at_desc ..."
+  $as_echo "8. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -3797,32 +4404,32 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:258"
+$as_echo "$at_srcdir/input.at:382: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:382"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:4.13-29: %destructor redeclaration for <field1>
-input.y:1.13-29: previous declaration
-input.y:4.13-29: %destructor redeclaration for <field1>
-input.y:4.13-29: previous declaration
-input.y:5.10-24: %printer redeclaration for <field2>
-input.y:2.10-24: previous declaration
-input.y:5.10-24: %printer redeclaration for <field2>
-input.y:5.10-24: previous declaration
-input.y:11.13-29: %destructor redeclaration for <field1>
-input.y:4.13-29: previous declaration
-input.y:11.13-29: %destructor redeclaration for <field2>
-input.y:1.13-29: previous declaration
-input.y:12.10-24: %printer redeclaration for <field1>
-input.y:2.10-24: previous declaration
-input.y:12.10-24: %printer redeclaration for <field2>
-input.y:5.10-24: previous declaration
+echo >>"$at_stderr"; $as_echo "input.y:4.13-29: error: %destructor redeclaration for <field1>
+input.y:1.13-29:     previous declaration
+input.y:4.13-29: error: %destructor redeclaration for <field1>
+input.y:4.13-29:     previous declaration
+input.y:5.10-24: error: %printer redeclaration for <field2>
+input.y:2.10-24:     previous declaration
+input.y:5.10-24: error: %printer redeclaration for <field2>
+input.y:5.10-24:     previous declaration
+input.y:11.13-29: error: %destructor redeclaration for <field1>
+input.y:4.13-29:      previous declaration
+input.y:11.13-29: error: %destructor redeclaration for <field2>
+input.y:1.13-29:      previous declaration
+input.y:12.10-24: error: %printer redeclaration for <field1>
+input.y:2.10-24:      previous declaration
+input.y:12.10-24: error: %printer redeclaration for <field2>
+input.y:5.10-24:      previous declaration
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:258"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:382"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3832,13 +4439,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_6
-#AT_START_7
-at_fn_group_banner 7 'input.at:284' \
+#AT_STOP_8
+#AT_START_9
+at_fn_group_banner 9 'input.at:408' \
   "Unused values with default %destructor" "         " 1
 at_xfail=no
 (
-  $as_echo "7. $at_setup_line: testing $at_desc ..."
+  $as_echo "9. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -3860,9 +4467,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/input.at:297: 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/input.at:421: 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:297"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:421"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -3870,29 +4477,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/input.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:297: 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:297"
+$as_echo "$at_srcdir/input.at:421: 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:421"
 ( $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/input.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:297: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:421: \$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:297"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:421"
 ( $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
@@ -3901,25 +4508,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:297: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:421: \$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:297"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:421"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3927,26 +4534,26 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:297: bison input.y"
-at_fn_check_prepare_trace "input.at:297"
+$as_echo "$at_srcdir/input.at:421: bison input.y"
+at_fn_check_prepare_trace "input.at:421"
 ( $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 "input.y:6.8-45: warning: unset value: \$\$
-input.y:6.8-45: warning: unused value: \$2
+input.y:6.12-14: warning: unused value: \$2
 input.y:7.6-8: warning: unset value: \$\$
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -3954,15 +4561,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:297: 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:297"
+$as_echo "$at_srcdir/input.at:421: 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:421"
 ( $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/input.at:297"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -3971,7 +4578,7 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:6.8-45: warning: unset value: $$
-input.y:6.8-45: warning: unused value: $2
+input.y:6.12-14: warning: unused value: $2
 input.y:7.6-8: warning: unset value: $$
 _ATEOF
 
@@ -4000,9 +4607,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:297: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:421: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:297"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:421"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4010,7 +4617,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/input.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4018,15 +4625,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:297: 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:297"
+$as_echo "$at_srcdir/input.at:421: 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:421"
 ( $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:297"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4035,28 +4642,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:297: 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:297"
+$as_echo "$at_srcdir/input.at:421: 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:421"
 ( $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:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:297: 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:297"
+$as_echo "$at_srcdir/input.at:421: 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:421"
 ( $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:297"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4082,9 +4689,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/input.at:314: 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/input.at:438: 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:314"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:438"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4092,29 +4699,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/input.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:314: 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:314"
+$as_echo "$at_srcdir/input.at:438: 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:438"
 ( $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/input.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:314: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:438: \$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:314"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:438"
 ( $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
@@ -4123,25 +4730,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:314: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:438: \$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:314"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:438"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4149,25 +4756,25 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:314: bison input.y"
-at_fn_check_prepare_trace "input.at:314"
+$as_echo "$at_srcdir/input.at:438: bison input.y"
+at_fn_check_prepare_trace "input.at:438"
 ( $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 "input.y:6.8-45: warning: unused value: \$4
+echo >>"$at_stderr"; $as_echo "input.y:6.23-28: warning: unused value: \$4
 input.y:8.9-11: warning: unset value: \$\$
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -4175,15 +4782,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:314: 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:314"
+$as_echo "$at_srcdir/input.at:438: 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:438"
 ( $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/input.at:314"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4191,7 +4798,7 @@ $at_traceon; }
   # Build expected stderr up to and including the "warnings being
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
-input.y:6.8-45: warning: unused value: $4
+input.y:6.23-28: warning: unused value: $4
 input.y:8.9-11: warning: unset value: $$
 _ATEOF
 
@@ -4220,9 +4827,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:314: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:438: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:314"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:438"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4230,7 +4837,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/input.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4238,15 +4845,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:314: 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:314"
+$as_echo "$at_srcdir/input.at:438: 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:438"
 ( $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:314"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4255,28 +4862,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:314: 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:314"
+$as_echo "$at_srcdir/input.at:438: 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:438"
 ( $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:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:314: 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:314"
+$as_echo "$at_srcdir/input.at:438: 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:438"
 ( $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:314"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4288,13 +4895,13 @@ fi
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_7
-#AT_START_8
-at_fn_group_banner 8 'input.at:326' \
+#AT_STOP_9
+#AT_START_10
+at_fn_group_banner 10 'input.at:450' \
   "Unused values with per-type %destructor" "        " 1
 at_xfail=no
 (
-  $as_echo "8. $at_setup_line: testing $at_desc ..."
+  $as_echo "10. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -4315,9 +4922,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/input.at:338: 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/input.at:462: 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:338"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:462"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4325,29 +4932,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/input.at:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:338: 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:338"
+$as_echo "$at_srcdir/input.at:462: 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:462"
 ( $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/input.at:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:338: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:462: \$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:338"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:462"
 ( $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
@@ -4356,25 +4963,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:338: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:462: \$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:338"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:462"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4382,26 +4989,26 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:338: bison input.y"
-at_fn_check_prepare_trace "input.at:338"
+$as_echo "$at_srcdir/input.at:462: bison input.y"
+at_fn_check_prepare_trace "input.at:462"
 ( $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 "input.y:6.8-22: warning: unset value: \$\$
-input.y:6.8-22: warning: unused value: \$2
+input.y:6.12-14: warning: unused value: \$2
 input.y:7.6-8: warning: unset value: \$\$
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -4409,15 +5016,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:338: 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:338"
+$as_echo "$at_srcdir/input.at:462: 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:462"
 ( $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/input.at:338"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4426,7 +5033,7 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:6.8-22: warning: unset value: $$
-input.y:6.8-22: warning: unused value: $2
+input.y:6.12-14: warning: unused value: $2
 input.y:7.6-8: warning: unset value: $$
 _ATEOF
 
@@ -4455,9 +5062,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:338: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:462: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:338"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:462"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4465,7 +5072,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/input.at:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4473,15 +5080,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:338: 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:338"
+$as_echo "$at_srcdir/input.at:462: 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:462"
 ( $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:338"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4490,28 +5097,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:338: 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:338"
+$as_echo "$at_srcdir/input.at:462: 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:462"
 ( $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:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:338: 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:338"
+$as_echo "$at_srcdir/input.at:462: 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:462"
 ( $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:338"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:462"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4523,13 +5130,13 @@ fi
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_8
-#AT_START_9
-at_fn_group_banner 9 'input.at:351' \
+#AT_STOP_10
+#AT_START_11
+at_fn_group_banner 11 'input.at:475' \
   "Incompatible Aliases" "                           " 1
 at_xfail=no
 (
-  $as_echo "9. $at_setup_line: testing $at_desc ..."
+  $as_echo "11. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -4553,24 +5160,24 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:370: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:370"
+$as_echo "$at_srcdir/input.at:494: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:494"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:8.7-11: %type redeclaration for foo
-input.y:3.7-11: previous declaration
-input.y:10.13-17: %destructor redeclaration for foo
-input.y:5.13-17: previous declaration
-input.y:9.10-14: %printer redeclaration for foo
-input.y:4.10-14: previous declaration
-input.y:11.1-5: %left redeclaration for foo
-input.y:6.1-5: previous declaration
+echo >>"$at_stderr"; $as_echo "input.y:8.7-11: error: %type redeclaration for foo
+input.y:3.7-11:     previous declaration
+input.y:10.13-17: error: %destructor redeclaration for foo
+input.y:5.13-17:      previous declaration
+input.y:9.10-14: error: %printer redeclaration for foo
+input.y:4.10-14:     previous declaration
+input.y:11.1-5: error: %left redeclaration for foo
+input.y:6.1-5:      previous declaration
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:370"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:494"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4580,13 +5187,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_9
-#AT_START_10
-at_fn_group_banner 10 'input.at:392' \
+#AT_STOP_11
+#AT_START_12
+at_fn_group_banner 12 'input.at:516' \
   "Torturing the Scanner" "                          " 1
 at_xfail=no
 (
-  $as_echo "10. $at_setup_line: testing $at_desc ..."
+  $as_echo "12. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -4594,17 +5201,17 @@ at_xfail=no
 : >input.y
 
 { set +x
-$as_echo "$at_srcdir/input.at:396: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:396"
+$as_echo "$at_srcdir/input.at:520: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:520"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.1: syntax error, unexpected end of file
+echo >>"$at_stderr"; $as_echo "input.y:1.1: error: syntax error, unexpected end of file
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:396"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:520"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4617,17 +5224,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:404: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:404"
+$as_echo "$at_srcdir/input.at:528: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:528"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.1-2: syntax error, unexpected {...}
+echo >>"$at_stderr"; $as_echo "input.y:1.1-2: error: syntax error, unexpected {...}
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:404"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4705,7 +5312,7 @@ char quote[] = "]],";
 %}
 
 %{
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -4741,9 +5348,8 @@ value_as_yystype (value val)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -4784,9 +5390,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/input.at:535: 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/input.at:659: 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 -v -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:535"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:659"
 ( $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 -v -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4794,29 +5400,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/input.at:535"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:535: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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 -d -v -o input.c input.y" "input.at:535"
+$as_echo "$at_srcdir/input.at:659: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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 -d -v -o input.c input.y" "input.at:659"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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/input.at:535"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:535: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:659: \$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:535"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:659"
 ( $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
@@ -4825,25 +5431,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:535"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:535: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:659: \$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:535"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:659"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:535"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4851,61 +5457,100 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:535: bison -d -v -o input.c input.y"
-at_fn_check_prepare_trace "input.at:535"
+$as_echo "$at_srcdir/input.at:659: bison -d -v -o input.c input.y"
+at_fn_check_prepare_trace "input.at:659"
 ( $at_check_trace; bison -d -v -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/input.at:535"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:536: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "input.at:536"
+$as_echo "$at_srcdir/input.at:660: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "input.at:660"
+( $at_check_trace; $BISON_C_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/input.at:660"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/input.at:660: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "input.at:660"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
 ) >>"$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:536"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/input.at:537: \$CC \$CFLAGS \$CPPFLAGS -c -o main.o main.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o main.o main.c " "input.at:537"
+$as_echo "$at_srcdir/input.at:661: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "input.at:661"
+( $at_check_trace; $BISON_C_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/input.at:661"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/input.at:661: \$CC \$CFLAGS \$CPPFLAGS -c -o main.o main.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o main.o main.c " "input.at:661"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o main.o main.c
 ) >>"$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:537"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:661"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/input.at:662: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "input.at:662"
+( $at_check_trace; $BISON_C_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/input.at:662"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/input.at:538: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.o main.o \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.o main.o $LIBS" "input.at:538"
+$as_echo "$at_srcdir/input.at:662: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.o main.o \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.o main.o $LIBS" "input.at:662"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.o main.o $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/input.at:538"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:662"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/input.at:539:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "input.at:539"
+$as_echo "$at_srcdir/input.at:663:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "input.at:663"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -4914,20 +5559,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "[[],
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:539"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:663"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/input.at:539: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "input.at:539"
+$as_echo "$at_srcdir/input.at:663: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "input.at:663"
 ( $at_check_trace; 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/input.at:539"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:663"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -4937,13 +5582,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_10
-#AT_START_11
-at_fn_group_banner 11 'input.at:550' \
+#AT_STOP_12
+#AT_START_13
+at_fn_group_banner 13 'input.at:674' \
   "Typed symbol aliases" "                           " 1
 at_xfail=no
 (
-  $as_echo "11. $at_setup_line: testing $at_desc ..."
+  $as_echo "13. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -4977,9 +5622,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/input.at:566: 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/input.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 input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:566"
+at_fn_check_prepare_notrace 'an embedded newline' "input.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 input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -4987,29 +5632,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/input.at:566"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:566: 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" "input.at:566"
+$as_echo "$at_srcdir/input.at:690: 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" "input.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 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/input.at:566"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:566: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.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' "input.at:566"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.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
@@ -5018,25 +5663,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:566"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:566: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.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' "input.at:566"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:566"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5044,15 +5689,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:566: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:566"
+$as_echo "$at_srcdir/input.at:690: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:690"
 ( $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/input.at:566"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:690"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5062,13 +5707,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_11
-#AT_START_12
-at_fn_group_banner 12 'input.at:586' \
+#AT_STOP_13
+#AT_START_14
+at_fn_group_banner 14 'input.at:710' \
   "Require 1.0" "                                    " 1
 at_xfail=no
 (
-  $as_echo "12. $at_setup_line: testing $at_desc ..."
+  $as_echo "14. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >input.y <<'_ATEOF'
@@ -5092,9 +5737,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/input.at:586: 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/input.at:710: 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' "input.at:586"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:710"
 ( $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>&-
@@ -5102,29 +5747,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/input.at:586"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:586: 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" "input.at:586"
+$as_echo "$at_srcdir/input.at:710: 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" "input.at:710"
 ( $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/input.at:586"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:586: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:710: \$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:586"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:710"
 ( $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
@@ -5133,25 +5778,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:586"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:586: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:710: \$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:586"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:710"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:586"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5159,15 +5804,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:586: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:586"
+$as_echo "$at_srcdir/input.at:710: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:710"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:586"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5176,13 +5821,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_12
-#AT_START_13
-at_fn_group_banner 13 'input.at:587' \
-  "Require 2.6.2" "                                  " 1
+#AT_STOP_14
+#AT_START_15
+at_fn_group_banner 15 'input.at:711' \
+  "Require 2.7.12-4996" "                            " 1
 at_xfail=no
 (
-  $as_echo "13. $at_setup_line: testing $at_desc ..."
+  $as_echo "15. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >input.y <<'_ATEOF'
@@ -5194,7 +5839,7 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%require "2.6.2";
+%require "2.7.12-4996";
 %%
 empty_file:;
 _ATEOF
@@ -5206,9 +5851,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/input.at:587: 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/input.at:711: 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' "input.at:587"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:711"
 ( $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>&-
@@ -5216,29 +5861,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/input.at:587"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:587: 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" "input.at:587"
+$as_echo "$at_srcdir/input.at:711: 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" "input.at:711"
 ( $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/input.at:587"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:587: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:711: \$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:587"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:711"
 ( $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
@@ -5247,25 +5892,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:587"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:587: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:711: \$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:587"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:711"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:587"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5273,15 +5918,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:587: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:587"
+$as_echo "$at_srcdir/input.at:711: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:711"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:587"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5290,13 +5935,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_13
-#AT_START_14
-at_fn_group_banner 14 'input.at:589' \
+#AT_STOP_15
+#AT_START_16
+at_fn_group_banner 16 'input.at:713' \
   "Require 100.0" "                                  " 1
 at_xfail=no
 (
-  $as_echo "14. $at_setup_line: testing $at_desc ..."
+  $as_echo "16. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >input.y <<'_ATEOF'
@@ -5316,15 +5961,15 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:589: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:589"
+$as_echo "$at_srcdir/input.at:713: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:713"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 63 $at_status "$at_srcdir/input.at:589"
+at_fn_check_status 63 $at_status "$at_srcdir/input.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5333,13 +5978,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_14
-#AT_START_15
-at_fn_group_banner 15 'input.at:596' \
+#AT_STOP_16
+#AT_START_17
+at_fn_group_banner 17 'input.at:720' \
   "String aliases for character tokens" "            " 1
 at_xfail=no
 (
-  $as_echo "15. $at_setup_line: testing $at_desc ..."
+  $as_echo "17. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -5369,9 +6014,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/input.at:608: 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/input.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 input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:608"
+at_fn_check_prepare_notrace 'an embedded newline' "input.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 input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -5379,29 +6024,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/input.at:608"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:608: 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" "input.at:608"
+$as_echo "$at_srcdir/input.at:732: 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" "input.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 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/input.at:608"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:608: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.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' "input.at:608"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.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
@@ -5410,25 +6055,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:608"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:608: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.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' "input.at:608"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:608"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5436,15 +6081,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:608: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:608"
+$as_echo "$at_srcdir/input.at:732: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:732"
 ( $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/input.at:608"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:732"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5454,13 +6099,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_15
-#AT_START_16
-at_fn_group_banner 16 'input.at:617' \
+#AT_STOP_17
+#AT_START_18
+at_fn_group_banner 18 'input.at:741' \
   "Symbols" "                                        " 1
 at_xfail=no
 (
-  $as_echo "16. $at_setup_line: testing $at_desc ..."
+  $as_echo "18. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -5479,7 +6124,7 @@ cat >input.y <<'_ATEOF'
 %token WITH.PERIOD
 %token WITHOUT_PERIOD "WITHOUT.PERIOD"
 %code {
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 %%
@@ -5492,9 +6137,8 @@ without_period: "WITHOUT.PERIOD";
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -5518,8 +6162,8 @@ _ATEOF
 # POSIX Yacc accept periods, but not dashes.
 
 { set +x
-$as_echo "$at_srcdir/input.at:642: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --yacc input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --yacc input.y" "input.at:642"
+$as_echo "$at_srcdir/input.at:766: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --yacc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --yacc input.y" "input.at:766"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --yacc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -5529,7 +6173,7 @@ input.y:18.8-16: POSIX Yacc forbids dashes in symbol names: with-dash
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:766"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5542,9 +6186,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/input.at:648: 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/input.at:772: 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 -Wyacc input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:648"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:772"
 ( $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 -Wyacc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -5552,29 +6196,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/input.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wyacc 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 -Wyacc input.y" "input.at:648"
+$as_echo "$at_srcdir/input.at:772: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wyacc 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 -Wyacc input.y" "input.at:772"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wyacc 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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:648: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:772: \$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:648"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:772"
 ( $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
@@ -5583,25 +6227,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:648: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:772: \$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:648"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:772"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5609,8 +6253,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:648: bison -Wyacc input.y"
-at_fn_check_prepare_trace "input.at:648"
+$as_echo "$at_srcdir/input.at:772: bison -Wyacc input.y"
+at_fn_check_prepare_trace "input.at:772"
 ( $at_check_trace; bison -Wyacc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -5620,14 +6264,14 @@ input.y:18.8-16: warning: POSIX Yacc forbids dashes in symbol names: with-dash
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -5635,15 +6279,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Werror" "input.at:648"
+$as_echo "$at_srcdir/input.at:772: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Werror" "input.at:772"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wyacc 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/input.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5680,9 +6324,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:648: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:772: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:648"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:772"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -5690,7 +6334,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/input.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5698,15 +6342,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=error" "input.at:648"
+$as_echo "$at_srcdir/input.at:772: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=error" "input.at:772"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wyacc 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:648"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5715,28 +6359,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Wnone -Werror" "input.at:648"
+$as_echo "$at_srcdir/input.at:772: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y -Wnone -Werror" "input.at:772"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wyacc 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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:648: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=none -Werror" "input.at:648"
+$as_echo "$at_srcdir/input.at:772: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wyacc input.y --warnings=none -Werror" "input.at:772"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wyacc 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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:772"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5751,9 +6395,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/input.at:654: 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/input.at:778: 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' "input.at:654"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:778"
 ( $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>&-
@@ -5761,29 +6405,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/input.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:778"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:654: 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" "input.at:654"
+$as_echo "$at_srcdir/input.at:778: 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" "input.at:778"
 ( $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/input.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:778"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:654: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:778: \$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:654"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:778"
 ( $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
@@ -5792,25 +6436,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:778"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:654: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:778: \$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:654"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:778"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:778"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5818,15 +6462,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:654: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:654"
+$as_echo "$at_srcdir/input.at:778: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:778"
 ( $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/input.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:778"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5834,15 +6478,28 @@ $at_traceon; }
 
 # Make sure we don't export silly token identifiers with periods or dashes.
 { set +x
-$as_echo "$at_srcdir/input.at:657: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "input.at:657"
+$as_echo "$at_srcdir/input.at:781: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "input.at:781"
+( $at_check_trace; $BISON_C_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/input.at:781"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/input.at:781: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "input.at:781"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
 ) >>"$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:657"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:781"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5870,19 +6527,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:670: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:670"
+$as_echo "$at_srcdir/input.at:794: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:794"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; 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:10.10: invalid character: '-'
-input.y:11.10-16: invalid identifier: '1NV4L1D'
-input.y:12.10: invalid character: '-'
+echo >>"$at_stderr"; $as_echo "input.y:10.10: error: invalid character: '-'
+input.y:11.10-16: error: invalid identifier: '1NV4L1D'
+input.y:12.10: error: invalid character: '-'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:670"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:794"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5892,13 +6549,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_16
-#AT_START_17
-at_fn_group_banner 17 'input.at:683' \
+#AT_STOP_18
+#AT_START_19
+at_fn_group_banner 19 'input.at:807' \
   "Numbered tokens" "                                " 1
 at_xfail=no
 (
-  $as_echo "17. $at_setup_line: testing $at_desc ..."
+  $as_echo "19. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -5923,20 +6580,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:694: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison redecl.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison redecl.y" "input.at:694"
+$as_echo "$at_srcdir/input.at:818: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison redecl.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison redecl.y" "input.at:818"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison redecl.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "redecl.y:10.10-22: user token number 11259375 redeclaration for HEXADECIMAL_1
-redecl.y:9.8-16: previous declaration for DECIMAL_1
-redecl.y:12.10-18: user token number 16702650 redeclaration for DECIMAL_2
-redecl.y:11.10-22: previous declaration for HEXADECIMAL_2
+echo >>"$at_stderr"; $as_echo "redecl.y:10.10-22: error: user token number 11259375 redeclaration for HEXADECIMAL_1
+redecl.y:9.8-16:       previous declaration for DECIMAL_1
+redecl.y:12.10-18: error: user token number 16702650 redeclaration for DECIMAL_2
+redecl.y:11.10-22:     previous declaration for HEXADECIMAL_2
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:694"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:818"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5962,18 +6619,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:709: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison too-large.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison too-large.y" "input.at:709"
+$as_echo "$at_srcdir/input.at:833: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison too-large.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison too-large.y" "input.at:833"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison too-large.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "too-large.y:9.22-42: integer out of range: '999999999999999999999'
-too-large.y:10.24-44: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
+echo >>"$at_stderr"; $as_echo "too-large.y:9.22-42: error: integer out of range: '999999999999999999999'
+too-large.y:10.24-44: error: integer out of range: '0xFFFFFFFFFFFFFFFFFFF'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:709"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:833"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -5983,13 +6640,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_17
-#AT_START_18
-at_fn_group_banner 18 'input.at:721' \
+#AT_STOP_19
+#AT_START_20
+at_fn_group_banner 20 'input.at:845' \
   "Unclosed constructs" "                            " 1
 at_xfail=no
 (
-  $as_echo "18. $at_setup_line: testing $at_desc ..."
+  $as_echo "20. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6023,22 +6680,55 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:750: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:750"
+$as_echo "$at_srcdir/input.at:874: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "input.at:874"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; 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:1.10-2.0: missing '\"' at end of line
-input.y:4.10-5.0: missing \"'\" at end of line
-input.y:14.11-15.0: missing \"'\" at end of line
-input.y:16.11-17.0: missing '\"' at end of line
-input.y:19.13-20.0: missing '}' at end of file
-input.y:20.1: syntax error, unexpected end of file
+echo >>"$at_stderr"; $as_echo "input.y:1.10-2.0: error: missing '\"' at end of line
+input.y:4.10-5.0: error: missing \"'\" at end of line
+input.y:14.11-15.0: error: missing \"'\" at end of line
+input.y:16.11-17.0: error: missing '\"' at end of line
+input.y:19.13-20.0: error: missing '}' at end of file
+input.y:20.1: error: syntax error, unexpected end of file
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:750"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:874"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+{ set +x
+$as_echo "$at_srcdir/input.at:883: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -o input.c input.y" "input.at:883"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:1.10-2.0: error: missing '\"' at end of line
+ %token A \"a
+          ^^
+input.y:4.10-5.0: error: missing \"'\" at end of line
+ %token C '1
+          ^^
+input.y:14.11-15.0: error: missing \"'\" at end of line
+ %type <f> 'a
+           ^^
+input.y:16.11-17.0: error: missing '\"' at end of line
+ %type <f> \"a
+           ^^
+input.y:19.13-20.0: error: missing '}' at end of file
+ %destructor { free (\$\$)
+             ^^^^^^^^^^^
+input.y:20.1: error: syntax error, unexpected end of file
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:883"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6048,13 +6738,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_18
-#AT_START_19
-at_fn_group_banner 19 'input.at:766' \
+#AT_STOP_20
+#AT_START_21
+at_fn_group_banner 21 'input.at:909' \
   "%start after first rule" "                        " 1
 at_xfail=no
 (
-  $as_echo "19. $at_setup_line: testing $at_desc ..."
+  $as_echo "21. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6075,9 +6765,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/input.at:778: 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/input.at:921: 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' "input.at:778"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:921"
 ( $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>&-
@@ -6085,29 +6775,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/input.at:778"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:921"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:778: 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" "input.at:778"
+$as_echo "$at_srcdir/input.at:921: 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" "input.at:921"
 ( $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/input.at:778"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:921"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:778: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:921: \$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:778"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:921"
 ( $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
@@ -6116,25 +6806,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:778"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:921"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:778: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:921: \$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:778"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:921"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:778"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:921"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6142,15 +6832,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:778: bison -o input.c input.y"
-at_fn_check_prepare_trace "input.at:778"
+$as_echo "$at_srcdir/input.at:921: bison -o input.c input.y"
+at_fn_check_prepare_trace "input.at:921"
 ( $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/input.at:778"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:921"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6160,13 +6850,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_19
-#AT_START_20
-at_fn_group_banner 20 'input.at:787' \
+#AT_STOP_21
+#AT_START_22
+at_fn_group_banner 22 'input.at:930' \
   "%prec takes a token" "                            " 1
 at_xfail=no
 (
-  $as_echo "20. $at_setup_line: testing $at_desc ..."
+  $as_echo "22. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6181,17 +6871,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:797: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:797"
+$as_echo "$at_srcdir/input.at:940: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:940"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.1-4: rule given for PREC, which is a token
+echo >>"$at_stderr"; $as_echo "input.y:3.1-4: error: rule given for PREC, which is a token
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:797"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:940"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6201,13 +6891,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_20
-#AT_START_21
-at_fn_group_banner 21 'input.at:808' \
+#AT_STOP_22
+#AT_START_23
+at_fn_group_banner 23 'input.at:951' \
   "%prec's token must be defined" "                  " 1
 at_xfail=no
 (
-  $as_echo "21. $at_setup_line: testing $at_desc ..."
+  $as_echo "23. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6225,9 +6915,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/input.at:817: 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/input.at:960: 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:817"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:960"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -6235,29 +6925,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/input.at:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:817: 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:817"
+$as_echo "$at_srcdir/input.at:960: 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:960"
 ( $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/input.at:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:817: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:960: \$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:817"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:960"
 ( $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
@@ -6266,25 +6956,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:817: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:960: \$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:817"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:960"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6292,8 +6982,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:817: bison input.y"
-at_fn_check_prepare_trace "input.at:817"
+$as_echo "$at_srcdir/input.at:960: bison input.y"
+at_fn_check_prepare_trace "input.at:960"
 ( $at_check_trace; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -6302,14 +6992,14 @@ echo >>"$at_stderr"; $as_echo "input.y:2.8-17: warning: token for %prec is not d
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -6317,15 +7007,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:817: 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:817"
+$as_echo "$at_srcdir/input.at:960: 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:960"
 ( $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/input.at:817"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6361,9 +7051,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:817: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:960: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:817"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:960"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -6371,7 +7061,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/input.at:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6379,15 +7069,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:817: 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:817"
+$as_echo "$at_srcdir/input.at:960: 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:960"
 ( $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:817"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6396,28 +7086,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:817: 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:817"
+$as_echo "$at_srcdir/input.at:960: 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:960"
 ( $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:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:817: 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:817"
+$as_echo "$at_srcdir/input.at:960: 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:960"
 ( $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:817"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6429,13 +7119,13 @@ fi
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_21
-#AT_START_22
-at_fn_group_banner 22 'input.at:828' \
+#AT_STOP_23
+#AT_START_24
+at_fn_group_banner 24 'input.at:971' \
   "Reject unused %code qualifiers" "                 " 1
 at_xfail=no
 (
-  $as_echo "22. $at_setup_line: testing $at_desc ..."
+  $as_echo "24. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6450,20 +7140,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:838: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c.y" "input.at:838"
+$as_echo "$at_srcdir/input.at:981: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c.y" "input.at:981"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-c.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-c.y:1.7: %code qualifier 'q' is not used
-input-c.y:2.7-9: %code qualifier 'bad' is not used
-input-c.y:3.7-9: %code qualifier 'bad' is not used
-input-c.y:4.7-12: %code qualifier 'format' is not used
+echo >>"$at_stderr"; $as_echo "input-c.y:1.7: error: %code qualifier 'q' is not used
+input-c.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c.y:3.7-9: error: %code qualifier 'bad' is not used
+input-c.y:4.7-12: error: %code qualifier 'format' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:838"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:981"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6479,19 +7169,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:852: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c-glr.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c-glr.y" "input.at:852"
+$as_echo "$at_srcdir/input.at:995: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c-glr.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c-glr.y" "input.at:995"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-c-glr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-c-glr.y:1.7: %code qualifier 'q' is not used
-input-c-glr.y:2.7-9: %code qualifier 'bad' is not used
-input-c-glr.y:3.8-10: %code qualifier 'bad' is not used
+echo >>"$at_stderr"; $as_echo "input-c-glr.y:1.7: error: %code qualifier 'q' is not used
+input-c-glr.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c-glr.y:3.8-10: error: %code qualifier 'bad' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:852"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:995"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6507,19 +7197,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:865: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++.y" "input.at:865"
+$as_echo "$at_srcdir/input.at:1008: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++.y" "input.at:1008"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-c++.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-c++.y:1.7: %code qualifier 'q' is not used
-input-c++.y:2.7-9: %code qualifier 'bad' is not used
-input-c++.y:3.8: %code qualifier 'q' is not used
+echo >>"$at_stderr"; $as_echo "input-c++.y:1.7: error: %code qualifier 'q' is not used
+input-c++.y:2.7-9: error: %code qualifier 'bad' is not used
+input-c++.y:3.8: error: %code qualifier 'q' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:865"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1008"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6535,19 +7225,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:878: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++-glr.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++-glr.y" "input.at:878"
+$as_echo "$at_srcdir/input.at:1021: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++-glr.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-c++-glr.y" "input.at:1021"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-c++-glr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-c++-glr.y:1.7-9: %code qualifier 'bad' is not used
-input-c++-glr.y:2.7: %code qualifier 'q' is not used
-input-c++-glr.y:3.7: %code qualifier 'q' is not used
+echo >>"$at_stderr"; $as_echo "input-c++-glr.y:1.7-9: error: %code qualifier 'bad' is not used
+input-c++-glr.y:2.7: error: %code qualifier 'q' is not used
+input-c++-glr.y:3.7: error: %code qualifier 'q' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:878"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6563,19 +7253,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:891: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-@@.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-@@.y" "input.at:891"
+$as_echo "$at_srcdir/input.at:1034: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-@@.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-@@.y" "input.at:1034"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison special-char-@@.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "special-char-@@.y:1.7-9: %code qualifier 'bad' is not used
-special-char-@@.y:2.7: %code qualifier 'q' is not used
-special-char-@@.y:3.7: %code qualifier 'q' is not used
+echo >>"$at_stderr"; $as_echo "special-char-@@.y:1.7-9: error: %code qualifier 'bad' is not used
+special-char-@@.y:2.7: error: %code qualifier 'q' is not used
+special-char-@@.y:3.7: error: %code qualifier 'q' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:891"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1034"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6591,19 +7281,19 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:904: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-].y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-].y" "input.at:904"
+$as_echo "$at_srcdir/input.at:1047: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-].y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison special-char-].y" "input.at:1047"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison special-char-].y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "special-char-].y:1.7-9: %code qualifier 'bad' is not used
-special-char-].y:2.7: %code qualifier 'q' is not used
-special-char-].y:3.7: %code qualifier 'q' is not used
+echo >>"$at_stderr"; $as_echo "special-char-].y:1.7-9: error: %code qualifier 'bad' is not used
+special-char-].y:2.7: error: %code qualifier 'q' is not used
+special-char-].y:3.7: error: %code qualifier 'q' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:904"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1047"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6613,13 +7303,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_22
-#AT_START_23
-at_fn_group_banner 23 'input.at:917' \
+#AT_STOP_24
+#AT_START_25
+at_fn_group_banner 25 'input.at:1060' \
   "%define errors" "                                 " 1
 at_xfail=no
 (
-  $as_echo "23. $at_setup_line: testing $at_desc ..."
+  $as_echo "25. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6636,20 +7326,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:929: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-redefined.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-redefined.y" "input.at:929"
+$as_echo "$at_srcdir/input.at:1072: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-redefined.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-redefined.y" "input.at:1072"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-redefined.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-redefined.y:2.9-11: %define variable 'var' redefined
-input-redefined.y:1.9-11: previous definition
-input-redefined.y:3.10-12: %define variable 'var' redefined
-input-redefined.y:2.9-11: previous definition
+echo >>"$at_stderr"; $as_echo "input-redefined.y:2.9-11: error: %define variable 'var' redefined
+input-redefined.y:1.9-11:     previous definition
+input-redefined.y:3.10-12: error: %define variable 'var' redefined
+input-redefined.y:2.9-11:      previous definition
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:929"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1072"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6664,17 +7354,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:942: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-unused.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-unused.y" "input.at:942"
+$as_echo "$at_srcdir/input.at:1085: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-unused.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-unused.y" "input.at:1085"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-unused.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-unused.y:1.9-11: %define variable 'var' is not used
+echo >>"$at_stderr"; $as_echo "input-unused.y:1.9-11: error: %define variable 'var' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:942"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1085"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6684,13 +7374,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_23
-#AT_START_24
-at_fn_group_banner 24 'input.at:953' \
+#AT_STOP_25
+#AT_START_26
+at_fn_group_banner 26 'input.at:1096' \
   "%define, --define, --force-define" "              " 1
 at_xfail=no
 (
-  $as_echo "24. $at_setup_line: testing $at_desc ..."
+  $as_echo "26. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6716,13 +7406,13 @@ 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/input.at:969: 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/input.at:1112: 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 -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \\
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \\
                  -Dvar-dfg=cmd-d -Fvar-dfg=cmd-f \\
                  -Fvar-fd=cmd-f -Dvar-fd=cmd-d   \\
                  --skeleton ./skel.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:969"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1112"
 ( $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 -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \
@@ -6734,17 +7424,17 @@ at_status=$? at_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:969"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1112"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:969: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \\
+$as_echo "$at_srcdir/input.at:1112: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \\
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \\
                  -Dvar-dfg=cmd-d -Fvar-dfg=cmd-f \\
                  -Fvar-fd=cmd-f -Dvar-fd=cmd-d   \\
                  --skeleton ./skel.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:969"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1112"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \
                  -Dvar-dfg=cmd-d -Fvar-dfg=cmd-f \
@@ -6755,16 +7445,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/input.at:969"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1112"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:969: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1112: \$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:969"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1112"
 ( $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
@@ -6773,25 +7463,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:969"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1112"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:969: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1112: \$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:969"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1112"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:969"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1112"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6799,12 +7489,12 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:969: bison -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \\
+$as_echo "$at_srcdir/input.at:1112: bison -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \\
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \\
                  -Dvar-dfg=cmd-d -Fvar-dfg=cmd-f \\
                  -Fvar-fd=cmd-f -Dvar-fd=cmd-d   \\
                  --skeleton ./skel.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:969"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1112"
 ( $at_check_trace; bison -Dvar-dd=cmd-d1 -Dvar-dd=cmd-d2 \
                  -Fvar-ff=cmd-f1 -Fvar-ff=cmd-f2 \
                  -Dvar-dfg=cmd-d -Fvar-dfg=cmd-f \
@@ -6815,14 +7505,14 @@ at_status=$? at_failed=false
 $at_check_filter
 at_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:969"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1112"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:974: cat input.tab.c"
-at_fn_check_prepare_trace "input.at:974"
+$as_echo "$at_srcdir/input.at:1117: cat input.tab.c"
+at_fn_check_prepare_trace "input.at:1117"
 ( $at_check_trace; cat input.tab.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -6834,7 +7524,7 @@ var-dfg: cmd-f
 var-fd: cmd-d
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1117"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6847,18 +7537,45 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:986: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dvar=cmd-d input-dg.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dvar=cmd-d input-dg.y" "input.at:986"
+$as_echo "$at_srcdir/input.at:1129: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dvar=cmd-d input-dg.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dvar=cmd-d input-dg.y" "input.at:1129"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dvar=cmd-d input-dg.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input-dg.y:1.9-11: %define variable 'var' redefined
-<command line>:2: previous definition
+echo >>"$at_stderr"; $as_echo "input-dg.y:1.9-11: error: %define variable 'var' redefined
+<command line>:1:      previous definition
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1129"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+cat >input-dg.y <<'_ATEOF'
+%define var "gram"
+%%
+start: ;
+_ATEOF
+
+
+{ set +x
+$as_echo "$at_srcdir/input.at:1139: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -Dvar=cmd-d input-dg.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -Dvar=cmd-d input-dg.y" "input.at:1139"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -Dvar=cmd-d input-dg.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input-dg.y:1.9-11: error: %define variable 'var' redefined
+ %define var \"gram\"
+         ^^^
+<command line>:2:      previous definition
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:986"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1139"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6871,18 +7588,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:995: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dunused-d -Funused-f input-unused.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dunused-d -Funused-f input-unused.y" "input.at:995"
+$as_echo "$at_srcdir/input.at:1150: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dunused-d -Funused-f input-unused.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dunused-d -Funused-f input-unused.y" "input.at:1150"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dunused-d -Funused-f input-unused.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<command line>:2: %define variable 'unused-d' is not used
-<command line>:3: %define variable 'unused-f' is not used
+echo >>"$at_stderr"; $as_echo "<command line>:1: error: %define variable 'unused-d' is not used
+<command line>:2: error: %define variable 'unused-f' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:995"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6892,13 +7609,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_24
-#AT_START_25
-at_fn_group_banner 25 'input.at:1006' \
+#AT_STOP_26
+#AT_START_27
+at_fn_group_banner 27 'input.at:1161' \
   "%define Boolean variables" "                      " 1
 at_xfail=no
 (
-  $as_echo "25. $at_setup_line: testing $at_desc ..."
+  $as_echo "27. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6913,17 +7630,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1016: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison Input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison Input.y" "input.at:1016"
+$as_echo "$at_srcdir/input.at:1171: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison Input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison Input.y" "input.at:1171"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison Input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "Input.y:2.9-14: invalid value for %define Boolean variable 'public'
+echo >>"$at_stderr"; $as_echo "Input.y:2.9-14: error: invalid value for %define Boolean variable 'public'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1016"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1171"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -6933,13 +7650,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_25
-#AT_START_26
-at_fn_group_banner 26 'input.at:1026' \
+#AT_STOP_27
+#AT_START_28
+at_fn_group_banner 28 'input.at:1181' \
   "%define enum variables" "                         " 1
 at_xfail=no
 (
-  $as_echo "26. $at_setup_line: testing $at_desc ..."
+  $as_echo "28. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -6952,26 +7669,27 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1034: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1034"
+$as_echo "$at_srcdir/input.at:1189: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1189"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-29: invalid value for %define variable 'lr.default-reductions': 'bogus'
-input.y:1.9-29: accepted value: 'most'
-input.y:1.9-29: accepted value: 'consistent'
-input.y:1.9-29: accepted value: 'accepting'
+echo >>"$at_stderr"; $as_echo "input.y:1.9-29: error: invalid value for %define variable 'lr.default-reductions': 'bogus'
+input.y:1.9-29:     accepted value: 'most'
+input.y:1.9-29:     accepted value: 'consistent'
+input.y:1.9-29:     accepted value: 'accepting'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1034"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 # Back-end.
+# FIXME: these should be indented, but we shouldn't mess with the m4 yet
 cat >input.y <<'_ATEOF'
 %define api.push-pull neither
 %%
@@ -6980,20 +7698,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1047: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1047"
+$as_echo "$at_srcdir/input.at:1203: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1203"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither'
-input.y:1.9-21: accepted value: 'pull'
-input.y:1.9-21: accepted value: 'push'
-input.y:1.9-21: accepted value: 'both'
+echo >>"$at_stderr"; $as_echo "input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
+input.y:1.9-21: error: accepted value: 'pull'
+input.y:1.9-21: error: accepted value: 'push'
+input.y:1.9-21: error: accepted value: 'both'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1047"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1203"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7003,13 +7721,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_26
-#AT_START_27
-at_fn_group_banner 27 'input.at:1060' \
+#AT_STOP_28
+#AT_START_29
+at_fn_group_banner 29 'input.at:1216' \
   "%define backward compatibility" "                 " 1
 at_xfail=no
 (
-  $as_echo "27. $at_setup_line: testing $at_desc ..."
+  $as_echo "29. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7024,20 +7742,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1070: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1070"
+$as_echo "$at_srcdir/input.at:1226: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1226"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-21: invalid value for %define variable 'api.push-pull': 'neither'
-input.y:1.9-21: accepted value: 'pull'
-input.y:1.9-21: accepted value: 'push'
-input.y:1.9-21: accepted value: 'both'
+echo >>"$at_stderr"; $as_echo "input.y:1.9-21: error: invalid value for %define variable 'api.push-pull': 'neither'
+input.y:1.9-21: error: accepted value: 'pull'
+input.y:1.9-21: error: accepted value: 'push'
+input.y:1.9-21: error: accepted value: 'both'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1070"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1226"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7051,17 +7769,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1082: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1082"
+$as_echo "$at_srcdir/input.at:1238: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1238"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-34: invalid value for %define Boolean variable 'lr.keep-unreachable-states'
+echo >>"$at_stderr"; $as_echo "input.y:1.9-34: error: invalid value for %define Boolean variable 'lr.keep-unreachable-states'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1082"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1238"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7075,17 +7793,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1091: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1091"
+$as_echo "$at_srcdir/input.at:1247: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1247"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-15: %define variable 'foo_bar' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-15: error: %define variable 'foo_bar' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1091"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7095,13 +7813,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_27
-#AT_START_28
-at_fn_group_banner 28 'input.at:1101' \
+#AT_STOP_29
+#AT_START_30
+at_fn_group_banner 30 'input.at:1257' \
   "Unused %define api.pure" "                        " 1
 at_xfail=no
 (
-  $as_echo "28. $at_setup_line: testing $at_desc ..."
+  $as_echo "30. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7122,17 +7840,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1121: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1121"
+$as_echo "$at_srcdir/input.at:1277: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1277"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1121"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1277"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7149,17 +7867,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1122: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1122"
+$as_echo "$at_srcdir/input.at:1278: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1278"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1122"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1278"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7176,17 +7894,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1123: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1123"
+$as_echo "$at_srcdir/input.at:1279: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1279"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1123"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1279"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7203,17 +7921,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1124: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1124"
+$as_echo "$at_srcdir/input.at:1280: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1280"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1124"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1280"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7230,17 +7948,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1125: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1125"
+$as_echo "$at_srcdir/input.at:1281: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1281"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1125"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1281"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7257,17 +7975,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1126: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1126"
+$as_echo "$at_srcdir/input.at:1282: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1282"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-16: %define variable 'api.pure' is not used
+echo >>"$at_stderr"; $as_echo "input.y:1.9-16: error: %define variable 'api.pure' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1126"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1282"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7278,13 +7996,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_28
-#AT_START_29
-at_fn_group_banner 29 'input.at:1134' \
+#AT_STOP_30
+#AT_START_31
+at_fn_group_banner 31 'input.at:1290' \
   "C++ namespace reference errors" "                 " 1
 at_xfail=no
 (
-  $as_echo "29. $at_setup_line: testing $at_desc ..."
+  $as_echo "31. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7305,17 +8023,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1155: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1155"
+$as_echo "$at_srcdir/input.at:1311: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1311"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference is empty
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference is empty
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1155"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1311"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7333,17 +8051,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1157: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1157"
+$as_echo "$at_srcdir/input.at:1313: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1313"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference is empty
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference is empty
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1157"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7361,17 +8079,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1159: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1159"
+$as_echo "$at_srcdir/input.at:1315: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1315"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has consecutive \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has consecutive \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1159"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1315"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7389,17 +8107,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1161: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1161"
+$as_echo "$at_srcdir/input.at:1317: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1317"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has consecutive \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has consecutive \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1161"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1317"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7417,17 +8135,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1163: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1163"
+$as_echo "$at_srcdir/input.at:1319: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1319"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has consecutive \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has consecutive \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1163"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1319"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7445,17 +8163,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1165: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1165"
+$as_echo "$at_srcdir/input.at:1321: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1321"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has consecutive \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has consecutive \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1165"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1321"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7473,18 +8191,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1167: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1167"
+$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1323"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has consecutive \"::\"
-input.y:3.9-17: namespace reference has a trailing \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has consecutive \"::\"
+input.y:3.9-17: error: namespace reference has a trailing \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1167"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1323"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7502,17 +8220,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1170: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1170"
+$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1326"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has a trailing \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has a trailing \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1170"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1326"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7530,17 +8248,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1172: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1172"
+$as_echo "$at_srcdir/input.at:1328: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1328"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has a trailing \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has a trailing \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1172"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1328"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7558,17 +8276,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1174: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1174"
+$as_echo "$at_srcdir/input.at:1330: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1330"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.9-17: namespace reference has a trailing \"::\"
+echo >>"$at_stderr"; $as_echo "input.y:3.9-17: error: namespace reference has a trailing \"::\"
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1174"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1330"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7579,13 +8297,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_29
-#AT_START_30
-at_fn_group_banner 30 'input.at:1190' \
+#AT_STOP_31
+#AT_START_32
+at_fn_group_banner 32 'input.at:1346' \
   "Bad character literals" "                         " 1
 at_xfail=no
 (
-  $as_echo "30. $at_setup_line: testing $at_desc ..."
+  $as_echo "32. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7596,36 +8314,36 @@ start: '
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/input.at:1197: perl -e \"print 'start: \\'';\" >> empty.y || exit 77"
-at_fn_check_prepare_trace "input.at:1197"
-( $at_check_trace; perl -e "print 'start: \'';" >> empty.y || exit 77
+$as_echo "$at_srcdir/input.at:1353: \$PERL -e \"print 'start: \\'';\" >> empty.y || exit 77"
+at_fn_check_prepare_dynamic "$PERL -e \"print 'start: \\'';\" >> empty.y || exit 77" "input.at:1353"
+( $at_check_trace; $PERL -e "print 'start: \'';" >> empty.y || 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/input.at:1197"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1353"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1199: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison empty.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison empty.y" "input.at:1199"
+$as_echo "$at_srcdir/input.at:1355: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison empty.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison empty.y" "input.at:1355"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison empty.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "empty.y:2.8-9: warning: empty character literal
 empty.y:3.8-4.0: warning: empty character literal
-empty.y:3.8-4.0: missing \"'\" at end of line
+empty.y:3.8-4.0: error: missing \"'\" at end of line
 empty.y:4.8: warning: empty character literal
-empty.y:4.8: missing \"'\" at end of file
+empty.y:4.8: error: missing \"'\" at end of file
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1199"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1355"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7638,36 +8356,36 @@ start: 'ab
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/input.at:1212: perl -e \"print 'start: \\'ab';\" >> two.y || exit 77"
-at_fn_check_prepare_trace "input.at:1212"
-( $at_check_trace; perl -e "print 'start: \'ab';" >> two.y || exit 77
+$as_echo "$at_srcdir/input.at:1368: \$PERL -e \"print 'start: \\'ab';\" >> two.y || exit 77"
+at_fn_check_prepare_dynamic "$PERL -e \"print 'start: \\'ab';\" >> two.y || exit 77" "input.at:1368"
+( $at_check_trace; $PERL -e "print 'start: \'ab';" >> two.y || 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/input.at:1212"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1368"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1214: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison two.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison two.y" "input.at:1214"
+$as_echo "$at_srcdir/input.at:1370: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison two.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison two.y" "input.at:1370"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison two.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "two.y:2.8-11: warning: extra characters in character literal
 two.y:3.8-4.0: warning: extra characters in character literal
-two.y:3.8-4.0: missing \"'\" at end of line
+two.y:3.8-4.0: error: missing \"'\" at end of line
 two.y:4.8-10: warning: extra characters in character literal
-two.y:4.8-10: missing \"'\" at end of file
+two.y:4.8-10: error: missing \"'\" at end of file
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1214"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1370"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7680,36 +8398,36 @@ start: 'abc
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/input.at:1227: perl -e \"print 'start: \\'abc';\" >> three.y || exit 77"
-at_fn_check_prepare_trace "input.at:1227"
-( $at_check_trace; perl -e "print 'start: \'abc';" >> three.y || exit 77
+$as_echo "$at_srcdir/input.at:1383: \$PERL -e \"print 'start: \\'abc';\" >> three.y || exit 77"
+at_fn_check_prepare_dynamic "$PERL -e \"print 'start: \\'abc';\" >> three.y || exit 77" "input.at:1383"
+( $at_check_trace; $PERL -e "print 'start: \'abc';" >> three.y || 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/input.at:1227"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1383"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison three.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison three.y" "input.at:1229"
+$as_echo "$at_srcdir/input.at:1385: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison three.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison three.y" "input.at:1385"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison three.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "three.y:2.8-12: warning: extra characters in character literal
 three.y:3.8-4.0: warning: extra characters in character literal
-three.y:3.8-4.0: missing \"'\" at end of line
+three.y:3.8-4.0: error: missing \"'\" at end of line
 three.y:4.8-11: warning: extra characters in character literal
-three.y:4.8-11: missing \"'\" at end of file
+three.y:4.8-11: error: missing \"'\" at end of file
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1229"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1385"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7719,13 +8437,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_30
-#AT_START_31
-at_fn_group_banner 31 'input.at:1243' \
+#AT_STOP_32
+#AT_START_33
+at_fn_group_banner 33 'input.at:1399' \
   "Bad escapes in literals" "                        " 1
 at_xfail=no
 (
-  $as_echo "31. $at_setup_line: testing $at_desc ..."
+  $as_echo "33. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7742,57 +8460,57 @@ _ATEOF
 # (well three with \n): at least Bash 3.2 converts the two-character
 # sequence "\0" into a single NUL character.
 { set +x
-$as_echo "$at_srcdir/input.at:1256: perl -e 'print \"start: \\\"\\\\\\t\\\\\\f\\\\\\0\\\\\\1\\\" ;\";' >> input.y \\
+$as_echo "$at_srcdir/input.at:1412: \$PERL -e 'print \"start: \\\"\\\\\\t\\\\\\f\\\\\\0\\\\\\1\\\" ;\";' >> input.y \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1256"
-( $at_check_trace; perl -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1412"
+( $at_check_trace; $PERL -e 'print "start: \"\\\t\\\f\\\0\\\1\" ;";' >> input.y \
            || 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/input.at:1256"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1412"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1259: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1259"
+$as_echo "$at_srcdir/input.at:1415: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "input.at:1415"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:2.9-12: invalid number after \\-escape: 777
+echo >>"$at_stderr"; $as_echo "input.y:2.9-12: error: invalid number after \\-escape: 777
 input.y:2.8-13: warning: empty character literal
-input.y:2.16-17: invalid number after \\-escape: 0
+input.y:2.16-17: error: invalid number after \\-escape: 0
 input.y:2.15-18: warning: empty character literal
-input.y:2.21-25: invalid number after \\-escape: xfff
+input.y:2.21-25: error: invalid number after \\-escape: xfff
 input.y:2.20-26: warning: empty character literal
-input.y:2.29-31: invalid number after \\-escape: x0
+input.y:2.29-31: error: invalid number after \\-escape: x0
 input.y:2.28-32: warning: empty character literal
-input.y:3.9-14: invalid number after \\-escape: uffff
+input.y:3.9-14: error: invalid number after \\-escape: uffff
 input.y:3.8-15: warning: empty character literal
-input.y:3.18-23: invalid number after \\-escape: u0000
+input.y:3.18-23: error: invalid number after \\-escape: u0000
 input.y:3.17-24: warning: empty character literal
-input.y:3.27-36: invalid number after \\-escape: Uffffffff
+input.y:3.27-36: error: invalid number after \\-escape: Uffffffff
 input.y:3.26-37: warning: empty character literal
-input.y:3.40-49: invalid number after \\-escape: U00000000
+input.y:3.40-49: error: invalid number after \\-escape: U00000000
 input.y:3.39-50: warning: empty character literal
-input.y:4.9-10: invalid character after \\-escape: ' '
+input.y:4.9-10: error: invalid character after \\-escape: ' '
 input.y:4.8-11: warning: empty character literal
-input.y:4.14-15: invalid character after \\-escape: A
+input.y:4.14-15: error: invalid character after \\-escape: A
 input.y:4.13-16: warning: empty character literal
-input.y:5.9-16: invalid character after \\-escape: \\t
-input.y:5.17: invalid character after \\-escape: \\f
-input.y:5.18: invalid character after \\-escape: \\0
-input.y:5.19: invalid character after \\-escape: \\001
+input.y:5.9-16: error: invalid character after \\-escape: \\t
+input.y:5.17: error: invalid character after \\-escape: \\f
+input.y:5.18: error: invalid character after \\-escape: \\0
+input.y:5.19: error: invalid character after \\-escape: \\001
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1259"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1415"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7802,13 +8520,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_31
-#AT_START_32
-at_fn_group_banner 32 'input.at:1292' \
+#AT_STOP_33
+#AT_START_34
+at_fn_group_banner 34 'input.at:1448' \
   "LAC: Errors for %define" "                        " 1
 at_xfail=no
 (
-  $as_echo "32. $at_setup_line: testing $at_desc ..."
+  $as_echo "34. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7821,34 +8539,34 @@ _ATEOF
 # parse.lac.* options are useless if LAC isn't actually activated.
 
 { set +x
-$as_echo "$at_srcdir/input.at:1300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.es-capacity-initial=1 input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.es-capacity-initial=1 input.y" "input.at:1300"
+$as_echo "$at_srcdir/input.at:1456: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.es-capacity-initial=1 input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.es-capacity-initial=1 input.y" "input.at:1456"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dparse.lac.es-capacity-initial=1 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<command line>:2: %define variable 'parse.lac.es-capacity-initial' is not used
+echo >>"$at_stderr"; $as_echo "<command line>:1: error: %define variable 'parse.lac.es-capacity-initial' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1300"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1456"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1304: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.memory-trace=full input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.memory-trace=full input.y" "input.at:1304"
+$as_echo "$at_srcdir/input.at:1460: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.memory-trace=full input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dparse.lac.memory-trace=full input.y" "input.at:1460"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dparse.lac.memory-trace=full input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<command line>:2: %define variable 'parse.lac.memory-trace' is not used
+echo >>"$at_stderr"; $as_echo "<command line>:1: error: %define variable 'parse.lac.memory-trace' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1304"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1460"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7858,13 +8576,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_32
-#AT_START_33
-at_fn_group_banner 33 'input.at:1315' \
+#AT_STOP_34
+#AT_START_35
+at_fn_group_banner 35 'input.at:1471' \
   "-Werror is not affected by -Wnone and -Wall" "    " 1
 at_xfail=no
 (
-  $as_echo "33. $at_setup_line: testing $at_desc ..."
+  $as_echo "35. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -7881,9 +8599,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/input.at:1323: 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/input.at:1479: 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 -Wall input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1323"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1479"
 ( $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 -Wall input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -7891,29 +8609,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/input.at:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wall 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 -Wall input.y" "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wall 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 -Wall input.y" "input.at:1479"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wall 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:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1323: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1479: \$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:1323"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1479"
 ( $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
@@ -7922,25 +8640,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1323: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1479: \$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:1323"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1479"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -7948,8 +8666,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:1323: bison -Wall input.y"
-at_fn_check_prepare_trace "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: bison -Wall input.y"
+at_fn_check_prepare_trace "input.at:1479"
 ( $at_check_trace; bison -Wall input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -7958,14 +8676,14 @@ echo >>"$at_stderr"; $as_echo "input.y:2.1-7: warning: POSIX Yacc forbids dashes
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -7973,15 +8691,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Werror" "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Werror" "input.at:1479"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wall 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/input.at:1323"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8017,9 +8735,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:1323: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:1479: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1323"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1479"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8027,7 +8745,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/input.at:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8035,15 +8753,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=error" "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=error" "input.at:1479"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wall 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:1323"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8052,28 +8770,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Wnone -Werror" "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y -Wnone -Werror" "input.at:1479"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wall 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:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1323: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=none -Werror" "input.at:1323"
+$as_echo "$at_srcdir/input.at:1479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wall input.y --warnings=none -Werror" "input.at:1479"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wall 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:1323"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1479"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8086,9 +8804,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/input.at:1326: 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/input.at:1482: 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 -W input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1326"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1482"
 ( $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 -W input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8096,29 +8814,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/input.at:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -W 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 -W input.y" "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -W 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 -W input.y" "input.at:1482"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -W 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:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1326: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1482: \$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:1326"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1482"
 ( $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
@@ -8127,25 +8845,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1326: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1482: \$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:1326"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1482"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8153,8 +8871,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:1326: bison -W input.y"
-at_fn_check_prepare_trace "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: bison -W input.y"
+at_fn_check_prepare_trace "input.at:1482"
 ( $at_check_trace; bison -W input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -8163,14 +8881,14 @@ echo >>"$at_stderr"; $as_echo "input.y:2.1-7: warning: POSIX Yacc forbids dashes
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -8178,15 +8896,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Werror" "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Werror" "input.at:1482"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -W 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/input.at:1326"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8222,9 +8940,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:1326: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:1482: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1326"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1482"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8232,7 +8950,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/input.at:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8240,15 +8958,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=error" "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=error" "input.at:1482"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -W 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:1326"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8257,28 +8975,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Wnone -Werror" "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y -Wnone -Werror" "input.at:1482"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -W 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:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1326: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=none -Werror" "input.at:1326"
+$as_echo "$at_srcdir/input.at:1482: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -W input.y --warnings=none -Werror" "input.at:1482"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -W 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:1326"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1482"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8291,9 +9009,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/input.at:1329: 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/input.at:1485: 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 -Wno-none input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1329"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1485"
 ( $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 -Wno-none input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8301,29 +9019,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/input.at:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1329: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-none 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 -Wno-none input.y" "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-none 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 -Wno-none input.y" "input.at:1485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-none 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:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1329: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1485: \$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:1329"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1485"
 ( $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
@@ -8332,25 +9050,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1329: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1485: \$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:1329"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1485"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8358,8 +9076,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:1329: bison -Wno-none input.y"
-at_fn_check_prepare_trace "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: bison -Wno-none input.y"
+at_fn_check_prepare_trace "input.at:1485"
 ( $at_check_trace; bison -Wno-none input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -8368,14 +9086,14 @@ echo >>"$at_stderr"; $as_echo "input.y:2.1-7: warning: POSIX Yacc forbids dashes
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -8383,15 +9101,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/input.at:1329: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Werror" "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Werror" "input.at:1485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wno-none 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/input.at:1329"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8427,9 +9145,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/input.at:1329: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/input.at:1485: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1329"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1485"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8437,7 +9155,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/input.at:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8445,15 +9163,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/input.at:1329: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=error" "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=error" "input.at:1485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wno-none 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:1329"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8462,28 +9180,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/input.at:1329: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Wnone -Werror" "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y -Wnone -Werror" "input.at:1485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wno-none 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:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/input.at:1329: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=none -Werror" "input.at:1329"
+$as_echo "$at_srcdir/input.at:1485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wno-none input.y --warnings=none -Werror" "input.at:1485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wno-none 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:1329"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8494,22 +9212,22 @@ fi
 # -Werror is not disabled by -Wnone or equivalent.
 
 { set +x
-$as_echo "$at_srcdir/input.at:1334: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,none,yacc input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,none,yacc input.y" "input.at:1334"
+$as_echo "$at_srcdir/input.at:1490: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,none,yacc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,none,yacc input.y" "input.at:1490"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Werror,none,yacc input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1334"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1490"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1335: sed 's/^.*bison:/bison:/' stderr"
-at_fn_check_prepare_trace "input.at:1335"
+$as_echo "$at_srcdir/input.at:1491: sed 's/^.*bison:/bison:/' stderr"
+at_fn_check_prepare_trace "input.at:1491"
 ( $at_check_trace; sed 's/^.*bison:/bison:/' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -8519,22 +9237,22 @@ echo >>"$at_stdout"; $as_echo "bison: warnings being treated as errors
 input.y:2.1-7: warning: POSIX Yacc forbids dashes in symbol names: foo-bar
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/input.at:1335"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 mv stderr experr
 
 { set +x
-$as_echo "$at_srcdir/input.at:1340: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,no-all,yacc input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,no-all,yacc input.y" "input.at:1340"
+$as_echo "$at_srcdir/input.at:1496: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,no-all,yacc input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror,no-all,yacc input.y" "input.at:1496"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Werror,no-all,yacc input.y
 ) >>"$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 1 $at_status "$at_srcdir/input.at:1340"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1496"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8544,13 +9262,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_33
-#AT_START_34
-at_fn_group_banner 34 'input.at:1349' \
+#AT_STOP_35
+#AT_START_36
+at_fn_group_banner 36 'input.at:1505' \
   "%name-prefix and %define api.prefix are incompatible" "" 1
 at_xfail=no
 (
-  $as_echo "34. $at_setup_line: testing $at_desc ..."
+  $as_echo "36. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -8566,17 +9284,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1364: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  input.y" "input.at:1364"
+$as_echo "$at_srcdir/input.at:1520: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison  input.y" "input.at:1520"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison  input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-18: '%name-prefix' and '%define api.prefix' cannot be used together
+echo >>"$at_stderr"; $as_echo "input.y:1.9-18: error: '%name-prefix' and '%define api.prefix' cannot be used together
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1364"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1520"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8590,17 +9308,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1365: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo -p bar input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo -p bar input.y" "input.at:1365"
+$as_echo "$at_srcdir/input.at:1521: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo -p bar input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo -p bar input.y" "input.at:1521"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dapi.prefix=foo -p bar input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<command line>:2: '%name-prefix' and '%define api.prefix' cannot be used together
+echo >>"$at_stderr"; $as_echo "<command line>:1: error: '%name-prefix' and '%define api.prefix' cannot be used together
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1365"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8614,17 +9332,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1366: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo input.y" "input.at:1366"
+$as_echo "$at_srcdir/input.at:1522: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Dapi.prefix=foo input.y" "input.at:1522"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Dapi.prefix=foo input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<command line>:2: '%name-prefix' and '%define api.prefix' cannot be used together
+echo >>"$at_stderr"; $as_echo "<command line>:1: error: '%name-prefix' and '%define api.prefix' cannot be used together
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1366"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1522"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8638,17 +9356,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/input.at:1367: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -p bar input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -p bar input.y" "input.at:1367"
+$as_echo "$at_srcdir/input.at:1523: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -p bar input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -p bar input.y" "input.at:1523"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -p bar input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:1.9-18: '%name-prefix' and '%define api.prefix' cannot be used together
+echo >>"$at_stderr"; $as_echo "input.y:1.9-18: error: '%name-prefix' and '%define api.prefix' cannot be used together
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/input.at:1367"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1523"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8661,13 +9379,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_34
-#AT_START_35
-at_fn_group_banner 35 'input.at:1378' \
+#AT_STOP_36
+#AT_START_37
+at_fn_group_banner 37 'input.at:1534' \
   "Stray \$ or @" "                                   " 1
 at_xfail=no
 (
-  $as_echo "35. $at_setup_line: testing $at_desc ..."
+  $as_echo "37. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -8699,9 +9417,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/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 \\
+$as_echo "$at_srcdir/input.at:1548: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1548"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8709,29 +9427,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/input.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $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 --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"
+$as_echo "$at_srcdir/input.at:1548: 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:1548"
 ( $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/input.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1392: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1548: \$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:1392"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1548"
 ( $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
@@ -8740,25 +9458,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1392: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1548: \$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:1392"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1548"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8766,8 +9484,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/input.at:1392: bison input.y"
-at_fn_check_prepare_trace "input.at:1392"
+$as_echo "$at_srcdir/input.at:1548: bison input.y"
+at_fn_check_prepare_trace "input.at:1548"
 ( $at_check_trace; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -8783,14 +9501,14 @@ 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/input.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -8798,15 +9516,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { 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 -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"
+$as_echo "$at_srcdir/input.at:1548: 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:1548"
 ( $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/input.at:1392"
+at_fn_check_status 1 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8849,9 +9567,9 @@ _ATEOF
   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,' \\
+$as_echo "$at_srcdir/input.at:1548: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "input.at:1392"
+at_fn_check_prepare_notrace 'an embedded newline' "input.at:1548"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -8859,7 +9577,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/input.at:1392"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8867,15 +9585,15 @@ $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"
+$as_echo "$at_srcdir/input.at:1548: 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:1548"
 ( $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_fn_check_status 1 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8884,28 +9602,28 @@ $at_traceon; }
   # -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"
+$as_echo "$at_srcdir/input.at:1548: 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:1548"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $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"
+$as_echo "$at_srcdir/input.at:1548: 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:1548"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1548"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -8917,13 +9635,13 @@ fi
   $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' \
+#AT_STOP_37
+#AT_START_38
+at_fn_group_banner 38 'input.at:1568' \
   "Code injection" "                                 " 1
 at_xfail=no
 (
-  $as_echo "36. $at_setup_line: testing $at_desc ..."
+  $as_echo "38. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -8977,9 +9695,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/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 \\
+$as_echo "$at_srcdir/input.at:1619: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1619"
 ( $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>&-
@@ -8987,29 +9705,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/input.at:1463"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $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"
+$as_echo "$at_srcdir/input.at:1619: 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:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
@@ -9018,25 +9736,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9044,15 +9762,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1619: bison -d               input.y"
+at_fn_check_prepare_trace "input.at:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9063,9 +9781,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/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 \\
+$as_echo "$at_srcdir/input.at:1619: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1619"
 ( $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>&-
@@ -9073,29 +9791,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/input.at:1463"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $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"
+$as_echo "$at_srcdir/input.at:1619: 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:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
@@ -9104,25 +9822,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9130,15 +9848,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1619: bison -d -S glr.c      input.y"
+at_fn_check_prepare_trace "input.at:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9149,9 +9867,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/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 \\
+$as_echo "$at_srcdir/input.at:1619: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1619"
 ( $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>&-
@@ -9159,29 +9877,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/input.at:1463"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $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"
+$as_echo "$at_srcdir/input.at:1619: 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:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
@@ -9190,25 +9908,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9216,15 +9934,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1619: bison -d -S lalr1.cc   input.y"
+at_fn_check_prepare_trace "input.at:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9235,9 +9953,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/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 \\
+$as_echo "$at_srcdir/input.at:1619: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1619"
 ( $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>&-
@@ -9245,29 +9963,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/input.at:1463"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $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"
+$as_echo "$at_srcdir/input.at:1619: 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:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
@@ -9276,25 +9994,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9302,15 +10020,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1619: bison -d -S glr.cc     input.y"
+at_fn_check_prepare_trace "input.at:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9321,9 +10039,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/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 \\
+$as_echo "$at_srcdir/input.at:1619: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1619"
 ( $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>&-
@@ -9331,29 +10049,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/input.at:1463"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $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"
+$as_echo "$at_srcdir/input.at:1619: 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:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
@@ -9362,25 +10080,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1463: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1619: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9388,15 +10106,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1619: bison    -S lalr1.java input.y"
+at_fn_check_prepare_trace "input.at:1619"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9445,9 +10163,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/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 \\
+$as_echo "$at_srcdir/input.at:1620: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1620"
 ( $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>&-
@@ -9455,29 +10173,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/input.at:1464"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $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"
+$as_echo "$at_srcdir/input.at:1620: 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:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
@@ -9486,25 +10204,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9512,15 +10230,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1620: bison -d               input.y"
+at_fn_check_prepare_trace "input.at:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9531,9 +10249,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/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 \\
+$as_echo "$at_srcdir/input.at:1620: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1620"
 ( $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>&-
@@ -9541,29 +10259,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/input.at:1464"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $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"
+$as_echo "$at_srcdir/input.at:1620: 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:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
@@ -9572,25 +10290,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9598,15 +10316,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1620: bison -d -S glr.c      input.y"
+at_fn_check_prepare_trace "input.at:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9617,9 +10335,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/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 \\
+$as_echo "$at_srcdir/input.at:1620: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1620"
 ( $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>&-
@@ -9627,29 +10345,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/input.at:1464"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $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"
+$as_echo "$at_srcdir/input.at:1620: 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:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
@@ -9658,25 +10376,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9684,15 +10402,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1620: bison -d -S lalr1.cc   input.y"
+at_fn_check_prepare_trace "input.at:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9703,9 +10421,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/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 \\
+$as_echo "$at_srcdir/input.at:1620: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1620"
 ( $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>&-
@@ -9713,29 +10431,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/input.at:1464"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $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"
+$as_echo "$at_srcdir/input.at:1620: 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:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
@@ -9744,25 +10462,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9770,15 +10488,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1620: bison -d -S glr.cc     input.y"
+at_fn_check_prepare_trace "input.at:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9789,9 +10507,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/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 \\
+$as_echo "$at_srcdir/input.at:1620: 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_fn_check_prepare_notrace 'an embedded newline' "input.at:1620"
 ( $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>&-
@@ -9799,29 +10517,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/input.at:1464"
+at_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $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"
+$as_echo "$at_srcdir/input.at:1620: 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:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
@@ -9830,25 +10548,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/input.at:1464: \$XSLTPROC \\
+$as_echo "$at_srcdir/input.at:1620: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "input.at:1620"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9856,15 +10574,15 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/input.at:1620: bison    -S lalr1.java input.y"
+at_fn_check_prepare_trace "input.at:1620"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/input.at:1620"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -9877,13 +10595,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_38
+#AT_START_39
+at_fn_group_banner 39 'named-refs.at:21' \
   "Tutorial calculator" "                            " 2
 at_xfail=no
 (
-  $as_echo "37. $at_setup_line: testing $at_desc ..."
+  $as_echo "39. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -9908,7 +10626,7 @@ 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 void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -9924,18 +10642,18 @@ static int yylex (void);
 %nonassoc '='   /* comparison         */
 %left '-' '+'
 %left '*' '/'
-%left NEG /* negation--unary minus */
+%left NEG       /* negation--unary minus */
 %right '^'      /* exponentiation        */
 
 %%
 input:
   line
-| input line         {  }
+| input line         {}
 ;
 
 line:
   '\n'
-| exp '\n'           {  }
+| exp '\n'           {}
 ;
 
 exp:
@@ -9944,15 +10662,15 @@ exp:
   {
     if ($l != $r)
       fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
+    $$ = $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[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;           }
+| exp[l] '^' exp[r]  { $$ = power ($l, $r); }
+| '(' exp[e] ')'     { $$ = $e;           }
 | '(' error ')'      { $$ = 1111; yyerrok;  }
 | '!'                { $$ = 0; YYERROR;     }
 | '-' error          { $$ = 0; YYERROR;     }
@@ -9961,9 +10679,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int get_char (void)
@@ -10117,15 +10834,15 @@ 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
+  sort 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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -10153,6 +10870,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/named-refs.at:185: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "named-refs.at:185"
+( $at_check_trace; $BISON_C_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/named-refs.at:185"
+$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
@@ -10197,13 +10927,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_39
+#AT_START_40
+at_fn_group_banner 40 'named-refs.at:195' \
   "Undefined and ambiguous references" "             " 2
 at_xfail=no
 (
-  $as_echo "38. $at_setup_line: testing $at_desc ..."
+  $as_echo "40. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -10219,7 +10949,7 @@ cat >test.y <<'_ATEOF'
 
 %{
 static int power (int base, int exponent);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -10235,18 +10965,18 @@ static int yylex (void);
 %nonassoc '='   /* comparison         */
 %left '-' '+'
 %left '*' '/'
-%left NEG /* negation--unary minus */
+%left NEG       /* negation--unary minus */
 %right '^'      /* exponentiation        */
 
 %%
 input:
   line
-| input line         {  }
+| input line         {}
 ;
 
 line:
   '\n'
-| exp '\n'           {  }
+| exp '\n'           {}
 ;
 
 exp:
@@ -10255,14 +10985,14 @@ exp:
   {
     if ($l != $r)
       fprintf (stderr, "calc: error: %d != %d\n", $l, $r);
-   $$ = $l;
+    $$ = $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[l] '^' exp[r]  { $$ = power ($l, $r12); }
 | '(' exp ')'        { $$ = $expo;           }
 | '(' error ')'      { $$ = 1111; yyerrok;  }
 | '!'                { $$ = 0; YYERROR;     }
@@ -10281,16 +11011,16 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$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'
+echo >>"$at_stderr"; $as_echo "test.y:50.51-60: error: 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:42.1-3:       refers to: \$exp at \$\$
+test.y:51.7:         possibly meant: \$x, hiding \$exp at \$1
+test.y:51.41:        possibly meant: \$r, hiding \$exp at \$4
+test.y:52.51-52: error: \$l of 'exp' has no declared type
+test.y:55.40-43: error: invalid reference: '\$r12'
+test.y:55.3-47:      symbol not found in production: r12
+test.y:56.29-33: error: invalid reference: '\$expo'
 test.y:56.3-46:      symbol not found in production: expo
 " | \
   $at_diff - "$at_stderr" || at_failed=:
@@ -10305,13 +11035,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_40
+#AT_START_41
+at_fn_group_banner 41 'named-refs.at:271' \
   "Misleading references" "                          " 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'
@@ -10382,15 +11112,15 @@ 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
+  sort 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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -10411,8 +11141,8 @@ at_fn_check_prepare_trace "named-refs.at:279"
 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
+test.y:11.8-10:      refers to: \$foo at \$1
+test.y:11.12-18:     possibly meant: \$[foo.bar] at \$2
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -10420,10 +11150,10 @@ 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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -10448,8 +11178,8 @@ $at_traceon; }
   # 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
+test.y:11.8-10:      refers to: $foo at $1
+test.y:11.12-18:     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_39
-#AT_START_40
-at_fn_group_banner 40 'named-refs.at:288' \
+#AT_STOP_41
+#AT_START_42
+at_fn_group_banner 42 'named-refs.at:288' \
   "Many kinds of errors" "                           " 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'
@@ -10637,43 +11367,43 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "test.y:24.36-41: invalid reference: '\$cond1'
+echo >>"$at_stderr"; $as_echo "test.y:24.36-41: error: invalid reference: '\$cond1'
 test.y:23.11-24.62:  symbol not found in production: cond1
-test.y:26.43-53: invalid reference: '\$stmt.field'
+test.y:26.43-53: error: invalid reference: '\$stmt.field'
 test.y:25.11-26.60:  symbol not found in production: stmt
 test.y:25.35-38:     possibly meant: \$then.field, hiding \$stmt.field at \$4
-test.y:28.43-52: invalid reference: '\$stmt.list'
+test.y:28.43-52: error: invalid reference: '\$stmt.list'
 test.y:27.11-28.59:  symbol not found in production: stmt
 test.y:27.30-38:     possibly meant: \$[stmt.list] at \$4
-test.y:30.43-46: ambiguous reference: '\$xyz'
+test.y:30.43-46: error: ambiguous reference: '\$xyz'
 test.y:29.35-37:     refers to: \$xyz at \$4
 test.y:29.50-52:     refers to: \$xyz at \$6
-test.y:32.43-52: invalid reference: '\$stmt.list'
+test.y:32.43-52: error: invalid reference: '\$stmt.list'
 test.y:31.11-32.63:  symbol not found in production: stmt
 test.y:31.40-43:     possibly meant: \$then, hiding \$[stmt.list] at \$4
 test.y:31.61-64:     possibly meant: \$else, hiding \$[stmt.list] at \$6
-test.y:34.43-58: invalid reference: '\$stmt.list.field'
+test.y:34.43-58: error: invalid reference: '\$stmt.list.field'
 test.y:33.11-34.69:  symbol not found in production: stmt
 test.y:33.40-43:     possibly meant: \$then.field, hiding \$[stmt.list].field at \$4
 test.y:33.61-64:     possibly meant: \$else.field, hiding \$[stmt.list].field at \$6
-test.y:36.43-54: invalid reference: '\$[stmt.list]'
+test.y:36.43-54: error: invalid reference: '\$[stmt.list]'
 test.y:35.11-36.71:  symbol not found in production: stmt.list
 test.y:35.40-43:     possibly meant: \$then, hiding \$[stmt.list] at \$4
 test.y:35.61-64:     possibly meant: \$else, hiding \$[stmt.list] at \$6
-test.y:38.43-49: invalid reference: '\$then.1'
+test.y:38.43-49: error: invalid reference: '\$then.1'
 test.y:37.11-38.60:  symbol not found in production: then
 test.y:37.40-45:     possibly meant: \$[then.1] at \$4
-test.y:40.43-55: invalid reference: '\$then.1.field'
+test.y:40.43-55: error: invalid reference: '\$then.1.field'
 test.y:39.11-40.66:  symbol not found in production: then
 test.y:39.40-45:     possibly meant: \$[then.1].field at \$4
-test.y:42.44-50: invalid reference: '\$stmt.x'
+test.y:42.44-50: error: invalid reference: '\$stmt.x'
 test.y:41.12-42.57:  symbol not found in production: stmt
 test.y:41.36-41:     possibly meant: \$[stmt.x].x, hiding \$stmt.x at \$4
 test.y:41.36-41:     possibly meant: \$[stmt.x] at \$4
-test.y:44.13-22: invalid reference: '\$if-stmt-a'
+test.y:44.13-22: error: invalid reference: '\$if-stmt-a'
 test.y:43.12-44.59:  symbol not found in production: if
 test.y:43.1-9:       possibly meant: \$[if-stmt-a] at \$\$
-test.y:46.46-54: invalid reference: '\$then-a.f'
+test.y:46.46-54: error: invalid reference: '\$then-a.f'
 test.y:45.12-46.65:  symbol not found in production: then
 test.y:45.41-46:     possibly meant: \$[then-a].f at \$4
 " | \
@@ -10684,17 +11414,152 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
+
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:397: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -o test.c test.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -o test.c test.y" "named-refs.at:397"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:24.36-41: error: invalid reference: '\$cond1'
+           { \$if_stmt1 = new IfStmt(\$cond1, \$then.f1, \$else); };
+                                    ^^^^^^
+test.y:23.11-24.62:  symbol not found in production: cond1
+ if_stmt1: IF expr[cond] THEN stmt[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:26.43-53: error: invalid reference: '\$stmt.field'
+           { \$if_stmt2 = new IfStmt(\$cond, \$stmt.field, 0); };
+                                           ^^^^^^^^^^^
+test.y:25.11-26.60:  symbol not found in production: stmt
+ if_stmt2: IF expr[cond] THEN stmt[then] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:25.35-38:     possibly meant: \$then.field, hiding \$stmt.field at \$4
+ if_stmt2: IF expr[cond] THEN stmt[then] FI
+                                   ^^^^
+test.y:28.43-52: error: invalid reference: '\$stmt.list'
+           { \$if_stmt3 = new IfStmt(\$cond, \$stmt.list, 0); };
+                                           ^^^^^^^^^^
+test.y:27.11-28.59:  symbol not found in production: stmt
+ if_stmt3: IF expr[cond] THEN stmt.list FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:27.30-38:     possibly meant: \$[stmt.list] at \$4
+ if_stmt3: IF expr[cond] THEN stmt.list FI
+                              ^^^^^^^^^
+test.y:30.43-46: error: ambiguous reference: '\$xyz'
+           { \$if_stmt4 = new IfStmt(\$cond, \$xyz, \$cond); };
+                                           ^^^^
+test.y:29.35-37:     refers to: \$xyz at \$4
+ if_stmt4: IF expr[cond] THEN stmt[xyz] ELSE stmt[xyz] FI
+                                   ^^^
+test.y:29.50-52:     refers to: \$xyz at \$6
+ if_stmt4: IF expr[cond] THEN stmt[xyz] ELSE stmt[xyz] FI
+                                                  ^^^
+test.y:32.43-52: error: invalid reference: '\$stmt.list'
+           { \$if_stmt5 = new IfStmt(\$cond, \$stmt.list, \$else); };
+                                           ^^^^^^^^^^
+test.y:31.11-32.63:  symbol not found in production: stmt
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:31.40-43:     possibly meant: \$then, hiding \$[stmt.list] at \$4
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:31.61-64:     possibly meant: \$else, hiding \$[stmt.list] at \$6
+ if_stmt5: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:34.43-58: error: invalid reference: '\$stmt.list.field'
+           { \$if_stmt6 = new IfStmt(\$cond, \$stmt.list.field, \$else); };
+                                           ^^^^^^^^^^^^^^^^
+test.y:33.11-34.69:  symbol not found in production: stmt
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:33.40-43:     possibly meant: \$then.field, hiding \$[stmt.list].field at \$4
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:33.61-64:     possibly meant: \$else.field, hiding \$[stmt.list].field at \$6
+ if_stmt6: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:36.43-54: error: invalid reference: '\$[stmt.list]'
+           { \$if_stmt7 = new IfStmt(\$cond, \$[stmt.list].field, \$else); };
+                                           ^^^^^^^^^^^^
+test.y:35.11-36.71:  symbol not found in production: stmt.list
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:35.40-43:     possibly meant: \$then, hiding \$[stmt.list] at \$4
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                        ^^^^
+test.y:35.61-64:     possibly meant: \$else, hiding \$[stmt.list] at \$6
+ if_stmt7: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+                                                             ^^^^
+test.y:38.43-49: error: invalid reference: '\$then.1'
+           { \$if_stmt8 = new IfStmt(\$cond, \$then.1, \$else); };
+                                           ^^^^^^^
+test.y:37.11-38.60:  symbol not found in production: then
+ if_stmt8: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:37.40-45:     possibly meant: \$[then.1] at \$4
+ if_stmt8: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+                                        ^^^^^^
+test.y:40.43-55: error: invalid reference: '\$then.1.field'
+           { \$if_stmt9 = new IfStmt(\$cond, \$then.1.field, \$else); };
+                                           ^^^^^^^^^^^^^
+test.y:39.11-40.66:  symbol not found in production: then
+ if_stmt9: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:39.40-45:     possibly meant: \$[then.1].field at \$4
+ if_stmt9: IF expr[cond] THEN stmt.list[then.1] ELSE stmt.list[else] FI
+                                        ^^^^^^
+test.y:42.44-50: error: invalid reference: '\$stmt.x'
+           { \$if_stmt10 = new IfStmt(\$cond, \$stmt.x, 0); };
+                                            ^^^^^^^
+test.y:41.12-42.57:  symbol not found in production: stmt
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:41.36-41:     possibly meant: \$[stmt.x].x, hiding \$stmt.x at \$4
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+                                    ^^^^^^
+test.y:41.36-41:     possibly meant: \$[stmt.x] at \$4
+ if_stmt10: IF expr[cond] THEN stmt[stmt.x] FI
+                                    ^^^^^^
+test.y:44.13-22: error: invalid reference: '\$if-stmt-a'
+           { \$if-stmt-a = new IfStmt(\$cond, \$then, \$else); };
+             ^^^^^^^^^^
+test.y:43.12-44.59:  symbol not found in production: if
+ if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:43.1-9:       possibly meant: \$[if-stmt-a] at \$\$
+ if-stmt-a: IF expr[cond] THEN stmt.list[then] ELSE stmt.list[else] FI
+ ^^^^^^^^^
+test.y:46.46-54: error: invalid reference: '\$then-a.f'
+           { \$[if-stmt-b] = new IfStmt(\$cond, \$then-a.f, \$else); };
+                                              ^^^^^^^^^
+test.y:45.12-46.65:  symbol not found in production: then
+ if-stmt-b: IF expr[cond] THEN if-stmt-a[then-a] ELSE stmt.list[else] FI
+            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+test.y:45.41-46:     possibly meant: \$[then-a].f at \$4
+ if-stmt-b: IF expr[cond] THEN if-stmt-a[then-a] ELSE stmt.list[else] FI
+                                         ^^^^^^
+" | \
+  $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:397"
+$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_40
-#AT_START_41
-at_fn_group_banner 41 'named-refs.at:400' \
+#AT_STOP_42
+#AT_START_43
+at_fn_group_banner 43 'named-refs.at:521' \
   "Missing identifiers 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'
@@ -10715,17 +11580,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:407: 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:407"
+$as_echo "$at_srcdir/named-refs.at:528: 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:528"
 ( $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:11.12: an identifier expected
+echo >>"$at_stderr"; $as_echo "test.y:11.12: error: an identifier expected
 " | \
   $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:407"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:528"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -10734,13 +11599,13 @@ $at_traceon; }
   $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:414' \
+#AT_STOP_43
+#AT_START_44
+at_fn_group_banner 44 'named-refs.at:535' \
   "Redundant words 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'
@@ -10761,17 +11626,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:421: 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:421"
+$as_echo "$at_srcdir/named-refs.at:542: 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:542"
 ( $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:11.15: unexpected identifier in bracketed name: 'd'
+echo >>"$at_stderr"; $as_echo "test.y:11.15: error: unexpected identifier in bracketed name: 'd'
 " | \
   $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:421"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:542"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -10780,13 +11645,13 @@ $at_traceon; }
   $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:428' \
+#AT_STOP_44
+#AT_START_45
+at_fn_group_banner 45 'named-refs.at:549' \
   "Comments in 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'
@@ -10807,17 +11672,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:435: 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:435"
+$as_echo "$at_srcdir/named-refs.at:556: 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:556"
 ( $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:11.25: an identifier expected
+echo >>"$at_stderr"; $as_echo "test.y:11.25: error: an identifier expected
 " | \
   $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:435"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -10826,13 +11691,13 @@ $at_traceon; }
   $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:442' \
+#AT_STOP_45
+#AT_START_46
+at_fn_group_banner 46 'named-refs.at:563' \
   "Stray symbols in brackets" "                      " 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'
@@ -10846,27 +11711,39 @@ cat >test.y <<'_ATEOF'
 
 
 %%
-start: foo[ /* aaa */ *&-.+ ] bar
+start: foo[ % /* aaa */ *&-.+\000\001\002\377 ] bar
   { s = $foo; }
 _ATEOF
 
 
+{ set +x
+$as_echo "$at_srcdir/named-refs.at:570: \$PERL -pi -e 's/\\\\(\\d{3})/chr(oct(\$1))/ge' test.y || exit 77"
+at_fn_check_prepare_dynamic "$PERL -pi -e 's/\\\\(\\d{3})/chr(oct($1))/ge' test.y || exit 77" "named-refs.at:570"
+( $at_check_trace; $PERL -pi -e 's/\\(\d{3})/chr(oct($1))/ge' test.y || 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/named-refs.at:570"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:449: 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:449"
+$as_echo "$at_srcdir/named-refs.at:571: 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:571"
 ( $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:11.23: invalid character in bracketed name: '*'
-test.y:11.24: invalid character in bracketed name: '&'
-test.y:11.25: invalid character in bracketed name: '-'
-test.y:11.27: invalid character in bracketed name: '+'
+echo >>"$at_stderr"; $as_echo "test.y:11.13: error: invalid character in bracketed name: '%'
+test.y:11.25-27: error: invalid characters in bracketed name: '*&-'
+test.y:11.29-30: error: invalid characters in bracketed name: '+\\0\\001\\002\\377'
 " | \
   $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:449"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:571"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -10875,13 +11752,13 @@ $at_traceon; }
   $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:459' \
+#AT_STOP_46
+#AT_START_47
+at_fn_group_banner 47 'named-refs.at:580' \
   "Redundant words in LHS brackets" "                " 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'
@@ -10901,17 +11778,17 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:465: 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:465"
+$as_echo "$at_srcdir/named-refs.at:586: 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:586"
 ( $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:11.9: unexpected identifier in bracketed name: 's'
+echo >>"$at_stderr"; $as_echo "test.y:11.9: error: unexpected identifier in bracketed name: 's'
 " | \
   $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:465"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:586"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -10920,13 +11797,13 @@ $at_traceon; }
   $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:474' \
+#AT_STOP_47
+#AT_START_48
+at_fn_group_banner 48 'named-refs.at:595' \
   "Factored LHS" "                                   " 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'
@@ -10950,9 +11827,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/named-refs.at:480: 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/named-refs.at:601: 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:480"
+at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:601"
 ( $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>&-
@@ -10960,29 +11837,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/named-refs.at:480"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:601"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/named-refs.at:480: 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:480"
+$as_echo "$at_srcdir/named-refs.at:601: 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:601"
 ( $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:480"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:601"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:480: \$XSLTPROC \\
+$as_echo "$at_srcdir/named-refs.at:601: \$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:480"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:601"
 ( $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
@@ -10991,25 +11868,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:480"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:601"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:480: \$XSLTPROC \\
+$as_echo "$at_srcdir/named-refs.at:601: \$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:480"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:601"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:480"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:601"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11017,15 +11894,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/named-refs.at:480: bison -o test.c test.y"
-at_fn_check_prepare_trace "named-refs.at:480"
+$as_echo "$at_srcdir/named-refs.at:601: bison -o test.c test.y"
+at_fn_check_prepare_trace "named-refs.at:601"
 ( $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:480"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:601"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11034,13 +11911,13 @@ $at_traceon; }
   $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 'named-refs.at:485' \
+#AT_STOP_48
+#AT_START_49
+at_fn_group_banner 49 'named-refs.at:606' \
   "Unresolved references" "                          " 2
 at_xfail=no
 (
-  $as_echo "47. $at_setup_line: testing $at_desc ..."
+  $as_echo "49. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -11081,48 +11958,48 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:512: 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:512"
+$as_echo "$at_srcdir/named-refs.at:633: 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:633"
 ( $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:12.22-31: invalid reference: '\$sym.field'
+echo >>"$at_stderr"; $as_echo "test.y:12.22-31: error: invalid reference: '\$sym.field'
 test.y:12.3-35:      symbol not found in production: sym
-test.y:13.22-35: invalid reference: '\$<aa>sym.field'
+test.y:13.22-35: error: invalid reference: '\$<aa>sym.field'
 test.y:13.3-39:      symbol not found in production: sym
-test.y:14.22-33: invalid reference: '\$[sym.field]'
+test.y:14.22-33: error: invalid reference: '\$[sym.field]'
 test.y:14.3-37:      symbol not found in production: sym.field
-test.y:15.22-37: invalid reference: '\$<aa>[sym.field]'
+test.y:15.22-37: error: invalid reference: '\$<aa>[sym.field]'
 test.y:15.3-41:      symbol not found in production: sym.field
-test.y:16.22-25: invalid reference: '\$sym'
+test.y:16.22-25: error: invalid reference: '\$sym'
 test.y:16.3-29:      symbol not found in production: sym
-test.y:17.22-29: invalid reference: '\$<aa>sym'
+test.y:17.22-29: error: invalid reference: '\$<aa>sym'
 test.y:17.3-33:      symbol not found in production: sym
-test.y:18.22-27: invalid reference: '\$[sym]'
+test.y:18.22-27: error: invalid reference: '\$[sym]'
 test.y:18.3-65:      symbol not found in production before \$3: sym
-test.y:18.52-61: invalid reference: '\$<aa>[sym]'
+test.y:18.52-61: error: invalid reference: '\$<aa>[sym]'
 test.y:18.3-65:      symbol not found in production: sym
-test.y:22.22-31: invalid reference: '\$sym-field'
+test.y:22.22-31: error: invalid reference: '\$sym-field'
 test.y:22.3-35:      symbol not found in production: sym
-test.y:23.22-35: invalid reference: '\$<aa>sym-field'
+test.y:23.22-35: error: invalid reference: '\$<aa>sym-field'
 test.y:23.3-39:      symbol not found in production: sym
-test.y:24.22-33: invalid reference: '\$[sym-field]'
+test.y:24.22-33: error: invalid reference: '\$[sym-field]'
 test.y:24.3-37:      symbol not found in production: sym-field
-test.y:25.22-37: invalid reference: '\$<aa>[sym-field]'
+test.y:25.22-37: error: invalid reference: '\$<aa>[sym-field]'
 test.y:25.3-41:      symbol not found in production: sym-field
-test.y:26.22-25: invalid reference: '\$sym'
+test.y:26.22-25: error: invalid reference: '\$sym'
 test.y:26.3-29:      symbol not found in production: sym
-test.y:27.22-29: invalid reference: '\$<aa>sym'
+test.y:27.22-29: error: invalid reference: '\$<aa>sym'
 test.y:27.3-33:      symbol not found in production: sym
-test.y:28.22-27: invalid reference: '\$[sym]'
+test.y:28.22-27: error: invalid reference: '\$[sym]'
 test.y:28.3-65:      symbol not found in production before \$3: sym
-test.y:28.52-61: invalid reference: '\$<aa>[sym]'
+test.y:28.52-61: error: invalid reference: '\$<aa>[sym]'
 test.y:28.3-65:      symbol not found in production: sym
 " | \
   $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:512"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:633"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11131,13 +12008,13 @@ $at_traceon; }
   $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 'named-refs.at:550' \
+#AT_STOP_49
+#AT_START_50
+at_fn_group_banner 50 'named-refs.at:671' \
   "\$ or @ followed by . or -" "                      " 2
 at_xfail=no
 (
-  $as_echo "48. $at_setup_line: testing $at_desc ..."
+  $as_echo "50. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 cat >test.y <<'_ATEOF'
@@ -11152,21 +12029,21 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/named-refs.at:560: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y" "named-refs.at:560"
+$as_echo "$at_srcdir/named-refs.at:681: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y" "named-refs.at:681"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison test.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "test.y:4.12-18: invalid reference: '\$.field'
+echo >>"$at_stderr"; $as_echo "test.y:4.12-18: error: invalid reference: '\$.field'
 test.y:4.13:        syntax error after '\$', expecting integer, letter, '_', '[', or '\$'
 test.y:4.3-8:       possibly meant: \$[.field] at \$1
-test.y:5.12-18: invalid reference: '@.field'
+test.y:5.12-18: error: invalid reference: '@.field'
 test.y:5.13:        syntax error after '@', expecting integer, letter, '_', '[', or '\$'
 " | \
   $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:560"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11186,9 +12063,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/named-refs.at:575: 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/named-refs.at:696: 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 test.y"
-at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:575"
+at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:696"
 ( $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 test.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -11196,29 +12073,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/named-refs.at:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml 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 test.y" "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml 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 test.y" "named-refs.at:696"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: \$XSLTPROC \\
+$as_echo "$at_srcdir/named-refs.at:696: \$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:575"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:696"
 ( $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
@@ -11227,25 +12104,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: \$XSLTPROC \\
+$as_echo "$at_srcdir/named-refs.at:696: \$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:575"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "named-refs.at:696"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11253,8 +12130,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/named-refs.at:575: bison test.y"
-at_fn_check_prepare_trace "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: bison test.y"
+at_fn_check_prepare_trace "named-refs.at:696"
 ( $at_check_trace; bison test.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -11264,14 +12141,14 @@ test.y:5.9: 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -11279,15 +12156,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Werror" "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Werror" "named-refs.at:696"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison 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:575"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11324,9 +12201,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/named-refs.at:696: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:575"
+at_fn_check_prepare_notrace 'an embedded newline' "named-refs.at:696"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -11334,7 +12211,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/named-refs.at:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11342,15 +12219,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=error" "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=error" "named-refs.at:696"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison test.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/named-refs.at:575"
+at_fn_check_status 1 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -11359,28 +12236,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Wnone -Werror" "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y -Wnone -Werror" "named-refs.at:696"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison test.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/named-refs.at:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/named-refs.at:575: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=none -Werror" "named-refs.at:575"
+$as_echo "$at_srcdir/named-refs.at:696: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison test.y --warnings=none -Werror" "named-refs.at:696"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison test.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/named-refs.at:575"
+at_fn_check_status 0 $at_status "$at_srcdir/named-refs.at:696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   $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:44' \
+#AT_STOP_50
+#AT_START_51
+at_fn_group_banner 51 'output.at:44' \
   "Output files:  -dv " "                            " 3
 at_xfail=no
 (
-  $as_echo "49. $at_setup_line: testing $at_desc ..."
+  $as_echo "51. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11464,15 +12341,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:44"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:44: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:44"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -11517,13 +12394,13 @@ $at_traceon; }
   $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:50' \
+#AT_STOP_51
+#AT_START_52
+at_fn_group_banner 52 'output.at:50' \
   "Output files:  -dv >&-" "                         " 3
 at_xfail=no
 (
-  $as_echo "50. $at_setup_line: testing $at_desc ..."
+  $as_echo "52. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 { set +x
@@ -11602,15 +12479,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:50"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:50: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:50"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -11655,13 +12532,13 @@ $at_traceon; }
   $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:55' \
+#AT_STOP_52
+#AT_START_53
+at_fn_group_banner 53 'output.at:55' \
   "Output files:  -dv -o foo.c " "                   " 3
 at_xfail=no
 (
-  $as_echo "51. $at_setup_line: testing $at_desc ..."
+  $as_echo "53. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11728,15 +12605,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:55"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:55: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:55"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -11781,13 +12658,13 @@ $at_traceon; }
   $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:57' \
+#AT_STOP_53
+#AT_START_54
+at_fn_group_banner 54 'output.at:57' \
   "Output files:  -dv -o foo.tab.c " "               " 3
 at_xfail=no
 (
-  $as_echo "52. $at_setup_line: testing $at_desc ..."
+  $as_echo "54. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11854,15 +12731,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:57"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:57: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:57"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -11907,13 +12784,13 @@ $at_traceon; }
   $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:59' \
+#AT_STOP_54
+#AT_START_55
+at_fn_group_banner 55 'output.at:59' \
   "Output files:  -dv -y " "                         " 3
 at_xfail=no
 (
-  $as_echo "53. $at_setup_line: testing $at_desc ..."
+  $as_echo "55. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -11980,15 +12857,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:59"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:59: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:59"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12033,13 +12910,13 @@ $at_traceon; }
   $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:61' \
+#AT_STOP_55
+#AT_START_56
+at_fn_group_banner 56 'output.at:61' \
   "Output files:  -dv -b bar " "                     " 3
 at_xfail=no
 (
-  $as_echo "54. $at_setup_line: testing $at_desc ..."
+  $as_echo "56. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12106,15 +12983,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:61"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:61: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:61"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12159,13 +13036,13 @@ $at_traceon; }
   $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:63' \
+#AT_STOP_56
+#AT_START_57
+at_fn_group_banner 57 'output.at:63' \
   "Output files:  -dv -g -o foo.c " "                " 3
 at_xfail=no
 (
-  $as_echo "55. $at_setup_line: testing $at_desc ..."
+  $as_echo "57. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12232,15 +13109,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:63"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:63: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:63"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12285,13 +13162,13 @@ $at_traceon; }
   $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:67' \
+#AT_STOP_57
+#AT_START_58
+at_fn_group_banner 58 'output.at:67' \
   "Output files: %defines %verbose  " "              " 3
 at_xfail=no
 (
-  $as_echo "56. $at_setup_line: testing $at_desc ..."
+  $as_echo "58. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12358,15 +13235,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:67"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:67: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:67"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12411,13 +13288,13 @@ $at_traceon; }
   $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:69' \
+#AT_STOP_58
+#AT_START_59
+at_fn_group_banner 59 'output.at:69' \
   "Output files: %defines %verbose %yacc  " "        " 3
 at_xfail=no
 (
-  $as_echo "57. $at_setup_line: testing $at_desc ..."
+  $as_echo "59. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12484,15 +13361,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:69"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:69: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:69"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12537,13 +13414,13 @@ $at_traceon; }
   $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:72' \
+#AT_STOP_59
+#AT_START_60
+at_fn_group_banner 60 'output.at:72' \
   "Output files: %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
 
 
@@ -12610,15 +13487,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:72"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:72: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:72"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12663,13 +13540,13 @@ $at_traceon; }
   $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:76' \
+#AT_STOP_60
+#AT_START_61
+at_fn_group_banner 61 'output.at:76' \
   "Output files: %file-prefix \"bar\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "59. $at_setup_line: testing $at_desc ..."
+  $as_echo "61. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12736,15 +13613,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:76"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:76: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:76"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12789,13 +13666,13 @@ $at_traceon; }
   $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:78' \
+#AT_STOP_61
+#AT_START_62
+at_fn_group_banner 62 'output.at:78' \
   "Output files: %output=\"bar.c\" %defines %verbose %yacc  " "" 3
 at_xfail=no
 (
-  $as_echo "60. $at_setup_line: testing $at_desc ..."
+  $as_echo "62. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12862,15 +13739,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:78"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:78: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:78"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -12915,13 +13792,13 @@ $at_traceon; }
   $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:80' \
+#AT_STOP_62
+#AT_START_63
+at_fn_group_banner 63 'output.at:80' \
   "Output files: %file-prefix=\"baz\" %output \"bar.c\" %defines %verbose %yacc  " "" 3
 at_xfail=no
 (
-  $as_echo "61. $at_setup_line: testing $at_desc ..."
+  $as_echo "63. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -12988,15 +13865,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:80"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:80: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:80"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13041,13 +13918,13 @@ $at_traceon; }
   $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:87' \
+#AT_STOP_63
+#AT_START_64
+at_fn_group_banner 64 'output.at:87' \
   "Output files: %defines %verbose  " "              " 3
 at_xfail=no
 (
-  $as_echo "62. $at_setup_line: testing $at_desc ..."
+  $as_echo "64. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13114,15 +13991,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:87"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:87: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:87"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13167,13 +14044,13 @@ $at_traceon; }
   $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:90' \
+#AT_STOP_64
+#AT_START_65
+at_fn_group_banner 65 'output.at:90' \
   "Output files: %defines %verbose  -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
 
 
@@ -13240,15 +14117,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:90: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:90"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13293,13 +14170,13 @@ $at_traceon; }
   $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:93' \
+#AT_STOP_65
+#AT_START_66
+at_fn_group_banner 66 'output.at:93' \
   "Output files:  --defines=foo.hpp -o foo.c++ " "   " 3
 at_xfail=no
 (
-  $as_echo "64. $at_setup_line: testing $at_desc ..."
+  $as_echo "66. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13366,15 +14243,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:93"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:93: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:93"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13419,13 +14296,13 @@ $at_traceon; }
   $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:97' \
+#AT_STOP_66
+#AT_START_67
+at_fn_group_banner 67 'output.at:97' \
   "Output files: %defines \"foo.hpp\" -o foo.c++ " "   " 3
 at_xfail=no
 (
-  $as_echo "65. $at_setup_line: testing $at_desc ..."
+  $as_echo "67. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13492,15 +14369,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:97"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:97: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:97"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13545,13 +14422,13 @@ $at_traceon; }
   $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:101' \
+#AT_STOP_67
+#AT_START_68
+at_fn_group_banner 68 'output.at:101' \
   "Output files:  -o foo.c++ --graph=foo.gph " "     " 3
 at_xfail=no
 (
-  $as_echo "66. $at_setup_line: testing $at_desc ..."
+  $as_echo "68. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13618,15 +14495,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:101: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:101"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13671,13 +14548,13 @@ $at_traceon; }
   $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:116' \
+#AT_STOP_68
+#AT_START_69
+at_fn_group_banner 69 'output.at:116' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "67. $at_setup_line: testing $at_desc ..."
+  $as_echo "69. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13744,15 +14621,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:116"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:116: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:116"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13797,13 +14674,13 @@ $at_traceon; }
   $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:119' \
+#AT_STOP_69
+#AT_START_70
+at_fn_group_banner 70 'output.at:119' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose  " "" 3
 at_xfail=no
 (
-  $as_echo "68. $at_setup_line: testing $at_desc ..."
+  $as_echo "70. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -13870,15 +14747,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:119"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:119: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:119"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -13950,13 +14827,13 @@ $at_traceon; }
   $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:123' \
+#AT_STOP_70
+#AT_START_71
+at_fn_group_banner 71 'output.at:123' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose -o subdir/foo.cc " "" 3
 at_xfail=no
 (
-  $as_echo "69. $at_setup_line: testing $at_desc ..."
+  $as_echo "71. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -14023,15 +14900,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:123: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:123"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -14103,13 +14980,13 @@ $at_traceon; }
   $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:128' \
+#AT_STOP_71
+#AT_START_72
+at_fn_group_banner 72 'output.at:128' \
   "Output files: %skeleton \"lalr1.cc\" %defines %verbose %file-prefix \"output_dir/foo\"  " "" 3
 at_xfail=no
 (
-  $as_echo "70. $at_setup_line: testing $at_desc ..."
+  $as_echo "72. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -14176,15 +15053,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:128"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:128: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:128"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -14229,13 +15106,13 @@ $at_traceon; }
   $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:158' \
+#AT_STOP_72
+#AT_START_73
+at_fn_group_banner 73 'output.at:158' \
   "Conflicting output files:  --graph=\"foo.tab.c\"" " " 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
@@ -14268,10 +15145,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:158"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -14403,13 +15280,13 @@ $at_traceon; }
   $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:163' \
+#AT_STOP_73
+#AT_START_74
+at_fn_group_banner 74 'output.at:163' \
   "Conflicting output files: %defines \"foo.output\" -v" "" 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
@@ -14442,10 +15319,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:163"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -14577,13 +15454,13 @@ $at_traceon; }
   $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:168' \
+#AT_STOP_74
+#AT_START_75
+at_fn_group_banner 75 'output.at:168' \
   "Conflicting output files: %skeleton \"lalr1.cc\" %defines --graph=\"location.hh\"" "" 3
 at_xfail=no
 (
-  $as_echo "73. $at_setup_line: testing $at_desc ..."
+  $as_echo "75. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -14616,10 +15493,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:168"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -14751,13 +15628,13 @@ $at_traceon; }
   $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:173' \
+#AT_STOP_75
+#AT_START_76
+at_fn_group_banner 76 'output.at:173' \
   "Conflicting output files:  -o foo.y" "            " 3
 at_xfail=no
 (
-  $as_echo "74. $at_setup_line: testing $at_desc ..."
+  $as_echo "76. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 case "foo.y" in
@@ -14782,7 +15659,7 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "foo.y: refusing to overwrite the input file 'foo.y'
+echo >>"$at_stderr"; $as_echo "foo.y: error: refusing to overwrite the input file 'foo.y'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -14808,13 +15685,13 @@ $at_traceon; }
   $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:219' \
+#AT_STOP_76
+#AT_START_77
+at_fn_group_banner 77 'output.at:219' \
   "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
 
 
@@ -14846,7 +15723,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -14905,15 +15782,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:219: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -14954,6 +15831,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:219: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:219"
+( $at_check_trace; $BISON_C_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/output.at:219"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:219: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" "
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c"
@@ -14991,10 +15881,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:219: 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 \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.cc\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.hh\" cxx.y"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
 ( $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 "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.h" cxx.y
+                  --graph=xml-tests/test.dot -o "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.cc" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15005,9 +15895,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:219: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:219: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.cc\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.hh\" cxx.y"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.h" cxx.y
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.cc" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15035,15 +15925,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:219: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15057,9 +15947,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:219: bison -o \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:219: bison -o \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.cc\" --defines=\"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.hh\" cxx.y"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
-( $at_check_trace; bison -o "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.h" cxx.y
+( $at_check_trace; bison -o "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.cc" --defines="\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15071,9 +15961,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:219: ls \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.h\""
+$as_echo "$at_srcdir/output.at:219: ls \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.cc\" \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.hh\""
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
-( $at_check_trace; ls "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c" "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.h"
+( $at_check_trace; ls "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.cc" "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15098,9 +15988,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:219: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.c\" "
+$as_echo "$at_srcdir/output.at:219: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"\\\`~!@#\\\$%^&*()-=_+{}[]|\\\\:;<>, .'.cc\" "
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:219"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.c"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "\`~!@#\$%^&*()-=_+{}[]|\\:;<>, .'.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15117,13 +16007,13 @@ $at_traceon; }
   $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:226' \
+#AT_STOP_77
+#AT_START_78
+at_fn_group_banner 78 'output.at:226' \
   "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
 
 
@@ -15155,7 +16045,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -15214,15 +16104,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:226"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:226: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:226"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15263,6 +16153,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:226: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:226"
+( $at_check_trace; $BISON_C_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/output.at:226"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:226: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"(.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"(.c\" " "output.at:226"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "(.c"
@@ -15300,10 +16203,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:226: 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 \"(.c\" --defines=\"(.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"(.cc\" --defines=\"(.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:226"
 ( $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 "(.c" --defines="(.h" cxx.y
+                  --graph=xml-tests/test.dot -o "(.cc" --defines="(.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15314,9 +16217,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:226: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"(.c\" --defines=\"(.h\" cxx.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 \"(.c\" --defines=\"(.h\" cxx.y" "output.at:226"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "(.c" --defines="(.h" cxx.y
+$as_echo "$at_srcdir/output.at:226: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"(.cc\" --defines=\"(.hh\" cxx.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 \"(.cc\" --defines=\"(.hh\" cxx.y" "output.at:226"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "(.cc" --defines="(.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15344,15 +16247,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:226"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:226: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:226"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15366,9 +16269,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:226: bison -o \"(.c\" --defines=\"(.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:226: bison -o \"(.cc\" --defines=\"(.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:226"
-( $at_check_trace; bison -o "(.c" --defines="(.h" cxx.y
+( $at_check_trace; bison -o "(.cc" --defines="(.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15380,9 +16283,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:226: ls \"(.c\" \"(.h\""
+$as_echo "$at_srcdir/output.at:226: ls \"(.cc\" \"(.hh\""
 at_fn_check_prepare_trace "output.at:226"
-( $at_check_trace; ls "(.c" "(.h"
+( $at_check_trace; ls "(.cc" "(.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15407,9 +16310,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:226: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"(.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"(.c\" " "output.at:226"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "(.c"
+$as_echo "$at_srcdir/output.at:226: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"(.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"(.cc\" " "output.at:226"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "(.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15426,13 +16329,13 @@ $at_traceon; }
   $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:227' \
+#AT_STOP_78
+#AT_START_79
+at_fn_group_banner 79 'output.at:227' \
   "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
 
 
@@ -15464,7 +16367,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -15523,15 +16426,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:227"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:227: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:227"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15572,6 +16475,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:227: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:227"
+( $at_check_trace; $BISON_C_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/output.at:227"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:227: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \").c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \").c\" " "output.at:227"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c ").c"
@@ -15609,10 +16525,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:227: 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 \").c\" --defines=\").h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \").cc\" --defines=\").hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:227"
 ( $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 ").c" --defines=").h" cxx.y
+                  --graph=xml-tests/test.dot -o ").cc" --defines=").hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15623,9 +16539,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:227: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \").c\" --defines=\").h\" cxx.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 \").c\" --defines=\").h\" cxx.y" "output.at:227"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o ").c" --defines=").h" cxx.y
+$as_echo "$at_srcdir/output.at:227: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \").cc\" --defines=\").hh\" cxx.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 \").cc\" --defines=\").hh\" cxx.y" "output.at:227"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o ").cc" --defines=").hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15653,15 +16569,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:227"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:227: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:227"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15675,9 +16591,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:227: bison -o \").c\" --defines=\").h\" cxx.y"
+$as_echo "$at_srcdir/output.at:227: bison -o \").cc\" --defines=\").hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:227"
-( $at_check_trace; bison -o ").c" --defines=").h" cxx.y
+( $at_check_trace; bison -o ").cc" --defines=").hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15689,9 +16605,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:227: ls \").c\" \").h\""
+$as_echo "$at_srcdir/output.at:227: ls \").cc\" \").hh\""
 at_fn_check_prepare_trace "output.at:227"
-( $at_check_trace; ls ").c" ").h"
+( $at_check_trace; ls ").cc" ").hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15716,9 +16632,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:227: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \").c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \").c\" " "output.at:227"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c ").c"
+$as_echo "$at_srcdir/output.at:227: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \").cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \").cc\" " "output.at:227"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c ").cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15735,13 +16651,13 @@ $at_traceon; }
   $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:228' \
+#AT_STOP_79
+#AT_START_80
+at_fn_group_banner 80 'output.at:228' \
   "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
 
 
@@ -15773,7 +16689,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -15832,15 +16748,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:228"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:228: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:228"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15881,6 +16797,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:228: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:228"
+( $at_check_trace; $BISON_C_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/output.at:228"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:228: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"#.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"#.c\" " "output.at:228"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "#.c"
@@ -15918,10 +16847,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:228: 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 \"#.c\" --defines=\"#.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"#.cc\" --defines=\"#.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:228"
 ( $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 "#.c" --defines="#.h" cxx.y
+                  --graph=xml-tests/test.dot -o "#.cc" --defines="#.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15932,9 +16861,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"#.c\" --defines=\"#.h\" cxx.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 \"#.c\" --defines=\"#.h\" cxx.y" "output.at:228"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "#.c" --defines="#.h" cxx.y
+$as_echo "$at_srcdir/output.at:228: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"#.cc\" --defines=\"#.hh\" cxx.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 \"#.cc\" --defines=\"#.hh\" cxx.y" "output.at:228"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "#.cc" --defines="#.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15962,15 +16891,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:228"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:228: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:228"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15984,9 +16913,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:228: bison -o \"#.c\" --defines=\"#.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:228: bison -o \"#.cc\" --defines=\"#.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:228"
-( $at_check_trace; bison -o "#.c" --defines="#.h" cxx.y
+( $at_check_trace; bison -o "#.cc" --defines="#.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -15998,9 +16927,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:228: ls \"#.c\" \"#.h\""
+$as_echo "$at_srcdir/output.at:228: ls \"#.cc\" \"#.hh\""
 at_fn_check_prepare_trace "output.at:228"
-( $at_check_trace; ls "#.c" "#.h"
+( $at_check_trace; ls "#.cc" "#.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16025,9 +16954,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:228: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"#.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"#.c\" " "output.at:228"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "#.c"
+$as_echo "$at_srcdir/output.at:228: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"#.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"#.cc\" " "output.at:228"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "#.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16044,13 +16973,13 @@ $at_traceon; }
   $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:229' \
+#AT_STOP_80
+#AT_START_81
+at_fn_group_banner 81 'output.at:229' \
   "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
 
 
@@ -16082,7 +17011,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -16141,15 +17070,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:229"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:229: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:229"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16190,6 +17119,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:229: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:229"
+( $at_check_trace; $BISON_C_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/output.at:229"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:229: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"@@.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"@@.c\" " "output.at:229"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "@@.c"
@@ -16227,10 +17169,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:229: 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 \"@@.c\" --defines=\"@@.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"@@.cc\" --defines=\"@@.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:229"
 ( $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 "@@.c" --defines="@@.h" cxx.y
+                  --graph=xml-tests/test.dot -o "@@.cc" --defines="@@.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16241,9 +17183,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@@.c\" --defines=\"@@.h\" cxx.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 \"@@.c\" --defines=\"@@.h\" cxx.y" "output.at:229"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@@.c" --defines="@@.h" cxx.y
+$as_echo "$at_srcdir/output.at:229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@@.cc\" --defines=\"@@.hh\" cxx.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 \"@@.cc\" --defines=\"@@.hh\" cxx.y" "output.at:229"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@@.cc" --defines="@@.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16271,15 +17213,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:229"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:229: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:229"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16293,9 +17235,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:229: bison -o \"@@.c\" --defines=\"@@.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:229: bison -o \"@@.cc\" --defines=\"@@.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:229"
-( $at_check_trace; bison -o "@@.c" --defines="@@.h" cxx.y
+( $at_check_trace; bison -o "@@.cc" --defines="@@.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16307,9 +17249,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:229: ls \"@@.c\" \"@@.h\""
+$as_echo "$at_srcdir/output.at:229: ls \"@@.cc\" \"@@.hh\""
 at_fn_check_prepare_trace "output.at:229"
-( $at_check_trace; ls "@@.c" "@@.h"
+( $at_check_trace; ls "@@.cc" "@@.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16334,9 +17276,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:229: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@@.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@@.c\" " "output.at:229"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@@.c"
+$as_echo "$at_srcdir/output.at:229: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@@.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@@.cc\" " "output.at:229"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@@.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16353,13 +17295,13 @@ $at_traceon; }
   $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:230' \
+#AT_STOP_81
+#AT_START_82
+at_fn_group_banner 82 'output.at:230' \
   "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
 
 
@@ -16391,7 +17333,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -16450,15 +17392,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:230: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:230"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16499,6 +17441,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:230: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:230"
+( $at_check_trace; $BISON_C_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/output.at:230"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:230: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"@{.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"@{.c\" " "output.at:230"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "@{.c"
@@ -16536,10 +17491,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:230: 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 \"@{.c\" --defines=\"@{.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"@{.cc\" --defines=\"@{.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:230"
 ( $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 "@{.c" --defines="@{.h" cxx.y
+                  --graph=xml-tests/test.dot -o "@{.cc" --defines="@{.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16550,9 +17505,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@{.c\" --defines=\"@{.h\" cxx.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 \"@{.c\" --defines=\"@{.h\" cxx.y" "output.at:230"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@{.c" --defines="@{.h" cxx.y
+$as_echo "$at_srcdir/output.at:230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@{.cc\" --defines=\"@{.hh\" cxx.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 \"@{.cc\" --defines=\"@{.hh\" cxx.y" "output.at:230"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@{.cc" --defines="@{.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16580,15 +17535,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:230"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:230: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:230"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16602,9 +17557,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:230: bison -o \"@{.c\" --defines=\"@{.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:230: bison -o \"@{.cc\" --defines=\"@{.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:230"
-( $at_check_trace; bison -o "@{.c" --defines="@{.h" cxx.y
+( $at_check_trace; bison -o "@{.cc" --defines="@{.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16616,9 +17571,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:230: ls \"@{.c\" \"@{.h\""
+$as_echo "$at_srcdir/output.at:230: ls \"@{.cc\" \"@{.hh\""
 at_fn_check_prepare_trace "output.at:230"
-( $at_check_trace; ls "@{.c" "@{.h"
+( $at_check_trace; ls "@{.cc" "@{.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16643,9 +17598,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:230: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@{.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@{.c\" " "output.at:230"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@{.c"
+$as_echo "$at_srcdir/output.at:230: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@{.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@{.cc\" " "output.at:230"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@{.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16662,13 +17617,13 @@ $at_traceon; }
   $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:231' \
+#AT_STOP_82
+#AT_START_83
+at_fn_group_banner 83 'output.at:231' \
   "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
 
 
@@ -16700,7 +17655,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -16759,15 +17714,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:231"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:231: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:231"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16808,6 +17763,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:231: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:231"
+( $at_check_trace; $BISON_C_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/output.at:231"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:231: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"@}.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"@}.c\" " "output.at:231"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "@}.c"
@@ -16845,10 +17813,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:231: 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 \"@}.c\" --defines=\"@}.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"@}.cc\" --defines=\"@}.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:231"
 ( $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 "@}.c" --defines="@}.h" cxx.y
+                  --graph=xml-tests/test.dot -o "@}.cc" --defines="@}.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16859,9 +17827,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:231: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@}.c\" --defines=\"@}.h\" cxx.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 \"@}.c\" --defines=\"@}.h\" cxx.y" "output.at:231"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@}.c" --defines="@}.h" cxx.y
+$as_echo "$at_srcdir/output.at:231: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"@}.cc\" --defines=\"@}.hh\" cxx.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 \"@}.cc\" --defines=\"@}.hh\" cxx.y" "output.at:231"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "@}.cc" --defines="@}.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16889,15 +17857,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:231"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:231: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:231"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16911,9 +17879,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:231: bison -o \"@}.c\" --defines=\"@}.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:231: bison -o \"@}.cc\" --defines=\"@}.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:231"
-( $at_check_trace; bison -o "@}.c" --defines="@}.h" cxx.y
+( $at_check_trace; bison -o "@}.cc" --defines="@}.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16925,9 +17893,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:231: ls \"@}.c\" \"@}.h\""
+$as_echo "$at_srcdir/output.at:231: ls \"@}.cc\" \"@}.hh\""
 at_fn_check_prepare_trace "output.at:231"
-( $at_check_trace; ls "@}.c" "@}.h"
+( $at_check_trace; ls "@}.cc" "@}.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16952,9 +17920,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:231: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@}.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@}.c\" " "output.at:231"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@}.c"
+$as_echo "$at_srcdir/output.at:231: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"@}.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"@}.cc\" " "output.at:231"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "@}.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -16971,13 +17939,13 @@ $at_traceon; }
   $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 'output.at:232' \
+#AT_STOP_83
+#AT_START_84
+at_fn_group_banner 84 'output.at:232' \
   "Output file name: [" "                            " 3
 at_xfail=no
 (
-  $as_echo "82. $at_setup_line: testing $at_desc ..."
+  $as_echo "84. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17009,7 +17977,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -17068,15 +18036,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:232: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:232"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17117,6 +18085,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:232: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:232"
+( $at_check_trace; $BISON_C_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/output.at:232"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:232: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"[.c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"[.c\" " "output.at:232"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "[.c"
@@ -17154,10 +18135,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:232: 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 \"[.c\" --defines=\"[.h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"[.cc\" --defines=\"[.hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:232"
 ( $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 "[.c" --defines="[.h" cxx.y
+                  --graph=xml-tests/test.dot -o "[.cc" --defines="[.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17168,9 +18149,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:232: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"[.c\" --defines=\"[.h\" cxx.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 \"[.c\" --defines=\"[.h\" cxx.y" "output.at:232"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "[.c" --defines="[.h" cxx.y
+$as_echo "$at_srcdir/output.at:232: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"[.cc\" --defines=\"[.hh\" cxx.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 \"[.cc\" --defines=\"[.hh\" cxx.y" "output.at:232"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "[.cc" --defines="[.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17198,15 +18179,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:232: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:232"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17220,9 +18201,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:232: bison -o \"[.c\" --defines=\"[.h\" cxx.y"
+$as_echo "$at_srcdir/output.at:232: bison -o \"[.cc\" --defines=\"[.hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:232"
-( $at_check_trace; bison -o "[.c" --defines="[.h" cxx.y
+( $at_check_trace; bison -o "[.cc" --defines="[.hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17234,9 +18215,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:232: ls \"[.c\" \"[.h\""
+$as_echo "$at_srcdir/output.at:232: ls \"[.cc\" \"[.hh\""
 at_fn_check_prepare_trace "output.at:232"
-( $at_check_trace; ls "[.c" "[.h"
+( $at_check_trace; ls "[.cc" "[.hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17261,9 +18242,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:232: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"[.c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"[.c\" " "output.at:232"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "[.c"
+$as_echo "$at_srcdir/output.at:232: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"[.cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"[.cc\" " "output.at:232"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "[.cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17280,13 +18261,13 @@ $at_traceon; }
   $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 'output.at:233' \
+#AT_STOP_84
+#AT_START_85
+at_fn_group_banner 85 'output.at:233' \
   "Output file name: ]" "                            " 3
 at_xfail=no
 (
-  $as_echo "83. $at_setup_line: testing $at_desc ..."
+  $as_echo "85. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17318,7 +18299,7 @@ cat >glr.y <<'_ATEOF'
 
 %glr-parser
 %code {
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 }
 %%
@@ -17377,15 +18358,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:233"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:233: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:233"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17426,6 +18407,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/output.at:233: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "output.at:233"
+( $at_check_trace; $BISON_C_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/output.at:233"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/output.at:233: \$CC \$CFLAGS \$CPPFLAGS -c -o glr.o -c \"].c\" "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o glr.o -c \"].c\" " "output.at:233"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o glr.o -c "].c"
@@ -17463,10 +18457,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/output.at:233: 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 \"].c\" --defines=\"].h\" cxx.y"
+                  --graph=xml-tests/test.dot -o \"].cc\" --defines=\"].hh\" cxx.y"
 at_fn_check_prepare_notrace 'an embedded newline' "output.at:233"
 ( $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 "].c" --defines="].h" cxx.y
+                  --graph=xml-tests/test.dot -o "].cc" --defines="].hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17477,9 +18471,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/output.at:233: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"].c\" --defines=\"].h\" cxx.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 \"].c\" --defines=\"].h\" cxx.y" "output.at:233"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "].c" --defines="].h" cxx.y
+$as_echo "$at_srcdir/output.at:233: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o \"].cc\" --defines=\"].hh\" cxx.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 \"].cc\" --defines=\"].hh\" cxx.y" "output.at:233"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o "].cc" --defines="].hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17507,15 +18501,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/output.at:233"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/output.at:233: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:233"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17529,9 +18523,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/output.at:233: bison -o \"].c\" --defines=\"].h\" cxx.y"
+$as_echo "$at_srcdir/output.at:233: bison -o \"].cc\" --defines=\"].hh\" cxx.y"
 at_fn_check_prepare_trace "output.at:233"
-( $at_check_trace; bison -o "].c" --defines="].h" cxx.y
+( $at_check_trace; bison -o "].cc" --defines="].hh" cxx.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17543,9 +18537,9 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/output.at:233: ls \"].c\" \"].h\""
+$as_echo "$at_srcdir/output.at:233: ls \"].cc\" \"].hh\""
 at_fn_check_prepare_trace "output.at:233"
-( $at_check_trace; ls "].c" "].h"
+( $at_check_trace; ls "].cc" "].hh"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17570,9 +18564,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/output.at:233: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"].c\" "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"].c\" " "output.at:233"
-( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "].c"
+$as_echo "$at_srcdir/output.at:233: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx.o -c \"].cc\" "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c \"].cc\" " "output.at:233"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx.o -c "].cc"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17589,13 +18583,1045 @@ $at_traceon; }
   $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:24' \
+#AT_STOP_85
+#AT_START_86
+at_fn_group_banner 86 'output.at:260' \
+  "Graph with no conflicts" "                        " 3
+at_xfail=no
+(
+  $as_echo "86. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+exp: a '?' b;
+a: ;
+b: 'b';
+_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/output.at:260: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:260"
+( $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 -rall --graph 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/output.at:260"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:260: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:260"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:260"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:260: \$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' "output.at:260"
+( $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/output.at:260"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:260: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:260"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:260"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:260: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:260"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:260"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:260: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:260"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . exp \$end\\l  1 exp: . a '?' b\\l  2 a: .\\l\"]
+  0 -> 1 [style=dashed label=\"exp\"]
+  0 -> 2 [style=dashed label=\"a\"]
+  0 -> \"0R2\" [style=solid]
+ \"0R2\" [label=\"R2\", fillcolor=3, shape=diamond, style=filled]
+  1 [label=\"State 1\\n\\l  0 \$accept: exp . \$end\\l\"]
+  1 -> 3 [style=solid label=\"\$end\"]
+  2 [label=\"State 2\\n\\l  1 exp: a . '?' b\\l\"]
+  2 -> 4 [style=solid label=\"'?'\"]
+  3 [label=\"State 3\\n\\l  0 \$accept: exp \$end .\\l\"]
+  3 -> \"3R0\" [style=solid]
+ \"3R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+  4 [label=\"State 4\\n\\l  1 exp: a '?' . b\\l  3 b: . 'b'\\l\"]
+  4 -> 5 [style=solid label=\"'b'\"]
+  4 -> 6 [style=dashed label=\"b\"]
+  5 [label=\"State 5\\n\\l  3 b: 'b' .\\l\"]
+  5 -> \"5R3\" [style=solid]
+ \"5R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  6 [label=\"State 6\\n\\l  1 exp: a '?' b .\\l\"]
+  6 -> \"6R1\" [style=solid]
+ \"6R1\" [label=\"R1\", fillcolor=3, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:260"
+$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_86
+#AT_START_87
+at_fn_group_banner 87 'output.at:294' \
+  "Graph with unsolved S/R" "                        " 3
+at_xfail=no
+(
+  $as_echo "87. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+start:
+    'a'
+  | empty_a 'a'
+  | 'b'
+  | empty_b 'b'
+  | 'c'
+  | empty_c 'c'
+  ;
+empty_a: %prec 'a';
+empty_b: %prec 'b';
+empty_c: %prec 'c';
+_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/output.at:294: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:294"
+( $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 -rall --graph 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/output.at:294"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:294: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:294"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:294"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:294: \$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' "output.at:294"
+( $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/output.at:294"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:294: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:294"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:294"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:294: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:294"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:294"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:294: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:294"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . start \$end\\l  1 start: . 'a'\\l  2      | . empty_a 'a'\\l  3      | . 'b'\\l  4      | . empty_b 'b'\\l  5      | . 'c'\\l  6      | . empty_c 'c'\\l  7 empty_a: .  ['a']\\l  8 empty_b: .  ['b']\\l  9 empty_c: .  ['c']\\l\"]
+  0 -> 1 [style=solid label=\"'a'\"]
+  0 -> 2 [style=solid label=\"'b'\"]
+  0 -> 3 [style=solid label=\"'c'\"]
+  0 -> 4 [style=dashed label=\"start\"]
+  0 -> 5 [style=dashed label=\"empty_a\"]
+  0 -> 6 [style=dashed label=\"empty_b\"]
+  0 -> 7 [style=dashed label=\"empty_c\"]
+  0 -> \"0R7d\" [label=\"['a']\", style=solid]
+ \"0R7d\" [label=\"R7\", fillcolor=5, shape=diamond, style=filled]
+  0 -> \"0R8d\" [label=\"['b']\", style=solid]
+ \"0R8d\" [label=\"R8\", fillcolor=5, shape=diamond, style=filled]
+  0 -> \"0R9d\" [label=\"['c']\", style=solid]
+ \"0R9d\" [label=\"R9\", fillcolor=5, shape=diamond, style=filled]
+  1 [label=\"State 1\\n\\l  1 start: 'a' .\\l\"]
+  1 -> \"1R1\" [style=solid]
+ \"1R1\" [label=\"R1\", fillcolor=3, shape=diamond, style=filled]
+  2 [label=\"State 2\\n\\l  3 start: 'b' .\\l\"]
+  2 -> \"2R3\" [style=solid]
+ \"2R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  3 [label=\"State 3\\n\\l  5 start: 'c' .\\l\"]
+  3 -> \"3R5\" [style=solid]
+ \"3R5\" [label=\"R5\", fillcolor=3, shape=diamond, style=filled]
+  4 [label=\"State 4\\n\\l  0 \$accept: start . \$end\\l\"]
+  4 -> 8 [style=solid label=\"\$end\"]
+  5 [label=\"State 5\\n\\l  2 start: empty_a . 'a'\\l\"]
+  5 -> 9 [style=solid label=\"'a'\"]
+  6 [label=\"State 6\\n\\l  4 start: empty_b . 'b'\\l\"]
+  6 -> 10 [style=solid label=\"'b'\"]
+  7 [label=\"State 7\\n\\l  6 start: empty_c . 'c'\\l\"]
+  7 -> 11 [style=solid label=\"'c'\"]
+  8 [label=\"State 8\\n\\l  0 \$accept: start \$end .\\l\"]
+  8 -> \"8R0\" [style=solid]
+ \"8R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+  9 [label=\"State 9\\n\\l  2 start: empty_a 'a' .\\l\"]
+  9 -> \"9R2\" [style=solid]
+ \"9R2\" [label=\"R2\", fillcolor=3, shape=diamond, style=filled]
+  10 [label=\"State 10\\n\\l  4 start: empty_b 'b' .\\l\"]
+  10 -> \"10R4\" [style=solid]
+ \"10R4\" [label=\"R4\", fillcolor=3, shape=diamond, style=filled]
+  11 [label=\"State 11\\n\\l  6 start: empty_c 'c' .\\l\"]
+  11 -> \"11R6\" [style=solid]
+ \"11R6\" [label=\"R6\", fillcolor=3, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:294"
+$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_87
+#AT_START_88
+at_fn_group_banner 88 'output.at:358' \
+  "Graph with solved S/R" "                          " 3
+at_xfail=no
+(
+  $as_echo "88. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%left 'a'
+%right 'b'
+%right 'c'
+%%
+start:
+    'a'
+  | empty_a 'a'
+  | 'b'
+  | empty_b 'b'
+  | 'c'
+  | empty_c 'c'
+  ;
+empty_a: %prec 'a';
+empty_b: %prec 'b';
+empty_c: %prec 'c';
+_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/output.at:358: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:358"
+( $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 -rall --graph 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/output.at:358"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:358: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:358"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:358"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:358: \$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' "output.at:358"
+( $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/output.at:358"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:358: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:358"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:358"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:358: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:358"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:358"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:358: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:358"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . start \$end\\l  1 start: . 'a'\\l  2      | . empty_a 'a'\\l  3      | . 'b'\\l  4      | . empty_b 'b'\\l  5      | . 'c'\\l  6      | . empty_c 'c'\\l  7 empty_a: .  ['a']\\l  8 empty_b: .  []\\l  9 empty_c: .  []\\l\"]
+  0 -> 1 [style=solid label=\"'b'\"]
+  0 -> 2 [style=solid label=\"'c'\"]
+  0 -> 3 [style=dashed label=\"start\"]
+  0 -> 4 [style=dashed label=\"empty_a\"]
+  0 -> 5 [style=dashed label=\"empty_b\"]
+  0 -> 6 [style=dashed label=\"empty_c\"]
+  0 -> \"0R7\" [style=solid]
+ \"0R7\" [label=\"R7\", fillcolor=3, shape=diamond, style=filled]
+  1 [label=\"State 1\\n\\l  3 start: 'b' .\\l\"]
+  1 -> \"1R3\" [style=solid]
+ \"1R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  2 [label=\"State 2\\n\\l  5 start: 'c' .\\l\"]
+  2 -> \"2R5\" [style=solid]
+ \"2R5\" [label=\"R5\", fillcolor=3, shape=diamond, style=filled]
+  3 [label=\"State 3\\n\\l  0 \$accept: start . \$end\\l\"]
+  3 -> 7 [style=solid label=\"\$end\"]
+  4 [label=\"State 4\\n\\l  2 start: empty_a . 'a'\\l\"]
+  4 -> 8 [style=solid label=\"'a'\"]
+  5 [label=\"State 5\\n\\l  4 start: empty_b . 'b'\\l\"]
+  5 -> 9 [style=solid label=\"'b'\"]
+  6 [label=\"State 6\\n\\l  6 start: empty_c . 'c'\\l\"]
+  6 -> 10 [style=solid label=\"'c'\"]
+  7 [label=\"State 7\\n\\l  0 \$accept: start \$end .\\l\"]
+  7 -> \"7R0\" [style=solid]
+ \"7R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+  8 [label=\"State 8\\n\\l  2 start: empty_a 'a' .\\l\"]
+  8 -> \"8R2\" [style=solid]
+ \"8R2\" [label=\"R2\", fillcolor=3, shape=diamond, style=filled]
+  9 [label=\"State 9\\n\\l  4 start: empty_b 'b' .\\l\"]
+  9 -> \"9R4\" [style=solid]
+ \"9R4\" [label=\"R4\", fillcolor=3, shape=diamond, style=filled]
+  10 [label=\"State 10\\n\\l  6 start: empty_c 'c' .\\l\"]
+  10 -> \"10R6\" [style=solid]
+ \"10R6\" [label=\"R6\", fillcolor=3, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:358"
+$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_88
+#AT_START_89
+at_fn_group_banner 89 'output.at:417' \
+  "Graph with R/R" "                                 " 3
+at_xfail=no
+(
+  $as_echo "89. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+exp: a | b;
+a: ;
+b: ;
+_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/output.at:417: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:417"
+( $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 -rall --graph 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/output.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:417: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:417"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:417: \$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' "output.at:417"
+( $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/output.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:417: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:417"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:417: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:417"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:417: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:417"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . exp \$end\\l  1 exp: . a\\l  2    | . b\\l  3 a: .  [\$end]\\l  4 b: .  [\$end]\\l\"]
+  0 -> 1 [style=dashed label=\"exp\"]
+  0 -> 2 [style=dashed label=\"a\"]
+  0 -> 3 [style=dashed label=\"b\"]
+  0 -> \"0R3\" [style=solid]
+ \"0R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  0 -> \"0R4d\" [label=\"[\$end]\", style=solid]
+ \"0R4d\" [label=\"R4\", fillcolor=5, shape=diamond, style=filled]
+  1 [label=\"State 1\\n\\l  0 \$accept: exp . \$end\\l\"]
+  1 -> 4 [style=solid label=\"\$end\"]
+  2 [label=\"State 2\\n\\l  1 exp: a .\\l\"]
+  2 -> \"2R1\" [style=solid]
+ \"2R1\" [label=\"R1\", fillcolor=3, shape=diamond, style=filled]
+  3 [label=\"State 3\\n\\l  2 exp: b .\\l\"]
+  3 -> \"3R2\" [style=solid]
+ \"3R2\" [label=\"R2\", fillcolor=3, shape=diamond, style=filled]
+  4 [label=\"State 4\\n\\l  0 \$accept: exp \$end .\\l\"]
+  4 -> \"4R0\" [style=solid]
+ \"4R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:417"
+$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_89
+#AT_START_90
+at_fn_group_banner 90 'output.at:449' \
+  "Graph with reductions with multiple LAT" "        " 3
+at_xfail=no
+(
+  $as_echo "90. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+exp: a ';' | a ';' | a '.' | b '?' | b '!' | c '?' | c ';';
+a: ;
+b: ;
+c: ;
+_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/output.at:449: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:449"
+( $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 -rall --graph 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/output.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:449: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:449"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:449: \$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' "output.at:449"
+( $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/output.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:449: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:449"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:449: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:449"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:449: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:449"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . exp \$end\\l  1 exp: . a ';'\\l  2    | . a ';'\\l  3    | . a '.'\\l  4    | . b '?'\\l  5    | . b '!'\\l  6    | . c '?'\\l  7    | . c ';'\\l  8 a: .  [';', '.']\\l  9 b: .  ['?', '!']\\l 10 c: .  [';', '?']\\l\"]
+  0 -> 1 [style=dashed label=\"exp\"]
+  0 -> 2 [style=dashed label=\"a\"]
+  0 -> 3 [style=dashed label=\"b\"]
+  0 -> 4 [style=dashed label=\"c\"]
+  0 -> \"0R8\" [style=solid]
+ \"0R8\" [label=\"R8\", fillcolor=3, shape=diamond, style=filled]
+  0 -> \"0R9\" [label=\"['?', '!']\", style=solid]
+ \"0R9\" [label=\"R9\", fillcolor=3, shape=diamond, style=filled]
+  0 -> \"0R10d\" [label=\"[';', '?']\", style=solid]
+ \"0R10d\" [label=\"R10\", fillcolor=5, shape=diamond, style=filled]
+  1 [label=\"State 1\\n\\l  0 \$accept: exp . \$end\\l\"]
+  1 -> 5 [style=solid label=\"\$end\"]
+  2 [label=\"State 2\\n\\l  1 exp: a . ';'\\l  2    | a . ';'\\l  3    | a . '.'\\l\"]
+  2 -> 6 [style=solid label=\"';'\"]
+  2 -> 7 [style=solid label=\"'.'\"]
+  3 [label=\"State 3\\n\\l  4 exp: b . '?'\\l  5    | b . '!'\\l\"]
+  3 -> 8 [style=solid label=\"'?'\"]
+  3 -> 9 [style=solid label=\"'!'\"]
+  4 [label=\"State 4\\n\\l  6 exp: c . '?'\\l  7    | c . ';'\\l\"]
+  4 -> 10 [style=solid label=\"';'\"]
+  4 -> 11 [style=solid label=\"'?'\"]
+  5 [label=\"State 5\\n\\l  0 \$accept: exp \$end .\\l\"]
+  5 -> \"5R0\" [style=solid]
+ \"5R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+  6 [label=\"State 6\\n\\l  1 exp: a ';' .  [\$end]\\l  2    | a ';' .  [\$end]\\l\"]
+  6 -> \"6R1\" [style=solid]
+ \"6R1\" [label=\"R1\", fillcolor=3, shape=diamond, style=filled]
+  6 -> \"6R2d\" [label=\"[\$end]\", style=solid]
+ \"6R2d\" [label=\"R2\", fillcolor=5, shape=diamond, style=filled]
+  7 [label=\"State 7\\n\\l  3 exp: a '.' .\\l\"]
+  7 -> \"7R3\" [style=solid]
+ \"7R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  8 [label=\"State 8\\n\\l  4 exp: b '?' .\\l\"]
+  8 -> \"8R4\" [style=solid]
+ \"8R4\" [label=\"R4\", fillcolor=3, shape=diamond, style=filled]
+  9 [label=\"State 9\\n\\l  5 exp: b '!' .\\l\"]
+  9 -> \"9R5\" [style=solid]
+ \"9R5\" [label=\"R5\", fillcolor=3, shape=diamond, style=filled]
+  10 [label=\"State 10\\n\\l  7 exp: c ';' .\\l\"]
+  10 -> \"10R7\" [style=solid]
+ \"10R7\" [label=\"R7\", fillcolor=3, shape=diamond, style=filled]
+  11 [label=\"State 11\\n\\l  6 exp: c '?' .\\l\"]
+  11 -> \"11R6\" [style=solid]
+ \"11R6\" [label=\"R6\", fillcolor=3, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:449"
+$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_90
+#AT_START_91
+at_fn_group_banner 91 'output.at:508' \
+  "Graph with a reduction rule both enabled and disabled" "" 3
+at_xfail=no
+(
+  $as_echo "91. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%%
+exp: ifexp | opexp | imm;
+ifexp: "if" exp "then" exp elseexp;
+elseexp: "else" exp | ;
+opexp: exp '+' exp;
+imm: '0';
+_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/output.at:508: 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 -rall --graph input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "output.at:508"
+( $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 -rall --graph 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/output.at:508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/output.at:508: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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 -rall --graph input.y" "output.at:508"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -rall --graph 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/output.at:508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/output.at:508: \$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' "output.at:508"
+( $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/output.at:508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/output.at:508: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "output.at:508"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/output.at:508: bison -rall --graph input.y"
+at_fn_check_prepare_trace "output.at:508"
+( $at_check_trace; bison -rall --graph input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/output.at:508: grep -v // input.dot"
+at_fn_check_prepare_trace "output.at:508"
+( $at_check_trace; grep -v // input.dot
+) >>"$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 "
+digraph \"input.y\"
+{
+  node [fontname = courier, shape = box, colorscheme = paired6]
+  edge [fontname = courier]
+
+  0 [label=\"State 0\\n\\l  0 \$accept: . exp \$end\\l  1 exp: . ifexp\\l  2    | . opexp\\l  3    | . imm\\l  4 ifexp: . \\\"if\\\" exp \\\"then\\\" exp elseexp\\l  7 opexp: . exp '+' exp\\l  8 imm: . '0'\\l\"]
+  0 -> 1 [style=solid label=\"\\\"if\\\"\"]
+  0 -> 2 [style=solid label=\"'0'\"]
+  0 -> 3 [style=dashed label=\"exp\"]
+  0 -> 4 [style=dashed label=\"ifexp\"]
+  0 -> 5 [style=dashed label=\"opexp\"]
+  0 -> 6 [style=dashed label=\"imm\"]
+  1 [label=\"State 1\\n\\l  1 exp: . ifexp\\l  2    | . opexp\\l  3    | . imm\\l  4 ifexp: . \\\"if\\\" exp \\\"then\\\" exp elseexp\\l  4      | \\\"if\\\" . exp \\\"then\\\" exp elseexp\\l  7 opexp: . exp '+' exp\\l  8 imm: . '0'\\l\"]
+  1 -> 1 [style=solid label=\"\\\"if\\\"\"]
+  1 -> 2 [style=solid label=\"'0'\"]
+  1 -> 7 [style=dashed label=\"exp\"]
+  1 -> 4 [style=dashed label=\"ifexp\"]
+  1 -> 5 [style=dashed label=\"opexp\"]
+  1 -> 6 [style=dashed label=\"imm\"]
+  2 [label=\"State 2\\n\\l  8 imm: '0' .\\l\"]
+  2 -> \"2R8\" [style=solid]
+ \"2R8\" [label=\"R8\", fillcolor=3, shape=diamond, style=filled]
+  3 [label=\"State 3\\n\\l  0 \$accept: exp . \$end\\l  7 opexp: exp . '+' exp\\l\"]
+  3 -> 8 [style=solid label=\"\$end\"]
+  3 -> 9 [style=solid label=\"'+'\"]
+  4 [label=\"State 4\\n\\l  1 exp: ifexp .\\l\"]
+  4 -> \"4R1\" [style=solid]
+ \"4R1\" [label=\"R1\", fillcolor=3, shape=diamond, style=filled]
+  5 [label=\"State 5\\n\\l  2 exp: opexp .\\l\"]
+  5 -> \"5R2\" [style=solid]
+ \"5R2\" [label=\"R2\", fillcolor=3, shape=diamond, style=filled]
+  6 [label=\"State 6\\n\\l  3 exp: imm .\\l\"]
+  6 -> \"6R3\" [style=solid]
+ \"6R3\" [label=\"R3\", fillcolor=3, shape=diamond, style=filled]
+  7 [label=\"State 7\\n\\l  4 ifexp: \\\"if\\\" exp . \\\"then\\\" exp elseexp\\l  7 opexp: exp . '+' exp\\l\"]
+  7 -> 10 [style=solid label=\"\\\"then\\\"\"]
+  7 -> 9 [style=solid label=\"'+'\"]
+  8 [label=\"State 8\\n\\l  0 \$accept: exp \$end .\\l\"]
+  8 -> \"8R0\" [style=solid]
+ \"8R0\" [label=\"Acc\", fillcolor=1, shape=diamond, style=filled]
+  9 [label=\"State 9\\n\\l  1 exp: . ifexp\\l  2    | . opexp\\l  3    | . imm\\l  4 ifexp: . \\\"if\\\" exp \\\"then\\\" exp elseexp\\l  7 opexp: . exp '+' exp\\l  7      | exp '+' . exp\\l  8 imm: . '0'\\l\"]
+  9 -> 1 [style=solid label=\"\\\"if\\\"\"]
+  9 -> 2 [style=solid label=\"'0'\"]
+  9 -> 11 [style=dashed label=\"exp\"]
+  9 -> 4 [style=dashed label=\"ifexp\"]
+  9 -> 5 [style=dashed label=\"opexp\"]
+  9 -> 6 [style=dashed label=\"imm\"]
+  10 [label=\"State 10\\n\\l  1 exp: . ifexp\\l  2    | . opexp\\l  3    | . imm\\l  4 ifexp: . \\\"if\\\" exp \\\"then\\\" exp elseexp\\l  4      | \\\"if\\\" exp \\\"then\\\" . exp elseexp\\l  7 opexp: . exp '+' exp\\l  8 imm: . '0'\\l\"]
+  10 -> 1 [style=solid label=\"\\\"if\\\"\"]
+  10 -> 2 [style=solid label=\"'0'\"]
+  10 -> 12 [style=dashed label=\"exp\"]
+  10 -> 4 [style=dashed label=\"ifexp\"]
+  10 -> 5 [style=dashed label=\"opexp\"]
+  10 -> 6 [style=dashed label=\"imm\"]
+  11 [label=\"State 11\\n\\l  7 opexp: exp . '+' exp\\l  7      | exp '+' exp .  [\$end, \\\"then\\\", \\\"else\\\", '+']\\l\"]
+  11 -> 9 [style=solid label=\"'+'\"]
+  11 -> \"11R7d\" [label=\"['+']\", style=solid]
+ \"11R7d\" [label=\"R7\", fillcolor=5, shape=diamond, style=filled]
+  11 -> \"11R7\" [style=solid]
+ \"11R7\" [label=\"R7\", fillcolor=3, shape=diamond, style=filled]
+  12 [label=\"State 12\\n\\l  4 ifexp: \\\"if\\\" exp \\\"then\\\" exp . elseexp\\l  5 elseexp: . \\\"else\\\" exp\\l  6        | .  [\$end, \\\"then\\\", \\\"else\\\", '+']\\l  7 opexp: exp . '+' exp\\l\"]
+  12 -> 13 [style=solid label=\"\\\"else\\\"\"]
+  12 -> 9 [style=solid label=\"'+'\"]
+  12 -> 14 [style=dashed label=\"elseexp\"]
+  12 -> \"12R6d\" [label=\"[\\\"else\\\", '+']\", style=solid]
+ \"12R6d\" [label=\"R6\", fillcolor=5, shape=diamond, style=filled]
+  12 -> \"12R6\" [style=solid]
+ \"12R6\" [label=\"R6\", fillcolor=3, shape=diamond, style=filled]
+  13 [label=\"State 13\\n\\l  1 exp: . ifexp\\l  2    | . opexp\\l  3    | . imm\\l  4 ifexp: . \\\"if\\\" exp \\\"then\\\" exp elseexp\\l  5 elseexp: \\\"else\\\" . exp\\l  7 opexp: . exp '+' exp\\l  8 imm: . '0'\\l\"]
+  13 -> 1 [style=solid label=\"\\\"if\\\"\"]
+  13 -> 2 [style=solid label=\"'0'\"]
+  13 -> 15 [style=dashed label=\"exp\"]
+  13 -> 4 [style=dashed label=\"ifexp\"]
+  13 -> 5 [style=dashed label=\"opexp\"]
+  13 -> 6 [style=dashed label=\"imm\"]
+  14 [label=\"State 14\\n\\l  4 ifexp: \\\"if\\\" exp \\\"then\\\" exp elseexp .\\l\"]
+  14 -> \"14R4\" [style=solid]
+ \"14R4\" [label=\"R4\", fillcolor=3, shape=diamond, style=filled]
+  15 [label=\"State 15\\n\\l  5 elseexp: \\\"else\\\" exp .  [\$end, \\\"then\\\", \\\"else\\\", '+']\\l  7 opexp: exp . '+' exp\\l\"]
+  15 -> 9 [style=solid label=\"'+'\"]
+  15 -> \"15R5d\" [label=\"['+']\", style=solid]
+ \"15R5d\" [label=\"R5\", fillcolor=5, shape=diamond, style=filled]
+  15 -> \"15R5\" [style=solid]
+ \"15R5\" [label=\"R5\", fillcolor=3, shape=diamond, style=filled]
+}
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/output.at:508"
+$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_91
+#AT_START_92
+at_fn_group_banner 92 'skeletons.at:24' \
   "Relative skeleton file names" "                   " 4
 at_xfail=no
 (
-  $as_echo "84. $at_setup_line: testing $at_desc ..."
+  $as_echo "92. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17703,15 +19729,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/skeletons.at:62"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/skeletons.at:62: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "skeletons.at:62"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17805,15 +19831,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/skeletons.at:67"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/skeletons.at:67: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "skeletons.at:67"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17907,15 +19933,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/skeletons.at:72"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/skeletons.at:72: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "skeletons.at:72"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -17962,13 +19988,13 @@ $at_traceon; }
   $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:84' \
+#AT_STOP_92
+#AT_START_93
+at_fn_group_banner 93 'skeletons.at:84' \
   "Installed skeleton file names" "                  " 4
 at_xfail=no
 (
-  $as_echo "85. $at_setup_line: testing $at_desc ..."
+  $as_echo "93. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -17976,9 +20002,17 @@ at_xfail=no
 
 
 cat >input-cmd-line.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %{
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (void);
 %}
 
@@ -17994,9 +20028,8 @@ start: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -18013,11 +20046,20 @@ main (void)
 _ATEOF
 
 
+
 cat >input-gram.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %skeleton "yacc.c"
 %{
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (void);
 %}
 
@@ -18033,9 +20075,8 @@ start: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -18052,6 +20093,7 @@ main (void)
 _ATEOF
 
 
+
 if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   at_save_special_files
   mkdir xml-tests
@@ -18103,15 +20145,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/skeletons.at:124"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/skeletons.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "skeletons.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -18139,6 +20181,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/skeletons.at:125: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "skeletons.at:125"
+( $at_check_trace; $BISON_C_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/skeletons.at:125"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/skeletons.at:125: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input-cmd-line input-cmd-line.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input-cmd-line input-cmd-line.c $LIBS" "skeletons.at:125"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input-cmd-line input-cmd-line.c $LIBS
@@ -18232,15 +20287,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/skeletons.at:130"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/skeletons.at:130: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "skeletons.at:130"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -18268,6 +20323,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/skeletons.at:131: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "skeletons.at:131"
+( $at_check_trace; $BISON_C_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/skeletons.at:131"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/skeletons.at:131: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input-gram input-gram.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input-gram input-gram.c $LIBS" "skeletons.at:131"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input-gram input-gram.c $LIBS
@@ -18317,13 +20385,13 @@ $at_traceon; }
   $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:146' \
+#AT_STOP_93
+#AT_START_94
+at_fn_group_banner 94 'skeletons.at:146' \
   "%define Boolean variables: invalid skeleton defaults" "" 4
 at_xfail=no
 (
-  $as_echo "86. $at_setup_line: testing $at_desc ..."
+  $as_echo "94. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18348,7 +20416,7 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "<skeleton default value>: invalid value for %define Boolean variable 'foo'
+echo >>"$at_stderr"; $as_echo "<skeleton default value>: error: invalid value for %define Boolean variable 'foo'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -18362,13 +20430,13 @@ $at_traceon; }
   $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:170' \
+#AT_STOP_94
+#AT_START_95
+at_fn_group_banner 95 'skeletons.at:170' \
   "Complaining during macro argument expansion" "    " 4
 at_xfail=no
 (
-  $as_echo "87. $at_setup_line: testing $at_desc ..."
+  $as_echo "95. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18405,8 +20473,8 @@ at_status=$? at_failed=false
 $at_check_filter
 echo >>"$at_stderr"; $as_echo "input1.y: warning: foow fubar
 foow.y:2.3-5.3: warning: foowat fubar
-input1.y: fooc fubar
-fooc.y:1.1-10.5: foocat fubar
+input1.y: error: fooc fubar
+fooc.y:1.1-10.5: error: foocat fubar
 input1.y: fatal error: foof fubar
 " | \
   $at_diff - "$at_stderr" || at_failed=:
@@ -18513,13 +20581,13 @@ $at_traceon; }
   $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 'skeletons.at:252' \
+#AT_STOP_95
+#AT_START_96
+at_fn_group_banner 96 'skeletons.at:252' \
   "Fatal errors make M4 exit immediately" "          " 4
 at_xfail=no
 (
-  $as_echo "88. $at_setup_line: testing $at_desc ..."
+  $as_echo "96. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18545,7 +20613,7 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input1.y: non-fatal error
+echo >>"$at_stderr"; $as_echo "input1.y: error: non-fatal error
 input1.y: fatal error: M4 should exit immediately here
 " | \
   $at_diff - "$at_stderr" || at_failed=:
@@ -18593,13 +20661,13 @@ $at_traceon; }
   $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 'skeletons.at:306' \
+#AT_STOP_96
+#AT_START_97
+at_fn_group_banner 97 'skeletons.at:306' \
   "Fatal errors but M4 continues producing output" " " 4
 at_xfail=no
 (
-  $as_echo "89. $at_setup_line: testing $at_desc ..."
+  $as_echo "97. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18615,9 +20683,9 @@ print "${M4}_divert_pop(0)\n";
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/skeletons.at:318: perl gen-skel.pl > skel.c || exit 77"
-at_fn_check_prepare_trace "skeletons.at:318"
-( $at_check_trace; perl gen-skel.pl > skel.c || exit 77
+$as_echo "$at_srcdir/skeletons.at:318: \$PERL gen-skel.pl > skel.c || exit 77"
+at_fn_check_prepare_dynamic "$PERL gen-skel.pl > skel.c || exit 77" "skeletons.at:318"
+( $at_check_trace; $PERL gen-skel.pl > skel.c || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -18657,13 +20725,13 @@ $at_traceon; }
   $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:66' \
+#AT_STOP_97
+#AT_START_98
+at_fn_group_banner 98 'sets.at:66' \
   "Nullable" "                                       " 5
 at_xfail=no
 (
-  $as_echo "90. $at_setup_line: testing $at_desc ..."
+  $as_echo "98. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18732,15 +20800,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/sets.at:81"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/sets.at:81: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "sets.at:81"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -18864,13 +20932,13 @@ $at_traceon; }
   $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:151' \
+#AT_STOP_98
+#AT_START_99
+at_fn_group_banner 99 'sets.at:151' \
   "Broken Closure" "                                 " 5
 at_xfail=no
 (
-  $as_echo "91. $at_setup_line: testing $at_desc ..."
+  $as_echo "99. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -18938,15 +21006,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/sets.at:165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/sets.at:165: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "sets.at:165"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19008,13 +21076,13 @@ $at_traceon; }
   $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 'sets.at:193' \
+#AT_STOP_99
+#AT_START_100
+at_fn_group_banner 100 'sets.at:193' \
   "Firsts" "                                         " 5
 at_xfail=no
 (
-  $as_echo "92. $at_setup_line: testing $at_desc ..."
+  $as_echo "100. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19086,15 +21154,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/sets.at:211"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/sets.at:211: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "sets.at:211"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19233,13 +21301,13 @@ $at_traceon; }
   $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 'sets.at:269' \
+#AT_STOP_100
+#AT_START_101
+at_fn_group_banner 101 'sets.at:269' \
   "Accept" "                                         " 5
 at_xfail=no
 (
-  $as_echo "93. $at_setup_line: testing $at_desc ..."
+  $as_echo "101. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19305,15 +21373,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/sets.at:281"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/sets.at:281: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "sets.at:281"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19360,7 +21428,7 @@ mv stdout expout
 # Get the final state in the report, from the "accept" action..
 { set +x
 $as_echo "$at_srcdir/sets.at:289: sed -n '
-           /^state \\(.*\\)/{
+           /^State \\(.*\\)/{
             s//final state \\1/
             x
           }
@@ -19372,7 +21440,7 @@ $as_echo "$at_srcdir/sets.at:289: sed -n '
        ' input.output"
 at_fn_check_prepare_notrace 'an embedded newline' "sets.at:289"
 ( $at_check_trace; sed -n '
-           /^state \(.*\)/{
+           /^State \(.*\)/{
             s//final state \1/
             x
           }
@@ -19396,13 +21464,13 @@ $at_traceon; }
   $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:25' \
+#AT_STOP_101
+#AT_START_102
+at_fn_group_banner 102 'reduce.at:25' \
   "Useless Terminals" "                              " 6
 at_xfail=no
 (
-  $as_echo "94. $at_setup_line: testing $at_desc ..."
+  $as_echo "102. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19477,15 +21545,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:46"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/reduce.at:46: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:46"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19542,13 +21610,13 @@ $at_traceon; }
   $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:69' \
+#AT_STOP_102
+#AT_START_103
+at_fn_group_banner 103 'reduce.at:69' \
   "Useless Nonterminals" "                           " 6
 at_xfail=no
 (
-  $as_echo "95. $at_setup_line: testing $at_desc ..."
+  $as_echo "103. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19623,15 +21691,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/reduce.at:90: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:90"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19668,10 +21736,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:90"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -19825,13 +21893,13 @@ $at_traceon; }
   $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:124' \
+#AT_STOP_103
+#AT_START_104
+at_fn_group_banner 104 'reduce.at:124' \
   "Useless Rules" "                                  " 6
 at_xfail=no
 (
-  $as_echo "96. $at_setup_line: testing $at_desc ..."
+  $as_echo "104. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -19862,10 +21930,10 @@ if test x"$BISON_TEST_XML" = x1 && test x"$XSLTPROC" != x""; then
   # --report=all isn't required to get the full XML file.
   { set +x
 $as_echo "$at_srcdir/reduce.at:145: 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"
+                  --graph=xml-tests/test.dot -fcaret input.y"
 at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:145"
 ( $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 input.y
+                  --graph=xml-tests/test.dot -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19876,9 +21944,9 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: 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" "reduce.at:145"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input.y
+$as_echo "$at_srcdir/reduce.at:145: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret 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 -fcaret input.y" "reduce.at:145"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19906,15 +21974,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:145"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/reduce.at:145: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:145"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -19928,8 +21996,324 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:145: bison input.y"
+$as_echo "$at_srcdir/reduce.at:145: bison -fcaret input.y"
 at_fn_check_prepare_trace "reduce.at:145"
+( $at_check_trace; bison -fcaret input.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "input.y: warning: 9 nonterminals useless in grammar
+input.y: warning: 9 rules useless in grammar
+input.y:6.1-8: warning: nonterminal useless in grammar: useless1
+ useless1: '1';
+ ^^^^^^^^
+input.y:7.1-8: warning: nonterminal useless in grammar: useless2
+ useless2: '2';
+ ^^^^^^^^
+input.y:8.1-8: warning: nonterminal useless in grammar: useless3
+ useless3: '3';
+ ^^^^^^^^
+input.y:9.1-8: warning: nonterminal useless in grammar: useless4
+ useless4: '4';
+ ^^^^^^^^
+input.y:10.1-8: warning: nonterminal useless in grammar: useless5
+ useless5: '5';
+ ^^^^^^^^
+input.y:11.1-8: warning: nonterminal useless in grammar: useless6
+ useless6: '6';
+ ^^^^^^^^
+input.y:12.1-8: warning: nonterminal useless in grammar: useless7
+ useless7: '7';
+ ^^^^^^^^
+input.y:13.1-8: warning: nonterminal useless in grammar: useless8
+ useless8: '8';
+ ^^^^^^^^
+input.y:14.1-8: warning: nonterminal useless in grammar: useless9
+ useless9: '9';
+ ^^^^^^^^
+input.y:6.11-13: warning: rule useless in grammar
+ useless1: '1';
+           ^^^
+input.y:7.11-13: warning: rule useless in grammar
+ useless2: '2';
+           ^^^
+input.y:8.11-13: warning: rule useless in grammar
+ useless3: '3';
+           ^^^
+input.y:9.11-13: warning: rule useless in grammar
+ useless4: '4';
+           ^^^
+input.y:10.11-13: warning: rule useless in grammar
+ useless5: '5';
+           ^^^
+input.y:11.11-13: warning: rule useless in grammar
+ useless6: '6';
+           ^^^
+input.y:12.11-13: warning: rule useless in grammar
+ useless7: '7';
+           ^^^
+input.y:13.11-13: warning: rule useless in grammar
+ useless8: '8';
+           ^^^
+input.y:14.11-13: warning: rule useless in grammar
+ useless9: '9';
+           ^^^
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:145"
+$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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/reduce.at:145: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Werror" "reduce.at:145"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/reduce.at:145"
+$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'
+input.y: warning: 9 nonterminals useless in grammar
+input.y: warning: 9 rules useless in grammar
+input.y:6.1-8: warning: nonterminal useless in grammar: useless1
+ useless1: '1';
+ ^^^^^^^^
+input.y:7.1-8: warning: nonterminal useless in grammar: useless2
+ useless2: '2';
+ ^^^^^^^^
+input.y:8.1-8: warning: nonterminal useless in grammar: useless3
+ useless3: '3';
+ ^^^^^^^^
+input.y:9.1-8: warning: nonterminal useless in grammar: useless4
+ useless4: '4';
+ ^^^^^^^^
+input.y:10.1-8: warning: nonterminal useless in grammar: useless5
+ useless5: '5';
+ ^^^^^^^^
+input.y:11.1-8: warning: nonterminal useless in grammar: useless6
+ useless6: '6';
+ ^^^^^^^^
+input.y:12.1-8: warning: nonterminal useless in grammar: useless7
+ useless7: '7';
+ ^^^^^^^^
+input.y:13.1-8: warning: nonterminal useless in grammar: useless8
+ useless8: '8';
+ ^^^^^^^^
+input.y:14.1-8: warning: nonterminal useless in grammar: useless9
+ useless9: '9';
+ ^^^^^^^^
+input.y:6.11-13: warning: rule useless in grammar
+ useless1: '1';
+           ^^^
+input.y:7.11-13: warning: rule useless in grammar
+ useless2: '2';
+           ^^^
+input.y:8.11-13: warning: rule useless in grammar
+ useless3: '3';
+           ^^^
+input.y:9.11-13: warning: rule useless in grammar
+ useless4: '4';
+           ^^^
+input.y:10.11-13: warning: rule useless in grammar
+ useless5: '5';
+           ^^^
+input.y:11.11-13: warning: rule useless in grammar
+ useless6: '6';
+           ^^^
+input.y:12.11-13: warning: rule useless in grammar
+ useless7: '7';
+           ^^^
+input.y:13.11-13: warning: rule useless in grammar
+ useless8: '8';
+           ^^^
+input.y:14.11-13: warning: rule useless in grammar
+ useless9: '9';
+           ^^^
+_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/reduce.at:145: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:145"
+( $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/reduce.at:145"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/reduce.at:145: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=error" "reduce.at:145"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/reduce.at:145"
+$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/reduce.at:145: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y -Wnone -Werror" "reduce.at:145"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/reduce.at:145"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/reduce.at:145: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret input.y --warnings=none -Werror" "reduce.at:145"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret 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/reduce.at:145"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  at_restore_special_files
+fi
+
+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/reduce.at:204: 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' "reduce.at:204"
+( $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 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/reduce.at:204"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/reduce.at:204: 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" "reduce.at:204"
+( $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/reduce.at:204"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/reduce.at:204: \$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' "reduce.at:204"
+( $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/reduce.at:204"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/reduce.at:204: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:204"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:204"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/reduce.at:204: bison input.y"
+at_fn_check_prepare_trace "reduce.at:204"
 ( $at_check_trace; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -19957,14 +22341,14 @@ input.y:14.11-13: warning: rule useless in grammar: useless9: '9'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:145"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:204"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -19972,15 +22356,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: 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" "reduce.at:145"
+$as_echo "$at_srcdir/reduce.at:204: 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" "reduce.at:204"
 ( $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/reduce.at:145"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:204"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20035,9 +22419,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/reduce.at:204: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:145"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:204"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20045,7 +22429,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/reduce.at:145"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:204"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20053,15 +22437,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: 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" "reduce.at:145"
+$as_echo "$at_srcdir/reduce.at:204: 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" "reduce.at:204"
 ( $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/reduce.at:145"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:204"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20070,28 +22454,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: 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" "reduce.at:145"
+$as_echo "$at_srcdir/reduce.at:204: 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" "reduce.at:204"
 ( $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/reduce.at:145"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:204"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:145: 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" "reduce.at:145"
+$as_echo "$at_srcdir/reduce.at:204: 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" "reduce.at:204"
 ( $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/reduce.at:145"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:204"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20100,8 +22484,8 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:168: sed -n '/^Grammar/q;/^\$/!p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' input.output" "reduce.at:168"
+$as_echo "$at_srcdir/reduce.at:227: sed -n '/^Grammar/q;/^\$/!p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' input.output" "reduce.at:227"
 ( $at_check_trace; sed -n '/^Grammar/q;/^$/!p' input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20139,7 +22523,7 @@ Rules useless in grammar
    10 useless9: '9'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:168"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:227"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20148,13 +22532,13 @@ $at_traceon; }
   $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:212' \
+#AT_STOP_104
+#AT_START_105
+at_fn_group_banner 105 'reduce.at:271' \
   "Reduced Automaton" "                              " 6
 at_xfail=no
 (
-  $as_echo "97. $at_setup_line: testing $at_desc ..."
+  $as_echo "105. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20192,9 +22576,247 @@ 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/reduce.at:241: 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/reduce.at:300: 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 -fcaret not-reduced.y"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:300"
+( $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 -fcaret not-reduced.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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret not-reduced.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 -fcaret not-reduced.y" "reduce.at:300"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret not-reduced.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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: \$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' "reduce.at:300"
+( $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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:300"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/reduce.at:300: bison -fcaret not-reduced.y"
+at_fn_check_prepare_trace "reduce.at:300"
+( $at_check_trace; bison -fcaret not-reduced.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo >>"$at_stderr"; $as_echo "not-reduced.y: warning: 2 nonterminals useless in grammar
+not-reduced.y: warning: 3 rules useless in grammar
+not-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable
+ not_reachable: useful  { /* A not reachable action. */ }
+ ^^^^^^^^^^^^^
+not-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^
+not-reduced.y:11.6-57: warning: rule useless in grammar
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:14.16-56: warning: rule useless in grammar
+ not_reachable: useful  { /* A not reachable action. */ }
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:17.17-18.63: warning: rule useless in grammar
+ non_productive: non_productive useless_token
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:300"
+$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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y -Werror" "reduce.at:300"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret not-reduced.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/reduce.at:300"
+$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'
+not-reduced.y: warning: 2 nonterminals useless in grammar
+not-reduced.y: warning: 3 rules useless in grammar
+not-reduced.y:14.1-13: warning: nonterminal useless in grammar: not_reachable
+ not_reachable: useful  { /* A not reachable action. */ }
+ ^^^^^^^^^^^^^
+not-reduced.y:11.6-19: warning: nonterminal useless in grammar: non_productive
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^
+not-reduced.y:11.6-57: warning: rule useless in grammar
+    | non_productive    { /* A non productive action. */ }
+      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:14.16-56: warning: rule useless in grammar
+ not_reachable: useful  { /* A not reachable action. */ }
+                ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+not-reduced.y:17.17-18.63: warning: rule useless in grammar
+ non_productive: non_productive useless_token
+                 ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+_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/reduce.at:300: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:300"
+( $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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y --warnings=error" "reduce.at:300"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret not-reduced.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/reduce.at:300"
+$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/reduce.at:300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y -Wnone -Werror" "reduce.at:300"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret not-reduced.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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/reduce.at:300: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret not-reduced.y --warnings=none -Werror" "reduce.at:300"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret not-reduced.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/reduce.at:300"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  at_restore_special_files
+fi
+
+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/reduce.at:320: 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 not-reduced.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:241"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:320"
 ( $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 not-reduced.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20202,29 +22824,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/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml not-reduced.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 not-reduced.y" "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml not-reduced.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 not-reduced.y" "reduce.at:320"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml not-reduced.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/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:320: \$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' "reduce.at:241"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:320"
 ( $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
@@ -20233,25 +22855,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:320: \$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' "reduce.at:241"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:320"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20259,8 +22881,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:241: bison not-reduced.y"
-at_fn_check_prepare_trace "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: bison not-reduced.y"
+at_fn_check_prepare_trace "reduce.at:320"
 ( $at_check_trace; bison not-reduced.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20275,14 +22897,14 @@ not-reduced.y:17.17-18.63: warning: rule useless in grammar: non_productive: non
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -20290,15 +22912,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Werror" "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Werror" "reduce.at:320"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison not-reduced.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/reduce.at:241"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20340,9 +22962,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/reduce.at:320: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:241"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:320"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20350,7 +22972,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/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20358,15 +22980,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=error" "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=error" "reduce.at:320"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison not-reduced.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/reduce.at:241"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20375,28 +22997,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Wnone -Werror" "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y -Wnone -Werror" "reduce.at:320"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison not-reduced.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/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:241: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=none -Werror" "reduce.at:241"
+$as_echo "$at_srcdir/reduce.at:320: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison not-reduced.y --warnings=none -Werror" "reduce.at:320"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison not-reduced.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/reduce.at:241"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20405,8 +23027,8 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:251: sed -n '/^Grammar/q;/^\$/!p' not-reduced.output"
-at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' not-reduced.output" "reduce.at:251"
+$as_echo "$at_srcdir/reduce.at:330: sed -n '/^Grammar/q;/^\$/!p' not-reduced.output"
+at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' not-reduced.output" "reduce.at:330"
 ( $at_check_trace; sed -n '/^Grammar/q;/^$/!p' not-reduced.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20423,7 +23045,7 @@ Rules useless in grammar
     4 non_productive: non_productive useless_token
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:251"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:330"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20460,9 +23082,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/reduce.at:288: 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/reduce.at:367: 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 reduced.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:288"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:367"
 ( $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 reduced.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20470,29 +23092,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/reduce.at:288"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:367"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:288: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml reduced.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 reduced.y" "reduce.at:288"
+$as_echo "$at_srcdir/reduce.at:367: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml reduced.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 reduced.y" "reduce.at:367"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml reduced.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/reduce.at:288"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:367"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:288: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:367: \$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' "reduce.at:288"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:367"
 ( $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
@@ -20501,25 +23123,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:288"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:367"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:288: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:367: \$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' "reduce.at:288"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:367"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:288"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:367"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20527,15 +23149,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:288: bison reduced.y"
-at_fn_check_prepare_trace "reduce.at:288"
+$as_echo "$at_srcdir/reduce.at:367: bison reduced.y"
+at_fn_check_prepare_trace "reduce.at:367"
 ( $at_check_trace; bison reduced.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/reduce.at:288"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:367"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20544,15 +23166,15 @@ $at_traceon; }
 # Comparing the parsers.
 cp reduced.c expout
 { set +x
-$as_echo "$at_srcdir/reduce.at:292: sed 's/not-reduced/reduced/g' not-reduced.c"
-at_fn_check_prepare_trace "reduce.at:292"
+$as_echo "$at_srcdir/reduce.at:371: sed 's/not-reduced/reduced/g' not-reduced.c"
+at_fn_check_prepare_trace "reduce.at:371"
 ( $at_check_trace; sed 's/not-reduced/reduced/g' not-reduced.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:292"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:371"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20561,13 +23183,13 @@ $at_traceon; }
   $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:302' \
+#AT_STOP_105
+#AT_START_106
+at_fn_group_banner 106 'reduce.at:381' \
   "Underivable Rules" "                              " 6
 at_xfail=no
 (
-  $as_echo "98. $at_setup_line: testing $at_desc ..."
+  $as_echo "106. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20590,9 +23212,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/reduce.at:316: 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/reduce.at:395: 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' "reduce.at:316"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
 ( $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 input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20600,29 +23222,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/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: 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" "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: 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" "reduce.at:395"
 ( $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/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:395: \$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' "reduce.at:316"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:395"
 ( $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
@@ -20631,25 +23253,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:395: \$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' "reduce.at:316"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:395"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20657,8 +23279,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:316: bison input.y"
-at_fn_check_prepare_trace "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: bison input.y"
+at_fn_check_prepare_trace "reduce.at:395"
 ( $at_check_trace; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20673,14 +23295,14 @@ input.y:7.14-24: warning: rule useless in grammar: indirection: underivable
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -20688,15 +23310,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: 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" "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: 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" "reduce.at:395"
 ( $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/reduce.at:316"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20738,9 +23360,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/reduce.at:395: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:316"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20748,7 +23370,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/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20756,15 +23378,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: 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" "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: 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" "reduce.at:395"
 ( $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/reduce.at:316"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20773,28 +23395,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: 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" "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: 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" "reduce.at:395"
 ( $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/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:316: 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" "reduce.at:316"
+$as_echo "$at_srcdir/reduce.at:395: 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" "reduce.at:395"
 ( $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/reduce.at:316"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20803,8 +23425,8 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:326: sed -n '/^Grammar/q;/^\$/!p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' input.output" "reduce.at:326"
+$as_echo "$at_srcdir/reduce.at:405: sed -n '/^Grammar/q;/^\$/!p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^Grammar/q;/^$/!p' input.output" "reduce.at:405"
 ( $at_check_trace; sed -n '/^Grammar/q;/^$/!p' input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20819,7 +23441,7 @@ Rules useless in grammar
     4 indirection: underivable
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:326"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20828,13 +23450,13 @@ $at_traceon; }
   $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:344' \
+#AT_STOP_106
+#AT_START_107
+at_fn_group_banner 107 'reduce.at:423' \
   "Empty Language" "                                 " 6
 at_xfail=no
 (
-  $as_echo "99. $at_setup_line: testing $at_desc ..."
+  $as_echo "107. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20847,8 +23469,8 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:352: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "reduce.at:352"
+$as_echo "$at_srcdir/reduce.at:431: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input.y" "reduce.at:431"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -20859,7 +23481,7 @@ input.y:3.1-3: fatal error: start symbol exp does not derive any sentence
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:352"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:431"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -20869,13 +23491,13 @@ $at_traceon; }
   $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_107
+#AT_START_108
+at_fn_group_banner 108 'reduce.at:474' \
   "no %define lr.type: Single State Split" "         " 6
 at_xfail=no
 (
-  $as_echo "100. $at_setup_line: testing $at_desc ..."
+  $as_echo "108. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -20890,7 +23512,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -20938,9 +23560,8 @@ c: 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -20974,9 +23595,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/reduce.at:395: 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/reduce.at:474: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:474"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -20984,29 +23605,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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:474"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
@@ -21015,25 +23636,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21041,29 +23662,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:395"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:474: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:474"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -21077,7 +23698,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a'
@@ -21088,7 +23709,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a'
@@ -21099,7 +23720,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a'
@@ -21113,14 +23734,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['a', 'b']
@@ -21130,21 +23751,21 @@ state 5
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a'
     5  | 'a' .  [\$end]
@@ -21156,56 +23777,56 @@ state 8
     \$default  reduce using rule 5 (A)
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     6 c: 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21220,35 +23841,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:474"
+( $at_check_trace; $BISON_C_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/reduce.at:474"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:474: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -21257,7 +23891,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21268,13 +23902,13 @@ $at_traceon; }
   $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_108
+#AT_START_109
+at_fn_group_banner 109 'reduce.at:474' \
   "%define lr.type lalr: Single State Split" "       " 6
 at_xfail=no
 (
-  $as_echo "101. $at_setup_line: testing $at_desc ..."
+  $as_echo "109. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -21289,7 +23923,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -21338,9 +23972,8 @@ c: 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -21374,9 +24007,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/reduce.at:395: 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/reduce.at:474: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:474"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -21384,29 +24017,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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:474"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
@@ -21415,25 +24048,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21441,29 +24074,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:395"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:474: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:474"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -21477,7 +24110,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a'
@@ -21488,7 +24121,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a'
@@ -21499,7 +24132,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a'
@@ -21513,14 +24146,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['a', 'b']
@@ -21530,21 +24163,21 @@ state 5
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a'
     5  | 'a' .  [\$end]
@@ -21556,56 +24189,56 @@ state 8
     \$default  reduce using rule 5 (A)
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     6 c: 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21620,35 +24253,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:474"
+( $at_check_trace; $BISON_C_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/reduce.at:474"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:474: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -21657,7 +24303,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21668,13 +24314,13 @@ $at_traceon; }
   $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:395' \
+#AT_STOP_109
+#AT_START_110
+at_fn_group_banner 110 'reduce.at:474' \
   "%define lr.type ielr: Single State Split" "       " 6
 at_xfail=no
 (
-  $as_echo "102. $at_setup_line: testing $at_desc ..."
+  $as_echo "110. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -21689,7 +24335,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -21738,9 +24384,8 @@ c: 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -21774,9 +24419,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/reduce.at:395: 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/reduce.at:474: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:474"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -21784,29 +24429,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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:474"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
@@ -21815,25 +24460,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -21841,29 +24486,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:395"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:474: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:474"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -21877,7 +24522,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a'
@@ -21888,7 +24533,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a'
@@ -21899,7 +24544,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a'
@@ -21913,14 +24558,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['a']
@@ -21930,21 +24575,21 @@ state 5
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a'
     5  | 'a' .  [\$end]
@@ -21956,56 +24601,56 @@ state 8
     \$default  reduce using rule 5 (A)
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     6 c: 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 
 
-state 16
+State 16
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['b']
@@ -22015,7 +24660,7 @@ state 16
     \$default  reduce using rule 5 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22030,42 +24675,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:474"
+( $at_check_trace; $BISON_C_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/reduce.at:474"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:474: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; 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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22076,13 +24734,13 @@ $at_traceon; }
   $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:395' \
+#AT_STOP_110
+#AT_START_111
+at_fn_group_banner 111 'reduce.at:474' \
   "%define lr.type canonical-lr: Single State Split" "" 6
 at_xfail=no
 (
-  $as_echo "103. $at_setup_line: testing $at_desc ..."
+  $as_echo "111. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22097,7 +24755,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -22146,9 +24804,8 @@ c: 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -22182,9 +24839,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/reduce.at:395: 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/reduce.at:474: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:395"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:474"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -22192,29 +24849,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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:474"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
@@ -22223,25 +24880,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:474: \$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' "reduce.at:395"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:474"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22249,29 +24906,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:395"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:474: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:474"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -22285,7 +24942,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a'
@@ -22296,7 +24953,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a'
@@ -22307,7 +24964,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a'
@@ -22321,14 +24978,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['a']
@@ -22338,21 +24995,21 @@ state 5
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a'
     5  | 'a' .  [\$end]
@@ -22364,56 +25021,56 @@ state 8
     \$end  reduce using rule 5 (A)
 
 
-state 9
+State 9
 
     7 c: A .  [\$end]
 
     \$end  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .  [\$end]
 
     \$end  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' .  ['a']
 
     'a'  reduce using rule 4 (A)
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .  [\$end]
 
     \$end  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .  [\$end]
 
     \$end  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     6 c: 'a' 'b' .  [\$end]
 
     \$end  reduce using rule 6 (c)
 
 
-state 16
+State 16
 
     4 A: 'a' . 'a'
     5  | 'a' .  ['b']
@@ -22423,21 +25080,21 @@ state 16
     'b'  reduce using rule 5 (A)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' .  [\$end]
 
     \$end  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     4 A: 'a' 'a' .  ['b']
 
     'b'  reduce using rule 4 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22451,46 +25108,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:474"
+( $at_check_trace; $BISON_C_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/reduce.at:474"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:474: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:474"
 ( $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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:395: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:395"
+$as_echo "$at_srcdir/reduce.at:474: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:474"
 ( $at_check_trace; 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/reduce.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22501,13 +25171,13 @@ $at_traceon; }
   $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_111
+#AT_START_112
+at_fn_group_banner 112 'reduce.at:707' \
   "no %define lr.type: Lane Split" "                 " 6
 at_xfail=no
 (
-  $as_echo "104. $at_setup_line: testing $at_desc ..."
+  $as_echo "112. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22522,7 +25192,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -22553,9 +25223,8 @@ c: 'a' 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -22589,9 +25258,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/reduce.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/reduce.at:707: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:628"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:707"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -22599,29 +25268,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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:707"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
@@ -22630,25 +25299,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22656,29 +25325,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:628"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:707: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:707"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -22692,7 +25361,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' 'a'
@@ -22703,7 +25372,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' 'a'
@@ -22714,7 +25383,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' 'a'
@@ -22728,14 +25397,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -22743,21 +25412,21 @@ state 5
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -22766,28 +25435,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['a', 'b']
@@ -22797,21 +25466,21 @@ state 12
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  [\$end]
@@ -22823,21 +25492,21 @@ state 15
     \$default  reduce using rule 5 (A)
 
 
-state 16
+State 16
 
     4 A: 'a' 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 17
+State 17
 
     6 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22852,35 +25521,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:707"
+( $at_check_trace; $BISON_C_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/reduce.at:707"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:707: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -22889,7 +25571,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -22900,13 +25582,13 @@ $at_traceon; }
   $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_112
+#AT_START_113
+at_fn_group_banner 113 'reduce.at:707' \
   "%define lr.type lalr: Lane Split" "               " 6
 at_xfail=no
 (
-  $as_echo "105. $at_setup_line: testing $at_desc ..."
+  $as_echo "113. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -22921,7 +25603,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -22953,9 +25635,8 @@ c: 'a' 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -22989,9 +25670,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/reduce.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/reduce.at:707: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:628"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:707"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -22999,29 +25680,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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:707"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
@@ -23030,25 +25711,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23056,29 +25737,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:628"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:707: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:707"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -23092,7 +25773,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' 'a'
@@ -23103,7 +25784,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' 'a'
@@ -23114,7 +25795,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' 'a'
@@ -23128,14 +25809,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23143,21 +25824,21 @@ state 5
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23166,28 +25847,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['a', 'b']
@@ -23197,21 +25878,21 @@ state 12
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  [\$end]
@@ -23223,21 +25904,21 @@ state 15
     \$default  reduce using rule 5 (A)
 
 
-state 16
+State 16
 
     4 A: 'a' 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 17
+State 17
 
     6 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23252,35 +25933,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:707"
+( $at_check_trace; $BISON_C_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/reduce.at:707"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:707: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -23289,7 +25983,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23300,13 +25994,13 @@ $at_traceon; }
   $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:628' \
+#AT_STOP_113
+#AT_START_114
+at_fn_group_banner 114 'reduce.at:707' \
   "%define lr.type ielr: Lane Split" "               " 6
 at_xfail=no
 (
-  $as_echo "106. $at_setup_line: testing $at_desc ..."
+  $as_echo "114. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -23321,7 +26015,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -23353,9 +26047,8 @@ c: 'a' 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -23389,9 +26082,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/reduce.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/reduce.at:707: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:628"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:707"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -23399,29 +26092,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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:707"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
@@ -23430,25 +26123,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23456,29 +26149,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:628"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:707: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:707"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -23492,7 +26185,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' 'a'
@@ -23503,7 +26196,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' 'a'
@@ -23514,7 +26207,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' 'a'
@@ -23528,14 +26221,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23543,21 +26236,21 @@ state 5
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23566,28 +26259,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     7 c: A .
 
     \$default  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['a']
@@ -23597,21 +26290,21 @@ state 12
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  [\$end]
@@ -23623,21 +26316,21 @@ state 15
     \$default  reduce using rule 5 (A)
 
 
-state 16
+State 16
 
     4 A: 'a' 'a' 'a' .
 
     \$default  reduce using rule 4 (A)
 
 
-state 17
+State 17
 
     6 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 6 (c)
 
 
-state 18
+State 18
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23645,7 +26338,7 @@ state 18
     'a'  shift, and go to state 19
 
 
-state 19
+State 19
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['b']
@@ -23655,7 +26348,7 @@ state 19
     \$default  reduce using rule 5 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23670,42 +26363,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:707"
+( $at_check_trace; $BISON_C_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/reduce.at:707"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:707: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; 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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23716,13 +26422,13 @@ $at_traceon; }
   $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:628' \
+#AT_STOP_114
+#AT_START_115
+at_fn_group_banner 115 'reduce.at:707' \
   "%define lr.type canonical-lr: Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "107. $at_setup_line: testing $at_desc ..."
+  $as_echo "115. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -23737,7 +26443,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -23769,9 +26475,8 @@ c: 'a' 'a' 'b' /* rule 6 */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -23805,9 +26510,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/reduce.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/reduce.at:707: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:628"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:707"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -23815,29 +26520,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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:707"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
@@ -23846,25 +26551,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:707: \$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' "reduce.at:628"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:707"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -23872,29 +26577,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:628"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:707: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:707"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -23908,7 +26613,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' 'a'
@@ -23919,7 +26624,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' 'a'
@@ -23930,7 +26635,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' 'a'
@@ -23944,14 +26649,14 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23959,21 +26664,21 @@ state 5
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -23982,28 +26687,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     7 c: A .  [\$end]
 
     \$end  reduce using rule 7 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .  [\$end]
 
     \$end  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['a']
@@ -24013,21 +26718,21 @@ state 12
     Conflict between rule 5 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .  [\$end]
 
     \$end  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .  [\$end]
 
     \$end  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  [\$end]
@@ -24039,21 +26744,21 @@ state 15
     \$end  reduce using rule 5 (A)
 
 
-state 16
+State 16
 
     4 A: 'a' 'a' 'a' .  ['a']
 
     'a'  reduce using rule 4 (A)
 
 
-state 17
+State 17
 
     6 c: 'a' 'a' 'b' .  [\$end]
 
     \$end  reduce using rule 6 (c)
 
 
-state 18
+State 18
 
     4 A: 'a' . 'a' 'a'
     5  | 'a' . 'a'
@@ -24061,14 +26766,14 @@ state 18
     'a'  shift, and go to state 20
 
 
-state 19
+State 19
 
     4 A: 'a' 'a' 'a' .  [\$end]
 
     \$end  reduce using rule 4 (A)
 
 
-state 20
+State 20
 
     4 A: 'a' 'a' . 'a'
     5  | 'a' 'a' .  ['b']
@@ -24078,14 +26783,14 @@ state 20
     'b'  reduce using rule 5 (A)
 
 
-state 21
+State 21
 
     4 A: 'a' 'a' 'a' .  ['b']
 
     'b'  reduce using rule 4 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24099,46 +26804,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:707"
+( $at_check_trace; $BISON_C_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/reduce.at:707"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:707: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:707"
 ( $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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:628: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:628"
+$as_echo "$at_srcdir/reduce.at:707: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:707"
 ( $at_check_trace; 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/reduce.at:628"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:707"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24149,13 +26867,13 @@ $at_traceon; }
   $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_115
+#AT_START_116
+at_fn_group_banner 116 'reduce.at:951' \
   "no %define lr.type: Complex Lane Split" "         " 6
 at_xfail=no
 (
-  $as_echo "108. $at_setup_line: testing $at_desc ..."
+  $as_echo "116. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -24170,7 +26888,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -24204,9 +26922,8 @@ c: 'a' 'a' 'b'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -24240,9 +26957,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/reduce.at:872: 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/reduce.at:951: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:872"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:951"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -24250,29 +26967,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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:951"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
@@ -24281,25 +26998,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24307,29 +27024,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:872"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:951: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:951"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -24343,7 +27060,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' B
@@ -24353,7 +27070,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' B
@@ -24363,7 +27080,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' B
@@ -24376,35 +27093,35 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' B
     7 c: 'a' . 'a' 'b'
@@ -24412,28 +27129,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     8 c: A .
 
     \$default  reduce using rule 8 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -24446,21 +27163,21 @@ state 12
     Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -24475,28 +27192,28 @@ state 15
     B  go to state 17
 
 
-state 16
+State 16
 
     5 B: 'a' .
 
     \$default  reduce using rule 5 (B)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' B .
 
     \$default  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     7 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 7 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24511,35 +27228,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:951"
+( $at_check_trace; $BISON_C_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/reduce.at:951"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:951: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -24548,7 +27278,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24559,13 +27289,13 @@ $at_traceon; }
   $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_116
+#AT_START_117
+at_fn_group_banner 117 'reduce.at:951' \
   "%define lr.type lalr: Complex Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "109. $at_setup_line: testing $at_desc ..."
+  $as_echo "117. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -24580,7 +27310,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -24615,9 +27345,8 @@ c: 'a' 'a' 'b'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -24651,9 +27380,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/reduce.at:872: 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/reduce.at:951: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:872"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:951"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -24661,29 +27390,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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:951"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
@@ -24692,25 +27421,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24718,29 +27447,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:872"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:951: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:951"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -24754,7 +27483,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' B
@@ -24764,7 +27493,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' B
@@ -24774,7 +27503,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' B
@@ -24787,35 +27516,35 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' B
     7 c: 'a' . 'a' 'b'
@@ -24823,28 +27552,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     8 c: A .
 
     \$default  reduce using rule 8 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -24857,21 +27586,21 @@ state 12
     Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -24886,28 +27615,28 @@ state 15
     B  go to state 17
 
 
-state 16
+State 16
 
     5 B: 'a' .
 
     \$default  reduce using rule 5 (B)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' B .
 
     \$default  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     7 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 7 (c)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24922,35 +27651,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:951"
+( $at_check_trace; $BISON_C_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/reduce.at:951"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:951: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -24959,7 +27701,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -24970,13 +27712,13 @@ $at_traceon; }
   $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:872' \
+#AT_STOP_117
+#AT_START_118
+at_fn_group_banner 118 'reduce.at:951' \
   "%define lr.type ielr: Complex Lane Split" "       " 6
 at_xfail=no
 (
-  $as_echo "110. $at_setup_line: testing $at_desc ..."
+  $as_echo "118. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -24991,7 +27733,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -25026,9 +27768,8 @@ c: 'a' 'a' 'b'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -25062,9 +27803,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/reduce.at:872: 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/reduce.at:951: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:872"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:951"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -25072,29 +27813,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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:951"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
@@ -25103,25 +27844,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25129,29 +27870,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:872"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:951: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:951"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -25165,7 +27906,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' B
@@ -25175,7 +27916,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' B
@@ -25185,7 +27926,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' B
@@ -25198,35 +27939,35 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' B
     7 c: 'a' . 'a' 'b'
@@ -25234,28 +27975,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     8 c: A .
 
     \$default  reduce using rule 8 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .
 
     \$default  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25268,21 +28009,21 @@ state 12
     Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .
 
     \$default  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25297,35 +28038,35 @@ state 15
     B  go to state 17
 
 
-state 16
+State 16
 
     5 B: 'a' .
 
     \$default  reduce using rule 5 (B)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' B .
 
     \$default  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     7 c: 'a' 'a' 'b' .
 
     \$default  reduce using rule 7 (c)
 
 
-state 19
+State 19
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 20
 
 
-state 20
+State 20
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25338,7 +28079,7 @@ state 20
     B  go to state 17
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25353,42 +28094,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:951"
+( $at_check_trace; $BISON_C_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/reduce.at:951"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:951: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; 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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25399,13 +28153,13 @@ $at_traceon; }
   $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:872' \
+#AT_STOP_118
+#AT_START_119
+at_fn_group_banner 119 'reduce.at:951' \
   "%define lr.type canonical-lr: Complex Lane Split" "" 6
 at_xfail=no
 (
-  $as_echo "111. $at_setup_line: testing $at_desc ..."
+  $as_echo "119. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -25420,7 +28174,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -25455,9 +28209,8 @@ c: 'a' 'a' 'b'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -25491,9 +28244,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/reduce.at:872: 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/reduce.at:951: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:872"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:951"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -25501,29 +28254,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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:951"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
@@ -25532,25 +28285,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:951: \$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' "reduce.at:872"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:951"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25558,29 +28311,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:872"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:951: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:951"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'a'
@@ -25594,7 +28347,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'a'
     4 A: . 'a' 'a' B
@@ -25604,7 +28357,7 @@ state 1
     A  go to state 6
 
 
-state 2
+State 2
 
     2 S: 'b' . A 'b'
     4 A: . 'a' 'a' B
@@ -25614,7 +28367,7 @@ state 2
     A  go to state 7
 
 
-state 3
+State 3
 
     3 S: 'c' . c
     4 A: . 'a' 'a' B
@@ -25627,35 +28380,35 @@ state 3
     c  go to state 10
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 11
 
 
-state 5
+State 5
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 12
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'a'
 
     'a'  shift, and go to state 13
 
 
-state 7
+State 7
 
     2 S: 'b' A . 'b'
 
     'b'  shift, and go to state 14
 
 
-state 8
+State 8
 
     4 A: 'a' . 'a' B
     7 c: 'a' . 'a' 'b'
@@ -25663,28 +28416,28 @@ state 8
     'a'  shift, and go to state 15
 
 
-state 9
+State 9
 
     8 c: A .  [\$end]
 
     \$end  reduce using rule 8 (c)
 
 
-state 10
+State 10
 
     3 S: 'c' c .  [\$end]
 
     \$end  reduce using rule 3 (S)
 
 
-state 11
+State 11
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 12
+State 12
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25697,21 +28450,21 @@ state 12
     Conflict between rule 6 and token 'a' resolved as reduce (%left 'a').
 
 
-state 13
+State 13
 
     1 S: 'a' A 'a' .  [\$end]
 
     \$end  reduce using rule 1 (S)
 
 
-state 14
+State 14
 
     2 S: 'b' A 'b' .  [\$end]
 
     \$end  reduce using rule 2 (S)
 
 
-state 15
+State 15
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25726,49 +28479,49 @@ state 15
     B  go to state 21
 
 
-state 16
+State 16
 
     5 B: 'a' .  ['a']
 
     'a'  reduce using rule 5 (B)
 
 
-state 17
+State 17
 
     4 A: 'a' 'a' B .  ['a']
 
     'a'  reduce using rule 4 (A)
 
 
-state 18
+State 18
 
     7 c: 'a' 'a' 'b' .  [\$end]
 
     \$end  reduce using rule 7 (c)
 
 
-state 19
+State 19
 
     4 A: 'a' . 'a' B
 
     'a'  shift, and go to state 22
 
 
-state 20
+State 20
 
     5 B: 'a' .  [\$end]
 
     \$end  reduce using rule 5 (B)
 
 
-state 21
+State 21
 
     4 A: 'a' 'a' B .  [\$end]
 
     \$end  reduce using rule 4 (A)
 
 
-state 22
+State 22
 
     4 A: 'a' 'a' . B
     5 B: . 'a'
@@ -25781,21 +28534,21 @@ state 22
     B  go to state 24
 
 
-state 23
+State 23
 
     5 B: 'a' .  ['b']
 
     'b'  reduce using rule 5 (B)
 
 
-state 24
+State 24
 
     4 A: 'a' 'a' B .  ['b']
 
     'b'  reduce using rule 4 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25809,46 +28562,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:951"
+( $at_check_trace; $BISON_C_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/reduce.at:951"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:951: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:951"
 ( $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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:872: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:872"
+$as_echo "$at_srcdir/reduce.at:951: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:951"
 ( $at_check_trace; 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/reduce.at:872"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:951"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -25859,13 +28625,13 @@ $at_traceon; }
   $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_119
+#AT_START_120
+at_fn_group_banner 120 'reduce.at:1220' \
   "no %define lr.type: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "112. $at_setup_line: testing $at_desc ..."
+  $as_echo "120. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -25880,7 +28646,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -25938,9 +28704,8 @@ B: 'd' 'e' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -25974,9 +28739,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/reduce.at:1141: 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/reduce.at:1220: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1141"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1220"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -25984,29 +28749,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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1220"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
@@ -26015,25 +28780,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26041,8 +28806,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -26051,21 +28816,21 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1141"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1220: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1220"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'f'
@@ -26083,7 +28848,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'f'
     2  | 'a' . B
@@ -26096,7 +28861,7 @@ state 1
     B  go to state 7
 
 
-state 2
+State 2
 
     3 S: 'b' . A 'f'
     4  | 'b' . B 'g'
@@ -26110,7 +28875,7 @@ state 2
     B  go to state 10
 
 
-state 3
+State 3
 
     6 S: 'c' . 'c' A 'g'
     7  | 'c' . 'c' B
@@ -26118,14 +28883,14 @@ state 3
     'c'  shift, and go to state 11
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 12
 
 
-state 5
+State 5
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -26133,21 +28898,21 @@ state 5
     'e'  shift, and go to state 13
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'f'
 
     'f'  shift, and go to state 14
 
 
-state 7
+State 7
 
     2 S: 'a' B .
 
     \$default  reduce using rule 2 (S)
 
 
-state 8
+State 8
 
     5 S: 'b' 'd' .  [\$end]
     8 A: 'd' . 'e'
@@ -26158,21 +28923,21 @@ state 8
     \$default  reduce using rule 5 (S)
 
 
-state 9
+State 9
 
     3 S: 'b' A . 'f'
 
     'f'  shift, and go to state 15
 
 
-state 10
+State 10
 
     4 S: 'b' B . 'g'
 
     'g'  shift, and go to state 16
 
 
-state 11
+State 11
 
     6 S: 'c' 'c' . A 'g'
     7  | 'c' 'c' . B
@@ -26185,14 +28950,14 @@ state 11
     B  go to state 18
 
 
-state 12
+State 12
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f', 'g']
     9 B: 'd' 'e' .  [\$end, 'g']
@@ -26203,49 +28968,49 @@ state 13
     \$default  reduce using rule 8 (A)
 
 
-state 14
+State 14
 
     1 S: 'a' A 'f' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 15
+State 15
 
     3 S: 'b' A 'f' .
 
     \$default  reduce using rule 3 (S)
 
 
-state 16
+State 16
 
     4 S: 'b' B 'g' .
 
     \$default  reduce using rule 4 (S)
 
 
-state 17
+State 17
 
     6 S: 'c' 'c' A . 'g'
 
     'g'  shift, and go to state 19
 
 
-state 18
+State 18
 
     7 S: 'c' 'c' B .
 
     \$default  reduce using rule 7 (S)
 
 
-state 19
+State 19
 
     6 S: 'c' 'c' A 'g' .
 
     \$default  reduce using rule 6 (S)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26260,35 +29025,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1220"
+( $at_check_trace; $BISON_C_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/reduce.at:1220"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1220: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -26297,7 +29075,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26308,13 +29086,13 @@ $at_traceon; }
   $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_120
+#AT_START_121
+at_fn_group_banner 121 'reduce.at:1220' \
   "%define lr.type lalr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "113. $at_setup_line: testing $at_desc ..."
+  $as_echo "121. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -26329,7 +29107,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -26388,9 +29166,8 @@ B: 'd' 'e' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -26424,9 +29201,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/reduce.at:1141: 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/reduce.at:1220: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1141"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1220"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -26434,29 +29211,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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1220"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
@@ -26465,25 +29242,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26491,8 +29268,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -26501,21 +29278,21 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1141"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1220: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1220"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'f'
@@ -26533,7 +29310,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'f'
     2  | 'a' . B
@@ -26546,7 +29323,7 @@ state 1
     B  go to state 7
 
 
-state 2
+State 2
 
     3 S: 'b' . A 'f'
     4  | 'b' . B 'g'
@@ -26560,7 +29337,7 @@ state 2
     B  go to state 10
 
 
-state 3
+State 3
 
     6 S: 'c' . 'c' A 'g'
     7  | 'c' . 'c' B
@@ -26568,14 +29345,14 @@ state 3
     'c'  shift, and go to state 11
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 12
 
 
-state 5
+State 5
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -26583,21 +29360,21 @@ state 5
     'e'  shift, and go to state 13
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'f'
 
     'f'  shift, and go to state 14
 
 
-state 7
+State 7
 
     2 S: 'a' B .
 
     \$default  reduce using rule 2 (S)
 
 
-state 8
+State 8
 
     5 S: 'b' 'd' .  [\$end]
     8 A: 'd' . 'e'
@@ -26608,21 +29385,21 @@ state 8
     \$default  reduce using rule 5 (S)
 
 
-state 9
+State 9
 
     3 S: 'b' A . 'f'
 
     'f'  shift, and go to state 15
 
 
-state 10
+State 10
 
     4 S: 'b' B . 'g'
 
     'g'  shift, and go to state 16
 
 
-state 11
+State 11
 
     6 S: 'c' 'c' . A 'g'
     7  | 'c' 'c' . B
@@ -26635,14 +29412,14 @@ state 11
     B  go to state 18
 
 
-state 12
+State 12
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f', 'g']
     9 B: 'd' 'e' .  [\$end, 'g']
@@ -26653,49 +29430,49 @@ state 13
     \$default  reduce using rule 8 (A)
 
 
-state 14
+State 14
 
     1 S: 'a' A 'f' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 15
+State 15
 
     3 S: 'b' A 'f' .
 
     \$default  reduce using rule 3 (S)
 
 
-state 16
+State 16
 
     4 S: 'b' B 'g' .
 
     \$default  reduce using rule 4 (S)
 
 
-state 17
+State 17
 
     6 S: 'c' 'c' A . 'g'
 
     'g'  shift, and go to state 19
 
 
-state 18
+State 18
 
     7 S: 'c' 'c' B .
 
     \$default  reduce using rule 7 (S)
 
 
-state 19
+State 19
 
     6 S: 'c' 'c' A 'g' .
 
     \$default  reduce using rule 6 (S)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26710,35 +29487,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1220"
+( $at_check_trace; $BISON_C_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/reduce.at:1220"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1220: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 1 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -26747,7 +29537,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26758,13 +29548,13 @@ $at_traceon; }
   $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:1141' \
+#AT_STOP_121
+#AT_START_122
+at_fn_group_banner 122 'reduce.at:1220' \
   "%define lr.type ielr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "114. $at_setup_line: testing $at_desc ..."
+  $as_echo "122. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -26779,7 +29569,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -26838,9 +29628,8 @@ B: 'd' 'e' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -26874,9 +29663,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/reduce.at:1141: 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/reduce.at:1220: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1141"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1220"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -26884,29 +29673,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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1220"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
@@ -26915,25 +29704,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -26941,29 +29730,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1141"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1220: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1220"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'f'
@@ -26981,7 +29770,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'f'
     2  | 'a' . B
@@ -26994,7 +29783,7 @@ state 1
     B  go to state 7
 
 
-state 2
+State 2
 
     3 S: 'b' . A 'f'
     4  | 'b' . B 'g'
@@ -27008,7 +29797,7 @@ state 2
     B  go to state 10
 
 
-state 3
+State 3
 
     6 S: 'c' . 'c' A 'g'
     7  | 'c' . 'c' B
@@ -27016,14 +29805,14 @@ state 3
     'c'  shift, and go to state 11
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 12
 
 
-state 5
+State 5
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -27031,21 +29820,21 @@ state 5
     'e'  shift, and go to state 20
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'f'
 
     'f'  shift, and go to state 14
 
 
-state 7
+State 7
 
     2 S: 'a' B .
 
     \$default  reduce using rule 2 (S)
 
 
-state 8
+State 8
 
     5 S: 'b' 'd' .  [\$end]
     8 A: 'd' . 'e'
@@ -27056,21 +29845,21 @@ state 8
     \$default  reduce using rule 5 (S)
 
 
-state 9
+State 9
 
     3 S: 'b' A . 'f'
 
     'f'  shift, and go to state 15
 
 
-state 10
+State 10
 
     4 S: 'b' B . 'g'
 
     'g'  shift, and go to state 16
 
 
-state 11
+State 11
 
     6 S: 'c' 'c' . A 'g'
     7  | 'c' 'c' . B
@@ -27083,14 +29872,14 @@ state 11
     B  go to state 18
 
 
-state 12
+State 12
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f']
     9 B: 'd' 'e' .  ['g']
@@ -27099,49 +29888,49 @@ state 13
     \$default  reduce using rule 8 (A)
 
 
-state 14
+State 14
 
     1 S: 'a' A 'f' .
 
     \$default  reduce using rule 1 (S)
 
 
-state 15
+State 15
 
     3 S: 'b' A 'f' .
 
     \$default  reduce using rule 3 (S)
 
 
-state 16
+State 16
 
     4 S: 'b' B 'g' .
 
     \$default  reduce using rule 4 (S)
 
 
-state 17
+State 17
 
     6 S: 'c' 'c' A . 'g'
 
     'g'  shift, and go to state 19
 
 
-state 18
+State 18
 
     7 S: 'c' 'c' B .
 
     \$default  reduce using rule 7 (S)
 
 
-state 19
+State 19
 
     6 S: 'c' 'c' A 'g' .
 
     \$default  reduce using rule 6 (S)
 
 
-state 20
+State 20
 
     8 A: 'd' 'e' .  ['f', 'g']
     9 B: 'd' 'e' .  [\$end]
@@ -27150,7 +29939,7 @@ state 20
     \$default  reduce using rule 8 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27165,42 +29954,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1220"
+( $at_check_trace; $BISON_C_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/reduce.at:1220"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1220: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; 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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27211,13 +30013,13 @@ $at_traceon; }
   $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:1141' \
+#AT_STOP_122
+#AT_START_123
+at_fn_group_banner 123 'reduce.at:1220' \
   "%define lr.type canonical-lr: Split During Added Lookahead Propagation" "" 6
 at_xfail=no
 (
-  $as_echo "115. $at_setup_line: testing $at_desc ..."
+  $as_echo "123. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27232,7 +30034,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -27291,9 +30093,8 @@ B: 'd' 'e' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -27327,9 +30128,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/reduce.at:1141: 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/reduce.at:1220: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1141"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1220"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -27337,29 +30138,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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1220"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
@@ -27368,25 +30169,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1220: \$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' "reduce.at:1141"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1220"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27394,29 +30195,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1141"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1220: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1220"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . S \$end
     1 S: . 'a' A 'f'
@@ -27434,7 +30235,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     S  go to state 4
 
 
-state 1
+State 1
 
     1 S: 'a' . A 'f'
     2  | 'a' . B
@@ -27447,7 +30248,7 @@ state 1
     B  go to state 7
 
 
-state 2
+State 2
 
     3 S: 'b' . A 'f'
     4  | 'b' . B 'g'
@@ -27461,7 +30262,7 @@ state 2
     B  go to state 10
 
 
-state 3
+State 3
 
     6 S: 'c' . 'c' A 'g'
     7  | 'c' . 'c' B
@@ -27469,14 +30270,14 @@ state 3
     'c'  shift, and go to state 11
 
 
-state 4
+State 4
 
     0 \$accept: S . \$end
 
     \$end  shift, and go to state 12
 
 
-state 5
+State 5
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -27484,21 +30285,21 @@ state 5
     'e'  shift, and go to state 13
 
 
-state 6
+State 6
 
     1 S: 'a' A . 'f'
 
     'f'  shift, and go to state 14
 
 
-state 7
+State 7
 
     2 S: 'a' B .  [\$end]
 
     \$end  reduce using rule 2 (S)
 
 
-state 8
+State 8
 
     5 S: 'b' 'd' .  [\$end]
     8 A: 'd' . 'e'
@@ -27509,21 +30310,21 @@ state 8
     \$end  reduce using rule 5 (S)
 
 
-state 9
+State 9
 
     3 S: 'b' A . 'f'
 
     'f'  shift, and go to state 15
 
 
-state 10
+State 10
 
     4 S: 'b' B . 'g'
 
     'g'  shift, and go to state 16
 
 
-state 11
+State 11
 
     6 S: 'c' 'c' . A 'g'
     7  | 'c' 'c' . B
@@ -27536,14 +30337,14 @@ state 11
     B  go to state 18
 
 
-state 12
+State 12
 
     0 \$accept: S \$end .
 
     \$default  accept
 
 
-state 13
+State 13
 
     8 A: 'd' 'e' .  ['f']
     9 B: 'd' 'e' .  [\$end]
@@ -27552,49 +30353,49 @@ state 13
     'f'   reduce using rule 8 (A)
 
 
-state 14
+State 14
 
     1 S: 'a' A 'f' .  [\$end]
 
     \$end  reduce using rule 1 (S)
 
 
-state 15
+State 15
 
     3 S: 'b' A 'f' .  [\$end]
 
     \$end  reduce using rule 3 (S)
 
 
-state 16
+State 16
 
     4 S: 'b' B 'g' .  [\$end]
 
     \$end  reduce using rule 4 (S)
 
 
-state 17
+State 17
 
     6 S: 'c' 'c' A . 'g'
 
     'g'  shift, and go to state 19
 
 
-state 18
+State 18
 
     7 S: 'c' 'c' B .  [\$end]
 
     \$end  reduce using rule 7 (S)
 
 
-state 19
+State 19
 
     6 S: 'c' 'c' A 'g' .  [\$end]
 
     \$end  reduce using rule 6 (S)
 
 
-state 20
+State 20
 
     8 A: 'd' 'e' .  ['f']
     9 B: 'd' 'e' .  ['g']
@@ -27603,7 +30404,7 @@ state 20
     'g'  reduce using rule 9 (B)
 
 
-state 21
+State 21
 
     8 A: 'd' . 'e'
     9 B: 'd' . 'e'
@@ -27611,7 +30412,7 @@ state 21
     'e'  shift, and go to state 22
 
 
-state 22
+State 22
 
     8 A: 'd' 'e' .  ['g']
     9 B: 'd' 'e' .  [\$end]
@@ -27620,7 +30421,7 @@ state 22
     'g'   reduce using rule 8 (A)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27634,46 +30435,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1220"
+( $at_check_trace; $BISON_C_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/reduce.at:1220"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1220: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1220"
 ( $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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1141: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1141"
+$as_echo "$at_srcdir/reduce.at:1220: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1220"
 ( $at_check_trace; 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/reduce.at:1141"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27684,13 +30498,13 @@ $at_traceon; }
   $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_123
+#AT_START_124
+at_fn_group_banner 124 'reduce.at:1550' \
   "no %define lr.default-reductions" "               " 6
 at_xfail=no
 (
-  $as_echo "116. $at_setup_line: testing $at_desc ..."
+  $as_echo "124. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -27705,7 +30519,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -27739,9 +30553,8 @@ c: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -27775,9 +30588,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/reduce.at:1471: 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/reduce.at:1550: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1471"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1550"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -27785,29 +30598,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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1550"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
@@ -27816,25 +30629,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27842,29 +30655,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1471"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1550: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1550"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . a b
@@ -27878,21 +30691,21 @@ echo >>"$at_stdout"; $as_echo "state 0
     a      go to state 3
 
 
-state 1
+State 1
 
     4 a: 'a' .
 
     \$default  reduce using rule 4 (a)
 
 
-state 2
+State 2
 
     0 \$accept: start . \$end
 
     \$end  shift, and go to state 4
 
 
-state 3
+State 3
 
     1 start: a . b
     2      | a . b 'a'
@@ -27907,14 +30720,14 @@ state 3
     c  go to state 6
 
 
-state 4
+State 4
 
     0 \$accept: start \$end .
 
     \$default  accept
 
 
-state 5
+State 5
 
     1 start: a b .  [\$end]
     2      | a b . 'a'
@@ -27924,28 +30737,28 @@ state 5
     \$default  reduce using rule 1 (start)
 
 
-state 6
+State 6
 
     3 start: a c . 'b'
 
     'b'  shift, and go to state 8
 
 
-state 7
+State 7
 
     2 start: a b 'a' .
 
     \$default  reduce using rule 2 (start)
 
 
-state 8
+State 8
 
     3 start: a c 'b' .
 
     \$default  reduce using rule 3 (start)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -27960,42 +30773,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1550"
+( $at_check_trace; $BISON_C_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/reduce.at:1550"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1550: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; 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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28006,13 +30832,13 @@ $at_traceon; }
   $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_124
+#AT_START_125
+at_fn_group_banner 125 'reduce.at:1550' \
   "%define lr.default-reductions most" "             " 6
 at_xfail=no
 (
-  $as_echo "117. $at_setup_line: testing $at_desc ..."
+  $as_echo "125. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28027,7 +30853,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -28061,9 +30887,8 @@ c: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -28097,9 +30922,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/reduce.at:1471: 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/reduce.at:1550: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1471"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1550"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28107,29 +30932,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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1550"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
@@ -28138,25 +30963,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28164,29 +30989,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1471"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1550: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1550"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . a b
@@ -28200,21 +31025,21 @@ echo >>"$at_stdout"; $as_echo "state 0
     a      go to state 3
 
 
-state 1
+State 1
 
     4 a: 'a' .
 
     \$default  reduce using rule 4 (a)
 
 
-state 2
+State 2
 
     0 \$accept: start . \$end
 
     \$end  shift, and go to state 4
 
 
-state 3
+State 3
 
     1 start: a . b
     2      | a . b 'a'
@@ -28229,14 +31054,14 @@ state 3
     c  go to state 6
 
 
-state 4
+State 4
 
     0 \$accept: start \$end .
 
     \$default  accept
 
 
-state 5
+State 5
 
     1 start: a b .  [\$end]
     2      | a b . 'a'
@@ -28246,28 +31071,28 @@ state 5
     \$default  reduce using rule 1 (start)
 
 
-state 6
+State 6
 
     3 start: a c . 'b'
 
     'b'  shift, and go to state 8
 
 
-state 7
+State 7
 
     2 start: a b 'a' .
 
     \$default  reduce using rule 2 (start)
 
 
-state 8
+State 8
 
     3 start: a c 'b' .
 
     \$default  reduce using rule 3 (start)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28282,42 +31107,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1550"
+( $at_check_trace; $BISON_C_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/reduce.at:1550"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1550: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; 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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28328,13 +31166,13 @@ $at_traceon; }
   $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 'reduce.at:1471' \
+#AT_STOP_125
+#AT_START_126
+at_fn_group_banner 126 'reduce.at:1550' \
   "%define lr.default-reductions consistent" "       " 6
 at_xfail=no
 (
-  $as_echo "118. $at_setup_line: testing $at_desc ..."
+  $as_echo "126. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28349,7 +31187,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -28383,9 +31221,8 @@ c: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -28419,9 +31256,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/reduce.at:1471: 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/reduce.at:1550: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1471"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1550"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28429,29 +31266,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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1550"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
@@ -28460,25 +31297,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28486,29 +31323,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1471"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1550: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1550"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . a b
@@ -28522,21 +31359,21 @@ echo >>"$at_stdout"; $as_echo "state 0
     a      go to state 3
 
 
-state 1
+State 1
 
     4 a: 'a' .
 
     \$default  reduce using rule 4 (a)
 
 
-state 2
+State 2
 
     0 \$accept: start . \$end
 
     \$end  shift, and go to state 4
 
 
-state 3
+State 3
 
     1 start: a . b
     2      | a . b 'a'
@@ -28552,14 +31389,14 @@ state 3
     c  go to state 6
 
 
-state 4
+State 4
 
     0 \$accept: start \$end .
 
     \$default  accept
 
 
-state 5
+State 5
 
     1 start: a b .  [\$end]
     2      | a b . 'a'
@@ -28569,28 +31406,28 @@ state 5
     \$end  reduce using rule 1 (start)
 
 
-state 6
+State 6
 
     3 start: a c . 'b'
 
     'b'  shift, and go to state 8
 
 
-state 7
+State 7
 
     2 start: a b 'a' .
 
     \$default  reduce using rule 2 (start)
 
 
-state 8
+State 8
 
     3 start: a c 'b' .
 
     \$default  reduce using rule 3 (start)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28605,42 +31442,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1550"
+( $at_check_trace; $BISON_C_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/reduce.at:1550"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1550: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; 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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28651,13 +31501,13 @@ $at_traceon; }
   $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 'reduce.at:1471' \
+#AT_STOP_126
+#AT_START_127
+at_fn_group_banner 127 'reduce.at:1550' \
   "%define lr.default-reductions accepting" "        " 6
 at_xfail=no
 (
-  $as_echo "119. $at_setup_line: testing $at_desc ..."
+  $as_echo "127. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -28672,7 +31522,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -28706,9 +31556,8 @@ c: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -28742,9 +31591,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/reduce.at:1471: 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/reduce.at:1550: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1471"
+at_fn_check_prepare_notrace 'an embedded newline' "reduce.at:1550"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -28752,29 +31601,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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "reduce.at:1550"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
@@ -28783,25 +31632,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$XSLTPROC \\
+$as_echo "$at_srcdir/reduce.at:1550: \$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' "reduce.at:1471"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "reduce.at:1550"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28809,29 +31658,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; bison --report=all --defines -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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed -n '/^state 0\$/,\$p' input.output"
-at_fn_check_prepare_dynamic "sed -n '/^state 0$/,$p' input.output" "reduce.at:1471"
-( $at_check_trace; sed -n '/^state 0$/,$p' input.output
+$as_echo "$at_srcdir/reduce.at:1550: sed -n '/^State 0\$/,\$p' input.output"
+at_fn_check_prepare_dynamic "sed -n '/^State 0$/,$p' input.output" "reduce.at:1550"
+( $at_check_trace; sed -n '/^State 0$/,$p' input.output
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . a b
@@ -28845,7 +31694,7 @@ echo >>"$at_stdout"; $as_echo "state 0
     a      go to state 3
 
 
-state 1
+State 1
 
     4 a: 'a' .  [\$end, 'a', 'b']
 
@@ -28854,14 +31703,14 @@ state 1
     'b'   reduce using rule 4 (a)
 
 
-state 2
+State 2
 
     0 \$accept: start . \$end
 
     \$end  shift, and go to state 4
 
 
-state 3
+State 3
 
     1 start: a . b
     2      | a . b 'a'
@@ -28877,14 +31726,14 @@ state 3
     c  go to state 6
 
 
-state 4
+State 4
 
     0 \$accept: start \$end .
 
     \$default  accept
 
 
-state 5
+State 5
 
     1 start: a b .  [\$end]
     2      | a b . 'a'
@@ -28894,28 +31743,28 @@ state 5
     \$end  reduce using rule 1 (start)
 
 
-state 6
+State 6
 
     3 start: a c . 'b'
 
     'b'  shift, and go to state 8
 
 
-state 7
+State 7
 
     2 start: a b 'a' .  [\$end]
 
     \$end  reduce using rule 2 (start)
 
 
-state 8
+State 8
 
     3 start: a c 'b' .  [\$end]
 
     \$end  reduce using rule 3 (start)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28930,42 +31779,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "reduce.at:1550"
+( $at_check_trace; $BISON_C_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/reduce.at:1550"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/reduce.at:1550: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "reduce.at:1550"
 ( $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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/reduce.at:1471: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "reduce.at:1471"
+$as_echo "$at_srcdir/reduce.at:1550: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "reduce.at:1550"
 ( $at_check_trace; 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/reduce.at:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/reduce.at:1550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -28976,13 +31838,13 @@ $at_traceon; }
   $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:124' \
+#AT_STOP_127
+#AT_START_128
+at_fn_group_banner 128 'synclines.at:150' \
   "Prologue syncline" "                              " 7
 at_xfail=no
 (
-  $as_echo "120. $at_setup_line: testing $at_desc ..."
+  $as_echo "128. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29005,20 +31867,20 @@ at_xfail=no
 
 cat >syncline.c <<'_ATEOF'
 #error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 _ATEOF
 
 
 { set +x
-$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"
+$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"
 ( $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:124"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29042,13 +31904,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29058,23 +31921,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:124: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:150: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:124"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29082,21 +31984,21 @@ 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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$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"
 ( $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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29104,7 +32006,7 @@ $at_traceon; }
 cat >input.y <<'_ATEOF'
 %{
 #error "2"
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -29118,9 +32020,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:124: 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:150: 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:124"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
 ( $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>&-
@@ -29128,29 +32030,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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:124: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:150: \$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:124"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:150"
 ( $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
@@ -29159,25 +32061,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:124: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:150: \$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:124"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:150"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29185,29 +32087,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:124: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:124"
+$as_echo "$at_srcdir/synclines.at:150: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:150"
 ( $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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$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"
 ( $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:124"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29231,13 +32133,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29247,23 +32150,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:124: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:150: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:124"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:150"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29271,14 +32213,14 @@ 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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:124: cat stdout"
-at_fn_check_prepare_trace "synclines.at:124"
+$as_echo "$at_srcdir/synclines.at:150: cat stdout"
+at_fn_check_prepare_trace "synclines.at:150"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -29287,7 +32229,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:124"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29296,13 +32238,13 @@ $at_traceon; }
   $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:142' \
+#AT_STOP_128
+#AT_START_129
+at_fn_group_banner 129 'synclines.at:168' \
   "%union syncline" "                                " 7
 at_xfail=no
 (
-  $as_echo "121. $at_setup_line: testing $at_desc ..."
+  $as_echo "129. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29325,20 +32267,20 @@ at_xfail=no
 
 cat >syncline.c <<'_ATEOF'
 #error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 _ATEOF
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:168: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:168"
 ( $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:142"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29362,13 +32304,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29378,23 +32321,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:142: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:168: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:142"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:168"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29402,21 +32384,21 @@ 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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:168: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:168"
 ( $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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29427,7 +32409,7 @@ cat >input.y <<'_ATEOF'
   char dummy;
 }
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -29441,9 +32423,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:142: 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:168: 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:142"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:168"
 ( $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>&-
@@ -29451,29 +32433,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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:168: 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:168"
 ( $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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:142: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:168: \$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:142"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:168"
 ( $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
@@ -29482,25 +32464,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:142: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:168: \$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:142"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:168"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29508,29 +32490,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:142: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:142"
+$as_echo "$at_srcdir/synclines.at:168: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:168"
 ( $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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:168: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:168"
 ( $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:142"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29554,13 +32536,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29570,23 +32553,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:142: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:168: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:142"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:168"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29594,14 +32616,14 @@ 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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:142: cat stdout"
-at_fn_check_prepare_trace "synclines.at:142"
+$as_echo "$at_srcdir/synclines.at:168: cat stdout"
+at_fn_check_prepare_trace "synclines.at:168"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -29610,7 +32632,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:142"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29619,13 +32641,13 @@ $at_traceon; }
   $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:163' \
+#AT_STOP_129
+#AT_START_130
+at_fn_group_banner 130 'synclines.at:189' \
   "Postprologue syncline" "                          " 7
 at_xfail=no
 (
-  $as_echo "122. $at_setup_line: testing $at_desc ..."
+  $as_echo "130. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29648,20 +32670,20 @@ at_xfail=no
 
 cat >syncline.c <<'_ATEOF'
 #error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 _ATEOF
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:189: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:189"
 ( $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:163"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29685,13 +32707,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29701,23 +32724,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:163: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:189: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:163"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:189"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29725,28 +32787,28 @@ 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:189: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:189"
 ( $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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input.y <<'_ATEOF'
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %union
@@ -29767,9 +32829,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:163: 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:189: 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:163"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:189"
 ( $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>&-
@@ -29777,29 +32839,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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:189: 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:189"
 ( $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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:163: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:189: \$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:163"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:189"
 ( $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
@@ -29808,25 +32870,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:163: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:189: \$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:163"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:189"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29834,29 +32896,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:163: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:163"
+$as_echo "$at_srcdir/synclines.at:189: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:189"
 ( $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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:189: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:189"
 ( $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:163"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29880,13 +32942,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -29896,23 +32959,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:163: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:189: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:163"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:189"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -29920,14 +33022,14 @@ 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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:163: cat stdout"
-at_fn_check_prepare_trace "synclines.at:163"
+$as_echo "$at_srcdir/synclines.at:189: cat stdout"
+at_fn_check_prepare_trace "synclines.at:189"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -29936,7 +33038,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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:189"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -29945,13 +33047,13 @@ $at_traceon; }
   $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 'synclines.at:187' \
+#AT_STOP_130
+#AT_START_131
+at_fn_group_banner 131 'synclines.at:213' \
   "Action syncline" "                                " 7
 at_xfail=no
 (
-  $as_echo "123. $at_setup_line: testing $at_desc ..."
+  $as_echo "131. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -29974,20 +33076,20 @@ at_xfail=no
 
 cat >syncline.c <<'_ATEOF'
 #error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 _ATEOF
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:213: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:213"
 ( $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:187"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30011,13 +33113,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -30027,23 +33130,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:187: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:213: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:187"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:213"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -30051,28 +33193,28 @@ 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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:213: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:213"
 ( $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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input.y <<'_ATEOF'
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -30088,9 +33230,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:187: 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:213: 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:187"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:213"
 ( $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>&-
@@ -30098,29 +33240,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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:213: 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:213"
 ( $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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:187: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:213: \$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:187"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:213"
 ( $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
@@ -30129,25 +33271,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:187: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:213: \$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:187"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:213"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30155,29 +33297,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:187: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:187"
+$as_echo "$at_srcdir/synclines.at:213: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:213"
 ( $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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:213: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:213"
 ( $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:187"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30201,13 +33343,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -30217,23 +33360,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:187: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:213: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:187"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:213"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -30241,14 +33423,14 @@ 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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:187: cat stdout"
-at_fn_check_prepare_trace "synclines.at:187"
+$as_echo "$at_srcdir/synclines.at:213: cat stdout"
+at_fn_check_prepare_trace "synclines.at:213"
 ( $at_check_trace; cat stdout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -30257,7 +33439,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:187"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:213"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30266,13 +33448,13 @@ $at_traceon; }
   $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 'synclines.at:206' \
+#AT_STOP_131
+#AT_START_132
+at_fn_group_banner 132 'synclines.at:232' \
   "Epilogue syncline" "                              " 7
 at_xfail=no
 (
-  $as_echo "124. $at_setup_line: testing $at_desc ..."
+  $as_echo "132. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30295,20 +33477,20 @@ at_xfail=no
 
 cat >syncline.c <<'_ATEOF'
 #error "1"
-int i; // avoids -pedantic warning about an empty translation unit
+int i; /* avoids -pedantic warning about an empty translation unit. */
 _ATEOF
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:232: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:232"
 ( $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:206"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30332,13 +33514,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -30348,23 +33531,62 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:206: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:232: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
-  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:206"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:232"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
-  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -30372,28 +33594,28 @@ 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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:232: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:232"
 ( $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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input.y <<'_ATEOF'
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -30408,9 +33630,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:206: 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:232: 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:206"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:232"
 ( $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>&-
@@ -30418,29 +33640,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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:232: 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:232"
 ( $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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:206: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:232: \$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:206"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:232"
 ( $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
@@ -30449,25 +33671,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/synclines.at:206: \$XSLTPROC \\
+$as_echo "$at_srcdir/synclines.at:232: \$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:206"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:232"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30475,29 +33697,29 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/synclines.at:206: bison -o input.c input.y"
-at_fn_check_prepare_trace "synclines.at:206"
+$as_echo "$at_srcdir/synclines.at:232: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:232"
 ( $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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/synclines.at:232: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:232"
 ( $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:206"
+at_fn_check_skip $at_status "$at_srcdir/synclines.at:232"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30521,13 +33743,14 @@ $at_traceon; }
 # =>
 #   input.y:4: #error "8"
 #
-# The message may include a caret-error:
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
 #
 #   input.y:1:2: error: #error "1"
 #    #error "1"
 #     ^
 #
-# And possibly distcc adds its bits.
+# Possibly distcc adds its bits.
 #
 #   distcc[33187] ERROR: compile (null) on localhost failed
 #   syncline.c:1:2: error: #error "1"
@@ -30537,23 +33760,464 @@ $at_traceon; }
 #
 #   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:206: perl -p -0777 - stderr <<\\EOF
+$as_echo "$at_srcdir/synclines.at:232: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\\[\\d+\\] .*\\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
   s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
-  s/^([^:]+:\\d+):[^#]*( #error)/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:232"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
+  s/^distcc\[\d+\] .*\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
+  s/^[^:]*: In function '[^']+':\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /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:232"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:232: cat stdout"
+at_fn_check_prepare_trace "synclines.at:232"
+( $at_check_trace; cat stdout
+) >>"$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 "input.y:8: #error \"8\"
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:232"
+$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_132
+#AT_START_133
+at_fn_group_banner 133 'synclines.at:249' \
+  "%code top syncline" "                             " 7
+at_xfail=no
+(
+  $as_echo "133. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+# It seems impossible to find a generic scheme to check the location
+# of an error.  Even requiring GCC is not sufficient, since for instance
+# the version modified by Apple:
+#
+# | Reading specs from /usr/libexec/gcc/darwin/ppc/2.95.2/specs
+# | Apple Computer, Inc. version gcc-934.3, based on gcc version 2.95.2
+# | 19991024 (release) configure:2124: $? = 0
+#
+# instead of:
+#
+# | input.y:2: #error "2"
+#
+# it reports:
+#
+# | input.y:2: "2"
+# | cpp-precomp: warning: errors during smart preprocessing, retrying in basic mode
+
+cat >syncline.c <<'_ATEOF'
+#error "1"
+int i; /* avoids -pedantic warning about an empty translation unit. */
+_ATEOF
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: \$CC \$CFLAGS \$CPPFLAGS -c syncline.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c syncline.c" "synclines.at:249"
+( $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:249"
+$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
+#   input.y:4.2: #error "4"    or
+#   input.y:4:2: error: #error "4"
+# =>
+#   input.y:4: #error "4"
+#
+# It may also issue more context information:
+#
+#   input.y: In function 'yyparse':
+#   input.y:8: #error "8"
+# =>
+#   input.y:4: #error "8"
+#
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
+#
+# Possibly distcc adds its bits.
+#
+#   distcc[33187] ERROR: compile (null) on localhost failed
+#   syncline.c:1:2: error: #error "1"
+#   distcc[33185] ERROR: compile syncline.c on localhost failed
+#
+# or even
+#
+#   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\\n//gm;
-  s/^\\ +#error.*\\n\\ *\\^\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
 EOF
 "
-at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:206"
-( $at_check_trace; perl -p -0777 - stderr <<\EOF
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:249"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
   s/^distcc\[\d+\] .*\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
+  s/^[^:]*: In function '[^']+':\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
   s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
-  s/^([^:]+:\d+):[^#]*( #error)/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /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:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: test \"\`cat stdout\`\" = 'syncline.c:1: #error \"1\"' || exit 77"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:249"
+( $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:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+cat >input.y <<'_ATEOF'
+%code top {
+#error "2"
+}
+%{
+void yyerror ( const char *msg);
+int yylex (void);
+%}
+%%
+exp: '0';
+%%
+_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/synclines.at:249: 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:249"
+( $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/synclines.at:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/synclines.at:249: 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:249"
+( $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:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:249: \$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:249"
+( $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/synclines.at:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:249: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:249"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: bison -o input.c input.y"
+at_fn_check_prepare_trace "synclines.at:249"
+( $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:249"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: \$CC \$CFLAGS \$CPPFLAGS -c input.c"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c input.c" "synclines.at:249"
+( $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:249"
+$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
+#   input.y:4.2: #error "4"    or
+#   input.y:4:2: error: #error "4"
+# =>
+#   input.y:4: #error "4"
+#
+# It may also issue more context information:
+#
+#   input.y: In function 'yyparse':
+#   input.y:8: #error "8"
+# =>
+#   input.y:4: #error "8"
+#
+# The message may include a caret-error (indented by GCC 4.8,
+# not by clang 3.2):
+#
+#   input.y:1:2: error: #error "1"
+#    #error "1"
+#     ^
+#
+# Possibly distcc adds its bits.
+#
+#   distcc[33187] ERROR: compile (null) on localhost failed
+#   syncline.c:1:2: error: #error "1"
+#   distcc[33185] ERROR: compile syncline.c on localhost failed
+#
+# or even
+#
+#   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
+#
+# The compiler might end by the number of messages issued (Clang 3.2):
+#
+#    syncline.c:1:2: error: "1"
+#    #error "1"
+#     ^
+#    1 error generated.
+#
+# When c++ is used to compiler C, we might have more messages (Clang 3.2):
+#
+#    clang: warning: treating 'c' input as 'c++' when in C++ mode, this behavior is deprecated
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:249: \$PERL -p -0777 - stderr <<\\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
+  s/^distcc\\[\\d+\\] .*\\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\\+\\+'.*\\n//gm;
+  # Function context.
+  s/^[^:]*: In function '[^']+':\\n//gm;
+  # Caret error.
+  s/^ *#error.*\\n *\\^\\n//gm;
+  # Number of errors.
+  s/^1 error generated\\.\\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\\d+)[.:][^:]+:(.+)\$/\$1:\$2/gm;
+  # Map all combinations of \"error: \" and \"#error: \" to \"#error \".
+  s/^([^:]+:\\d+):( |#error|error|:)+/\$1: #error /gm;
+EOF
+"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:249"
+( $at_check_trace; $PERL -p -0777 - stderr <<\EOF
+  # 1. Remove useless lines.
+
+  # distcc clutter.
+  s/^distcc\[\d+\] .*\n//gm;
+  # c vs. c++.
+  s/^clang: warning: treating 'c' input as 'c\+\+'.*\n//gm;
+  # Function context.
   s/^[^:]*: In function '[^']+':\n//gm;
-  s/^\ +#error.*\n\ *\^\n//gm;
+  # Caret error.
+  s/^ *#error.*\n *\^\n//gm;
+  # Number of errors.
+  s/^1 error generated\.\n//gm;
+
+  # 2. Normalize the lines we kept.
+
+  # Remove column.
+  s/^([^:]+:\d+)[.:][^:]+:(.+)$/$1:$2/gm;
+  # Map all combinations of "error: " and "#error: " to "#error ".
+  s/^([^:]+:\d+):( |#error|error|:)+/$1: #error /gm;
 EOF
 
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -30561,23 +34225,23 @@ 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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:249"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/synclines.at:206: cat stdout"
-at_fn_check_prepare_trace "synclines.at:206"
+$as_echo "$at_srcdir/synclines.at:249: cat stdout"
+at_fn_check_prepare_trace "synclines.at:249"
 ( $at_check_trace; cat stdout
 ) >>"$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 "input.y:8: #error \"8\"
+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:206"
+at_fn_check_status 0 $at_status "$at_srcdir/synclines.at:249"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -30586,13 +34250,553 @@ $at_traceon; }
   $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:57' \
+#AT_STOP_133
+#AT_START_134
+at_fn_group_banner 134 'synclines.at:290' \
+  "%no-lines" "                                      " 7
+at_xfail=no
+(
+  $as_echo "134. $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 "yacc.c" %defines
+%{
+void yyerror ( const char *msg);
+int yylex (void);
+%}
+%%
+exp: '0'
+_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/synclines.at:290: 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 --no-lines -o input.c -d input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:290"
+( $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 --no-lines -o input.c -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/synclines.at:290"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/synclines.at:290: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.c -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 --no-lines -o input.c -d input.y" "synclines.at:290"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.c -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/synclines.at:290"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:290: \$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:290"
+( $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/synclines.at:290"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:290: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:290"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:290"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/synclines.at:290: bison --no-lines -o input.c -d input.y"
+at_fn_check_prepare_trace "synclines.at:290"
+( $at_check_trace; bison --no-lines -o input.c -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/synclines.at:290"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:290: grep '#line' *.c *.h"
+at_fn_check_prepare_trace "synclines.at:290"
+( $at_check_trace; grep '#line' *.c *.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 1 $at_status "$at_srcdir/synclines.at:290"
+$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_134
+#AT_START_135
+at_fn_group_banner 135 'synclines.at:291' \
+  "%no-lines" "                                      " 7
+at_xfail=no
+(
+  $as_echo "135. $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.c" %defines
+%{
+void yyerror ( const char *msg);
+int yylex (void);
+%}
+%%
+exp: '0'
+_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/synclines.at:291: 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 --no-lines -o input.c -d input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:291"
+( $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 --no-lines -o input.c -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/synclines.at:291"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/synclines.at:291: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.c -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 --no-lines -o input.c -d input.y" "synclines.at:291"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.c -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/synclines.at:291"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:291: \$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:291"
+( $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/synclines.at:291"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:291: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:291"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:291"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/synclines.at:291: bison --no-lines -o input.c -d input.y"
+at_fn_check_prepare_trace "synclines.at:291"
+( $at_check_trace; bison --no-lines -o input.c -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/synclines.at:291"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:291: grep '#line' *.c *.h"
+at_fn_check_prepare_trace "synclines.at:291"
+( $at_check_trace; grep '#line' *.c *.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 1 $at_status "$at_srcdir/synclines.at:291"
+$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_135
+#AT_START_136
+at_fn_group_banner 136 'synclines.at:292' \
+  "%no-lines" "                                      " 7
+at_xfail=no
+(
+  $as_echo "136. $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
+%{
+
+int yylex (yy::parser::semantic_type *lvalp);
+%}
+%%
+exp: '0'
+_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/synclines.at:292: 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 --no-lines -o input.cc -d input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:292"
+( $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 --no-lines -o input.cc -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/synclines.at:292"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/synclines.at:292: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.cc -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 --no-lines -o input.cc -d input.y" "synclines.at:292"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.cc -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/synclines.at:292"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:292: \$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:292"
+( $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/synclines.at:292"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:292: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:292"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:292"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/synclines.at:292: bison --no-lines -o input.cc -d input.y"
+at_fn_check_prepare_trace "synclines.at:292"
+( $at_check_trace; bison --no-lines -o input.cc -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/synclines.at:292"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:292: grep '#line' *.cc *.hh"
+at_fn_check_prepare_trace "synclines.at:292"
+( $at_check_trace; grep '#line' *.cc *.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 1 $at_status "$at_srcdir/synclines.at:292"
+$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_136
+#AT_START_137
+at_fn_group_banner 137 'synclines.at:293' \
+  "%no-lines" "                                      " 7
+at_xfail=no
+(
+  $as_echo "137. $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
+%{
+
+int yylex (yy::parser::semantic_type *lvalp);
+%}
+%%
+exp: '0'
+_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/synclines.at:293: 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 --no-lines -o input.cc -d input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "synclines.at:293"
+( $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 --no-lines -o input.cc -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/synclines.at:293"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/synclines.at:293: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.cc -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 --no-lines -o input.cc -d input.y" "synclines.at:293"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --no-lines -o input.cc -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/synclines.at:293"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:293: \$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:293"
+( $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/synclines.at:293"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/synclines.at:293: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "synclines.at:293"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:293"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/synclines.at:293: bison --no-lines -o input.cc -d input.y"
+at_fn_check_prepare_trace "synclines.at:293"
+( $at_check_trace; bison --no-lines -o input.cc -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/synclines.at:293"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/synclines.at:293: grep '#line' *.cc *.hh"
+at_fn_check_prepare_trace "synclines.at:293"
+( $at_check_trace; grep '#line' *.cc *.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 1 $at_status "$at_srcdir/synclines.at:293"
+$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_137
+#AT_START_138
+at_fn_group_banner 138 'headers.at:57' \
   "Invalid CPP guards:  --defines=input/input.h" "   " 8
 at_xfail=no
 (
-  $as_echo "125. $at_setup_line: testing $at_desc ..."
+  $as_echo "138. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30634,7 +34838,7 @@ cat >input/input.y <<'_ATEOF'
 
 %{
 #include <input/input.h>
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -30696,15 +34900,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/headers.at:57"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/headers.at:57: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:57"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -30733,6 +34937,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/headers.at:57: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:57"
+( $at_check_trace; $BISON_C_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/headers.at:57"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:57: \$CC \$CFLAGS \$CPPFLAGS -c -o input/input.o -I. -c input/input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input/input.o -I. -c input/input.c " "headers.at:57"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input/input.o -I. -c input/input.c
@@ -30751,13 +34968,13 @@ $at_traceon; }
   $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:58' \
+#AT_STOP_138
+#AT_START_139
+at_fn_group_banner 139 'headers.at:58' \
   "Invalid CPP guards:  --defines=9foo.h" "          " 8
 at_xfail=no
 (
-  $as_echo "126. $at_setup_line: testing $at_desc ..."
+  $as_echo "139. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30799,7 +35016,7 @@ cat >9foo.y <<'_ATEOF'
 
 %{
 #include <9foo.h>
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -30861,15 +35078,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/headers.at:58"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/headers.at:58: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:58"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -30898,6 +35115,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/headers.at:58: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:58"
+( $at_check_trace; $BISON_C_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/headers.at:58"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:58: \$CC \$CFLAGS \$CPPFLAGS -c -o 9foo.o -I. -c 9foo.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o 9foo.o -I. -c 9foo.c " "headers.at:58"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o 9foo.o -I. -c 9foo.c
@@ -30916,13 +35146,13 @@ $at_traceon; }
   $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:59' \
+#AT_STOP_139
+#AT_START_140
+at_fn_group_banner 140 'headers.at:59' \
   "Invalid CPP guards: %glr-parser --defines=input/input.h" "" 8
 at_xfail=no
 (
-  $as_echo "127. $at_setup_line: testing $at_desc ..."
+  $as_echo "140. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -30964,7 +35194,7 @@ cat >input/input.y <<'_ATEOF'
 %glr-parser
 %{
 #include <input/input.h>
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -31026,15 +35256,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/headers.at:59"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/headers.at:59: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:59"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -31063,6 +35293,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/headers.at:59: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:59"
+( $at_check_trace; $BISON_C_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/headers.at:59"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:59: \$CC \$CFLAGS \$CPPFLAGS -c -o input/input.o -I. -c input/input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input/input.o -I. -c input/input.c " "headers.at:59"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input/input.o -I. -c input/input.c
@@ -31081,13 +35324,13 @@ $at_traceon; }
   $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:60' \
+#AT_STOP_140
+#AT_START_141
+at_fn_group_banner 141 'headers.at:60' \
   "Invalid CPP guards: %glr-parser --defines=9foo.h" "" 8
 at_xfail=no
 (
-  $as_echo "128. $at_setup_line: testing $at_desc ..."
+  $as_echo "141. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -31129,7 +35372,7 @@ cat >9foo.y <<'_ATEOF'
 %glr-parser
 %{
 #include <9foo.h>
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -31191,15 +35434,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/headers.at:60"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/headers.at:60: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:60"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -31228,6 +35471,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/headers.at:60: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:60"
+( $at_check_trace; $BISON_C_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/headers.at:60"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:60: \$CC \$CFLAGS \$CPPFLAGS -c -o 9foo.o -I. -c 9foo.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o 9foo.o -I. -c 9foo.c " "headers.at:60"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o 9foo.o -I. -c 9foo.c
@@ -31246,13 +35502,13 @@ $at_traceon; }
   $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 'headers.at:69' \
+#AT_STOP_141
+#AT_START_142
+at_fn_group_banner 142 'headers.at:69' \
   "export YYLTYPE" "                                 " 8
 at_xfail=no
 (
-  $as_echo "129. $at_setup_line: testing $at_desc ..."
+  $as_echo "142. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -31342,15 +35598,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/headers.at:96"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/headers.at:96: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:96"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -31396,6 +35652,19 @@ _ATEOF
 # Link and execute, just to make sure everything is fine (and in
 # particular, that MY_LLOC is indeed defined somewhere).
 { set +x
+$as_echo "$at_srcdir/headers.at:114: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:114"
+( $at_check_trace; $BISON_C_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/headers.at:114"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:114: \$CC \$CFLAGS \$CPPFLAGS -c -o caller.o caller.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o caller.o caller.c " "headers.at:114"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o caller.o caller.c
@@ -31409,6 +35678,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/headers.at:115: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:115"
+( $at_check_trace; $BISON_C_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/headers.at:115"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:115: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "headers.at:115"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
@@ -31422,6 +35704,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/headers.at:116: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:116"
+( $at_check_trace; $BISON_C_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/headers.at:116"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/headers.at:116: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o caller caller.o input.o \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o caller caller.o input.o $LIBS" "headers.at:116"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o caller caller.o input.o $LIBS
@@ -31466,20 +35761,21 @@ $at_traceon; }
   $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 'headers.at:125' \
+#AT_STOP_142
+#AT_START_143
+at_fn_group_banner 143 'headers.at:125' \
   "Several parsers" "                                " 8
 at_xfail=no
 (
-  $as_echo "130. $at_setup_line: testing $at_desc ..."
+  $as_echo "143. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
 # AT_TEST([PREFIX], [DIRECTIVES])
 # -------------------------------
-# Generate and compile to *.o.  Make sure there is no YY* nor yy* in
-# the header (but YYDEBUG and YYPARSE_PARAM).
+# Generate and compile to *.o.  Make sure there is no (allowed) YY*
+# nor yy* identifiers in the header.  Check that headers are
+# self-contained, and can be compiled by a C++ compiler.
 # AT_TEST
 
 cat >main.cc <<'_ATEOF'
@@ -31553,7 +35849,7 @@ cat >x1.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x1_error (const char *msg);
+  static void x1_error ( const char *msg);
   static int x1_lex (void);
 %}
 %%
@@ -31572,9 +35868,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x1_error (const char *msg)
+void x1_error ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -31600,9 +35895,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/headers.at:229: 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/headers.at:218: 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 -o x1.c x1.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:229"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:218"
 ( $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 -o x1.c x1.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -31610,29 +35905,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/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:229: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x1.c x1.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 -o x1.c x1.y" "headers.at:229"
+$as_echo "$at_srcdir/headers.at:218: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x1.c x1.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 -o x1.c x1.y" "headers.at:218"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x1.c x1.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/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:229: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:218: \$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' "headers.at:229"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:218"
 ( $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
@@ -31641,25 +35936,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:229: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:218: \$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' "headers.at:229"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:218"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -31667,79 +35962,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:229: bison -d -o x1.c x1.y"
-at_fn_check_prepare_trace "headers.at:229"
+$as_echo "$at_srcdir/headers.at:218: bison -d -o x1.c x1.y"
+at_fn_check_prepare_trace "headers.at:218"
 ( $at_check_trace; bison -d -o x1.c x1.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/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:229: \$EGREP yy x1.h"
-at_fn_check_prepare_dynamic "$EGREP yy x1.h" "headers.at:229"
-( $at_check_trace; $EGREP yy x1.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 1 $at_status "$at_srcdir/headers.at:229"
-$at_failed && at_fn_log_failure
-$at_traceon; }
 
-
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:229: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x1.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:229"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x1.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:218: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:218"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:229"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:229: \$CC \$CFLAGS \$CPPFLAGS -c -o x1.o x1.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x1.o x1.c " "headers.at:229"
+$as_echo "$at_srcdir/headers.at:218: \$CC \$CFLAGS \$CPPFLAGS -c -o x1.o x1.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x1.o x1.c " "headers.at:218"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x1.o x1.c
 ) >>"$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/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:229: echo \"x1\" >>expout"
-at_fn_check_prepare_trace "headers.at:229"
+$as_echo "$at_srcdir/headers.at:218: echo \"x1\" >>expout"
+at_fn_check_prepare_trace "headers.at:218"
 ( $at_check_trace; echo "x1" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:229"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -31765,7 +36037,7 @@ cat >x2.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x2_error (const char *msg);
+  static void x2_error ( const char *msg);
   static int x2_lex (void);
 %}
 %%
@@ -31784,17 +36056,9 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x2_error (const char *msg)
+void x2_error ( const char *msg)
 {
-
-  fprintf (stderr, "%d.%d",
-           (x2_lloc).first_line, (x2_lloc).first_column);
-  if ((x2_lloc).first_line != (x2_lloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (x2_lloc).last_line,  (x2_lloc).last_column - 1);
-  else if ((x2_lloc).first_column != (x2_lloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (x2_lloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (x2_lloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -31823,9 +36087,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/headers.at:230: 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/headers.at:219: 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 -o x2.c x2.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:230"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:219"
 ( $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 -o x2.c x2.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -31833,29 +36097,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/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:230: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x2.c x2.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 -o x2.c x2.y" "headers.at:230"
+$as_echo "$at_srcdir/headers.at:219: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x2.c x2.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 -o x2.c x2.y" "headers.at:219"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x2.c x2.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/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:230: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:219: \$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' "headers.at:230"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:219"
 ( $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
@@ -31864,25 +36128,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:230: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:219: \$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' "headers.at:230"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:219"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -31890,79 +36154,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:230: bison -d -o x2.c x2.y"
-at_fn_check_prepare_trace "headers.at:230"
+$as_echo "$at_srcdir/headers.at:219: bison -d -o x2.c x2.y"
+at_fn_check_prepare_trace "headers.at:219"
 ( $at_check_trace; bison -d -o x2.c x2.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/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:230: \$EGREP yy x2.h"
-at_fn_check_prepare_dynamic "$EGREP yy x2.h" "headers.at:230"
-( $at_check_trace; $EGREP yy x2.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 1 $at_status "$at_srcdir/headers.at:230"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:230: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x2.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:230"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x2.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:219: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:219"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:230"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:230: \$CC \$CFLAGS \$CPPFLAGS -c -o x2.o x2.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x2.o x2.c " "headers.at:230"
+$as_echo "$at_srcdir/headers.at:219: \$CC \$CFLAGS \$CPPFLAGS -c -o x2.o x2.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x2.o x2.c " "headers.at:219"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x2.o x2.c
 ) >>"$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/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:230: echo \"x2\" >>expout"
-at_fn_check_prepare_trace "headers.at:230"
+$as_echo "$at_srcdir/headers.at:219: echo \"x2\" >>expout"
+at_fn_check_prepare_trace "headers.at:219"
 ( $at_check_trace; echo "x2" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:230"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:219"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -31988,7 +36229,7 @@ cat >x3.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x3_error (const char *msg);
+  static void x3_error ( const char *msg);
   static int x3_lex (void);
 %}
 %%
@@ -32007,9 +36248,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x3_error (const char *msg)
+void x3_error ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -32035,9 +36275,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/headers.at:231: 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/headers.at:220: 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 -o x3.c x3.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:231"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:220"
 ( $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 -o x3.c x3.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -32045,29 +36285,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/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:231: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x3.c x3.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 -o x3.c x3.y" "headers.at:231"
+$as_echo "$at_srcdir/headers.at:220: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x3.c x3.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 -o x3.c x3.y" "headers.at:220"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x3.c x3.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/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:231: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:220: \$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' "headers.at:231"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:220"
 ( $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
@@ -32076,25 +36316,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:231: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:220: \$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' "headers.at:231"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:220"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32102,79 +36342,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:231: bison -d -o x3.c x3.y"
-at_fn_check_prepare_trace "headers.at:231"
+$as_echo "$at_srcdir/headers.at:220: bison -d -o x3.c x3.y"
+at_fn_check_prepare_trace "headers.at:220"
 ( $at_check_trace; bison -d -o x3.c x3.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/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:231: \$EGREP yy x3.h"
-at_fn_check_prepare_dynamic "$EGREP yy x3.h" "headers.at:231"
-( $at_check_trace; $EGREP yy x3.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 1 $at_status "$at_srcdir/headers.at:231"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:231: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x3.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:231"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x3.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:220: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:220"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:231"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:231: \$CC \$CFLAGS \$CPPFLAGS -c -o x3.o x3.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x3.o x3.c " "headers.at:231"
+$as_echo "$at_srcdir/headers.at:220: \$CC \$CFLAGS \$CPPFLAGS -c -o x3.o x3.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x3.o x3.c " "headers.at:220"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x3.o x3.c
 ) >>"$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/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:231: echo \"x3\" >>expout"
-at_fn_check_prepare_trace "headers.at:231"
+$as_echo "$at_srcdir/headers.at:220: echo \"x3\" >>expout"
+at_fn_check_prepare_trace "headers.at:220"
 ( $at_check_trace; echo "x3" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:231"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:220"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32200,7 +36417,7 @@ cat >x4.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x4_error (const char *msg);
+  static void x4_error ( const char *msg);
   static int x4_lex (void);
 %}
 %%
@@ -32219,17 +36436,9 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x4_error (const char *msg)
+void x4_error ( const char *msg)
 {
-
-  fprintf (stderr, "%d.%d",
-           (x4_lloc).first_line, (x4_lloc).first_column);
-  if ((x4_lloc).first_line != (x4_lloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (x4_lloc).last_line,  (x4_lloc).last_column - 1);
-  else if ((x4_lloc).first_column != (x4_lloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (x4_lloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (x4_lloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -32258,9 +36467,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/headers.at:232: 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/headers.at:221: 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 -o x4.c x4.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:232"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:221"
 ( $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 -o x4.c x4.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -32268,29 +36477,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/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:232: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x4.c x4.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 -o x4.c x4.y" "headers.at:232"
+$as_echo "$at_srcdir/headers.at:221: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x4.c x4.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 -o x4.c x4.y" "headers.at:221"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x4.c x4.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/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:232: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:221: \$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' "headers.at:232"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:221"
 ( $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
@@ -32299,25 +36508,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:232: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:221: \$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' "headers.at:232"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:221"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32325,79 +36534,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:232: bison -d -o x4.c x4.y"
-at_fn_check_prepare_trace "headers.at:232"
+$as_echo "$at_srcdir/headers.at:221: bison -d -o x4.c x4.y"
+at_fn_check_prepare_trace "headers.at:221"
 ( $at_check_trace; bison -d -o x4.c x4.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/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:232: \$EGREP yy x4.h"
-at_fn_check_prepare_dynamic "$EGREP yy x4.h" "headers.at:232"
-( $at_check_trace; $EGREP yy x4.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 1 $at_status "$at_srcdir/headers.at:232"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:232: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x4.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:232"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x4.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:221: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:221"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:232"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:232: \$CC \$CFLAGS \$CPPFLAGS -c -o x4.o x4.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x4.o x4.c " "headers.at:232"
+$as_echo "$at_srcdir/headers.at:221: \$CC \$CFLAGS \$CPPFLAGS -c -o x4.o x4.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x4.o x4.c " "headers.at:221"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x4.o x4.c
 ) >>"$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/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:232: echo \"x4\" >>expout"
-at_fn_check_prepare_trace "headers.at:232"
+$as_echo "$at_srcdir/headers.at:221: echo \"x4\" >>expout"
+at_fn_check_prepare_trace "headers.at:221"
 ( $at_check_trace; echo "x4" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:232"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:221"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32405,7 +36591,7 @@ $at_traceon; }
 
 
 
-cat >x5.yy <<'_ATEOF'
+cat >x5.y <<'_ATEOF'
 %code top {
 #include <config.h>
 /* We don't need perfect functions for these tests. */
@@ -32471,39 +36657,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/headers.at:233: 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 -o x5.cc x5.yy"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:233"
+$as_echo "$at_srcdir/headers.at:222: 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 -o x5.cc x5.y"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:222"
 ( $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 -o x5.cc x5.yy
+                  --graph=xml-tests/test.dot -d -o x5.cc x5.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/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:233: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x5.cc x5.yy"
-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 -o x5.cc x5.yy" "headers.at:233"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x5.cc x5.yy
+$as_echo "$at_srcdir/headers.at:222: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x5.cc x5.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 -o x5.cc x5.y" "headers.at:222"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x5.cc x5.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/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:233: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:222: \$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' "headers.at:233"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:222"
 ( $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
@@ -32512,25 +36698,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:233: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:222: \$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' "headers.at:233"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:222"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32538,81 +36724,57 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:233: bison -d -o x5.cc x5.yy"
-at_fn_check_prepare_trace "headers.at:233"
-( $at_check_trace; bison -d -o x5.cc x5.yy
+$as_echo "$at_srcdir/headers.at:222: bison -d -o x5.cc x5.y"
+at_fn_check_prepare_trace "headers.at:222"
+( $at_check_trace; bison -d -o x5.cc x5.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/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-
-
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
-{ set +x
-$as_echo "$at_srcdir/headers.at:233: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x5.hh |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:233"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x5.hh |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:233"
-$at_failed && at_fn_log_failure
-$at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/headers.at:233: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:233"
+$as_echo "$at_srcdir/headers.at:222: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:222"
 ( $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/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:233: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o x5.o x5.cc "
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o x5.o x5.cc " "headers.at:233"
+$as_echo "$at_srcdir/headers.at:222: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o x5.o x5.cc "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o x5.o x5.cc " "headers.at:222"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o x5.o x5.cc
 ) >>"$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/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:233: echo \"x5\" >>expout"
-at_fn_check_prepare_trace "headers.at:233"
+$as_echo "$at_srcdir/headers.at:222: echo \"x5\" >>expout"
+at_fn_check_prepare_trace "headers.at:222"
 ( $at_check_trace; echo "x5" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:233"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:222"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32638,7 +36800,7 @@ cat >x6.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x6_error (const char *msg);
+  static void x6_error ( const char *msg);
   static int x6_lex (X6_STYPE *lvalp);
 %}
 %%
@@ -32657,9 +36819,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x6_error (const char *msg)
+void x6_error ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -32685,9 +36846,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/headers.at:234: 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/headers.at:223: 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 -o x6.c x6.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:234"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:223"
 ( $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 -o x6.c x6.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -32695,29 +36856,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/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:234: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x6.c x6.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 -o x6.c x6.y" "headers.at:234"
+$as_echo "$at_srcdir/headers.at:223: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x6.c x6.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 -o x6.c x6.y" "headers.at:223"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x6.c x6.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/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:234: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:223: \$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' "headers.at:234"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:223"
 ( $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
@@ -32726,25 +36887,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:234: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:223: \$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' "headers.at:234"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:223"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32752,79 +36913,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:234: bison -d -o x6.c x6.y"
-at_fn_check_prepare_trace "headers.at:234"
+$as_echo "$at_srcdir/headers.at:223: bison -d -o x6.c x6.y"
+at_fn_check_prepare_trace "headers.at:223"
 ( $at_check_trace; bison -d -o x6.c x6.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/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:234: \$EGREP yy x6.h"
-at_fn_check_prepare_dynamic "$EGREP yy x6.h" "headers.at:234"
-( $at_check_trace; $EGREP yy x6.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 1 $at_status "$at_srcdir/headers.at:234"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:234: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x6.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:234"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x6.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:223: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:223"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:234"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:234: \$CC \$CFLAGS \$CPPFLAGS -c -o x6.o x6.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x6.o x6.c " "headers.at:234"
+$as_echo "$at_srcdir/headers.at:223: \$CC \$CFLAGS \$CPPFLAGS -c -o x6.o x6.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x6.o x6.c " "headers.at:223"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x6.o x6.c
 ) >>"$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/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:234: echo \"x6\" >>expout"
-at_fn_check_prepare_trace "headers.at:234"
+$as_echo "$at_srcdir/headers.at:223: echo \"x6\" >>expout"
+at_fn_check_prepare_trace "headers.at:223"
 ( $at_check_trace; echo "x6" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:234"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:223"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32850,7 +36988,7 @@ cat >x7.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x7_error (const char *msg);
+  static void x7_error ( const char *msg);
   static int x7_lex (void);
 %}
 %%
@@ -32869,9 +37007,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x7_error (const char *msg)
+void x7_error ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -32897,9 +37034,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/headers.at:235: 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/headers.at:224: 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 -o x7.c x7.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:235"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:224"
 ( $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 -o x7.c x7.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -32907,29 +37044,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/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:235: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x7.c x7.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 -o x7.c x7.y" "headers.at:235"
+$as_echo "$at_srcdir/headers.at:224: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x7.c x7.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 -o x7.c x7.y" "headers.at:224"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x7.c x7.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/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:235: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:224: \$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' "headers.at:235"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:224"
 ( $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
@@ -32938,25 +37075,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:235: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:224: \$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' "headers.at:235"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:224"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -32964,79 +37101,56 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:235: bison -d -o x7.c x7.y"
-at_fn_check_prepare_trace "headers.at:235"
+$as_echo "$at_srcdir/headers.at:224: bison -d -o x7.c x7.y"
+at_fn_check_prepare_trace "headers.at:224"
 ( $at_check_trace; bison -d -o x7.c x7.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/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
-{ set +x
-$as_echo "$at_srcdir/headers.at:235: \$EGREP yy x7.h"
-at_fn_check_prepare_dynamic "$EGREP yy x7.h" "headers.at:235"
-( $at_check_trace; $EGREP yy x7.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 1 $at_status "$at_srcdir/headers.at:235"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
-#
-# YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:235: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x7.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:235"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x7.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:224: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:224"
+( $at_check_trace; $BISON_C_WORKS
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:235"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:235: \$CC \$CFLAGS \$CPPFLAGS -c -o x7.o x7.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x7.o x7.c " "headers.at:235"
+$as_echo "$at_srcdir/headers.at:224: \$CC \$CFLAGS \$CPPFLAGS -c -o x7.o x7.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x7.o x7.c " "headers.at:224"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x7.o x7.c
 ) >>"$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/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-
 { set +x
-$as_echo "$at_srcdir/headers.at:235: echo \"x7\" >>expout"
-at_fn_check_prepare_trace "headers.at:235"
+$as_echo "$at_srcdir/headers.at:224: echo \"x7\" >>expout"
+at_fn_check_prepare_trace "headers.at:224"
 ( $at_check_trace; echo "x7" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:235"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33062,7 +37176,7 @@ cat >x8.y <<'_ATEOF'
 }
 %{
 #include <stdio.h>
-  static void x8_error (const char *msg);
+  static void x8_error ( const char *msg);
   static int x8_lex (X8_STYPE *lvalp);
 %}
 %%
@@ -33081,9 +37195,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void x8_error (const char *msg)
+void x8_error ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -33109,9 +37222,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/headers.at:236: 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/headers.at:225: 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 -o x8.c x8.y"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:236"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:225"
 ( $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 -o x8.c x8.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -33119,29 +37232,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/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/headers.at:236: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x8.c x8.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 -o x8.c x8.y" "headers.at:236"
+$as_echo "$at_srcdir/headers.at:225: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x8.c x8.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 -o x8.c x8.y" "headers.at:225"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -o x8.c x8.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/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/headers.at:236: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:225: \$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' "headers.at:236"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:225"
 ( $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
@@ -33150,25 +37263,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/headers.at:236: \$XSLTPROC \\
+$as_echo "$at_srcdir/headers.at:225: \$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' "headers.at:236"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "headers.at:225"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33176,141 +37289,367 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/headers.at:236: bison -d -o x8.c x8.y"
-at_fn_check_prepare_trace "headers.at:236"
+$as_echo "$at_srcdir/headers.at:225: bison -d -o x8.c x8.y"
+at_fn_check_prepare_trace "headers.at:225"
 ( $at_check_trace; bison -d -o x8.c x8.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/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# C++ output relies on namespaces and still uses yy a lot.
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:225: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:225"
+( $at_check_trace; $BISON_C_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/headers.at:225"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:225: \$CC \$CFLAGS \$CPPFLAGS -c -o x8.o x8.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x8.o x8.c " "headers.at:225"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x8.o x8.c
+) >>"$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/headers.at:225"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
 { set +x
-$as_echo "$at_srcdir/headers.at:236: \$EGREP yy x8.h"
-at_fn_check_prepare_dynamic "$EGREP yy x8.h" "headers.at:236"
-( $at_check_trace; $EGREP yy x8.h
+$as_echo "$at_srcdir/headers.at:225: echo \"x8\" >>expout"
+at_fn_check_prepare_trace "headers.at:225"
+( $at_check_trace; echo "x8" >>expout
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-# Ignore comments. Ignore YYPARSE_PARAM (obsolete) and
-# YYPUSH_MORE(_DEFINED)? (whose definition is constant).
+
+
+#AT_TEST([x5], [%locations %language "c++" %glr-parser])
+
+# Check there is no 'yy' left.
+# C++ output relies on namespaces and still uses yy a lot.
+#
+# Check there is no 'YY' left.
+# Ignore comments, YYChar (template parameter), YYPARSE_PARAM
+# (obsolete), YYPUSH_MORE(_DEFINED)?  (constant definition),
+# YY_\w+_INCLUDED (header guards).
 #
 # YYDEBUG (not renamed) can be read, but not changed.
 { set +x
-$as_echo "$at_srcdir/headers.at:236: sed -ne 's,/\\*[^*]*\\*/,,g;s,//.*,,' \\
-                -e '/YY/p' x8.h |
-     \$EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'"
-at_fn_check_prepare_notrace 'an embedded newline' "headers.at:236"
-( $at_check_trace; sed -ne 's,/\*[^*]*\*/,,g;s,//.*,,' \
-                -e '/YY/p' x8.h |
-     $EGREP -wv 'YY(PARSE_PARAM|PUSH_MORE(_DEFINED)?)|(defined|if) YYDEBUG'
+$as_echo "$at_srcdir/headers.at:237: \$PERL -n -0777 -e '
+  s{/\\*.*?\\*/}{}gs;
+  s{//.*}{}g;
+  s{\\b(YYChar
+      |YYPARSE_PARAM
+      |YYPUSH_MORE(_DEFINED)?
+      |YY_\\w+_INCLUDED
+      |YY_NULL
+      |(defined|if)\\ YYDEBUG
+      )\\b}{}gx;
+  while (/^(.*YY.*)\$/gm)
+  {
+    print \"\$ARGV: invalid exported YY: \$1\\n\";
+  }
+  if (\$ARGV =~ /\\.h\$/)
+  {
+    while (/^(.*yy.*)\$/gm)
+    {
+      print \"\$ARGV: invalid exported yy: \$1\\n\";
+    }
+  }
+' -- *.hh *.h"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:237"
+( $at_check_trace; $PERL -n -0777 -e '
+  s{/\*.*?\*/}{}gs;
+  s{//.*}{}g;
+  s{\b(YYChar
+      |YYPARSE_PARAM
+      |YYPUSH_MORE(_DEFINED)?
+      |YY_\w+_INCLUDED
+      |YY_NULL
+      |(defined|if)\ YYDEBUG
+      )\b}{}gx;
+  while (/^(.*YY.*)$/gm)
+  {
+    print "$ARGV: invalid exported YY: $1\n";
+  }
+  if ($ARGV =~ /\.h$/)
+  {
+    while (/^(.*yy.*)$/gm)
+    {
+      print "$ARGV: invalid exported yy: $1\n";
+    }
+  }
+' -- *.hh *.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 1 $at_status "$at_srcdir/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:237"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
+# Check that the headers are self-contained, and protected against
+# multiple inclusions.  While at it, check they are sane for C++.
+for h in *.h *.hh
+do
+  # No shell expansion with AT_DATA.
+  cat >$h.cc <<EOF
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+
+#include "$h"
+#include "$h"
+EOF
+
 { set +x
-$as_echo "$at_srcdir/headers.at:236: \$CC \$CFLAGS \$CPPFLAGS -c -o x8.o x8.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o x8.o x8.c " "headers.at:236"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o x8.o x8.c
+$as_echo "$at_srcdir/headers.at:270: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:270"
+( $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/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:270"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+{ set +x
+$as_echo "$at_srcdir/headers.at:270: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o \$h.o \$h.cc "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o $h.o $h.cc " "headers.at:270"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o $h.o $h.cc
+) >>"$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/headers.at:270"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+done
+
+# Do this late, so that other checks have been performed.
+cat >c-and-cxx.h <<'_ATEOF'
+#ifdef __cplusplus
+extern "C"
+{
+#endif
+  int fortytwo (void);
+#ifdef __cplusplus
+}
+#endif
+_ATEOF
+
+cat >c-only.c <<'_ATEOF'
+#include "c-and-cxx.h"
+int
+main (void)
+{
+  return fortytwo () == 42 ? 0 : 1;
+}
+_ATEOF
+
+cat >cxx-only.cc <<'_ATEOF'
+#include "c-and-cxx.h"
+int fortytwo ()
+{
+  return 42;
+}
+_ATEOF
 
 { set +x
-$as_echo "$at_srcdir/headers.at:236: echo \"x8\" >>expout"
-at_fn_check_prepare_trace "headers.at:236"
-( $at_check_trace; echo "x8" >>expout
+$as_echo "$at_srcdir/headers.at:274: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "headers.at:274"
+( $at_check_trace; $BISON_C_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/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:274: \$CC \$CFLAGS \$CPPFLAGS -c -o c-only.o c-only.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o c-only.o c-only.c " "headers.at:274"
+( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o c-only.o c-only.c
+) >>"$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/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:274: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:274"
+( $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/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:274: \$CXX \$CXXFLAGS \$CPPFLAGS -c -o cxx-only.o cxx-only.cc "
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS -c -o cxx-only.o cxx-only.cc " "headers.at:274"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS -c -o cxx-only.o cxx-only.cc
+) >>"$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/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:274: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS c-only.o cxx-only.o -o c-and-cxx ||
+          exit 77"
+at_fn_check_prepare_notrace 'an embedded newline' "headers.at:274"
+( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS c-only.o cxx-only.o -o c-and-cxx ||
+          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 stdout:; cat "$at_stdout"
+at_fn_check_skip $at_status "$at_srcdir/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:274:  \$PREPARSER ./c-and-cxx"
+at_fn_check_prepare_dynamic " $PREPARSER ./c-and-cxx" "headers.at:274"
+( $at_check_trace;  $PREPARSER ./c-and-cxx
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:236"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:274"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+{ set +x
+$as_echo "$at_srcdir/headers.at:274: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "headers.at:274"
+( $at_check_trace; 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/headers.at:274"
+$at_failed && at_fn_log_failure
+$at_traceon; }
 
 
 
-#AT_TEST([x5], [%locations %language "c++" %glr-parser])
 
 
 { set +x
-$as_echo "$at_srcdir/headers.at:239: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:239"
+$as_echo "$at_srcdir/headers.at:276: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "headers.at:276"
 ( $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/headers.at:239"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:276"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:239: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o parser x[1-8].o -DCC_IS_CXX=\$CC_IS_CXX main.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o parser x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc $LIBS" "headers.at:239"
+$as_echo "$at_srcdir/headers.at:276: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o parser x[1-8].o -DCC_IS_CXX=\$CC_IS_CXX main.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o parser x[1-8].o -DCC_IS_CXX=$CC_IS_CXX main.cc $LIBS" "headers.at:276"
 ( $at_check_trace; $CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o parser x[1-8].o -DCC_IS_CXX=$CC_IS_CXX 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/headers.at:239"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:276"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/headers.at:240: ./parser"
-at_fn_check_prepare_trace "headers.at:240"
-( $at_check_trace; ./parser
+$as_echo "$at_srcdir/headers.at:277:  \$PREPARSER ./parser"
+at_fn_check_prepare_dynamic " $PREPARSER ./parser" "headers.at:277"
+( $at_check_trace;  $PREPARSER ./parser
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stderr:; tee stderr <"$at_stderr"
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/headers.at:240"
+at_fn_check_status 0 $at_status "$at_srcdir/headers.at:277"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/headers.at:277: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "headers.at:277"
+( $at_check_trace; 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/headers.at:277"
 $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_130
-#AT_START_131
-at_fn_group_banner 131 'actions.at:24' \
+#AT_STOP_143
+#AT_START_144
+at_fn_group_banner 144 'actions.at:24' \
   "Mid-rule actions" "                               " 9
 at_xfail=no
 (
-  $as_echo "131. $at_setup_line: testing $at_desc ..."
+  $as_echo "144. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -33332,7 +37671,7 @@ cat >input.y <<'_ATEOF'
 %error-verbose
 %debug
 %{
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 %%
@@ -33352,9 +37691,8 @@ exp:     { putchar ('0'); }
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -33431,15 +37769,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/actions.at:63"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/actions.at:63: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:63"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -33467,6 +37805,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/actions.at:64: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:64"
+( $at_check_trace; $BISON_C_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:64"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/actions.at:64: \$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:64"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -33513,13 +37864,13 @@ $at_traceon; }
   $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:79' \
-  "Exotic Dollars" "                                 " 9
+#AT_STOP_144
+#AT_START_145
+at_fn_group_banner 145 'actions.at:133' \
+  "Initial location: yacc.c " "                      " 9
 at_xfail=no
 (
-  $as_echo "132. $at_setup_line: testing $at_desc ..."
+  $as_echo "145. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -33533,66 +37884,674 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%error-verbose
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
 %debug
-%{
-static void yyerror (const char *msg);
+%skeleton "yacc.c"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror ( const char *msg);
 static int yylex (void);
-# define USE(Var)
-%}
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
 
-%union
+int yylex (void)
 {
-  int val;
-};
+  return 'x';
+}
 
-%type <val> a_1 a_2 a_5
-            sum_of_the_five_previous_values
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  return !!yyparse ();
+}
+_ATEOF
 
-%%
-exp: a_1 a_2 { $<val>$ = 3; } { $<val>$ = $<val>3 + 1; } a_5
-     sum_of_the_five_previous_values
-    {
-       USE (($1, $2, $<foo>3, $<foo>4, $5));
-       printf ("%d\n", $6);
-    }
-;
-a_1: { $$ = 1; };
-a_2: { $$ = 2; };
-a_5: { $$ = 5; };
 
-sum_of_the_five_previous_values:
-    {
-       $$ = $<val>0 + $<val>-1 + $<val>-2 + $<val>-3 + $<val>-4;
-    }
-;
 
+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:133: 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:133"
+( $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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:133: 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:133"
+( $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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:133: \$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:133"
+( $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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:133: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:133"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:133"
+$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:133: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:133"
+( $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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:133: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:133"
+( $at_check_trace; $BISON_C_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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:133: \$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:133"
+( $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:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:133:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:133"
+( $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/actions.at:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:133: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:133"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:133"
+$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:134' \
+  "Initial location: yacc.c %define api.pure full" " " 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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.pure full
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
 %%
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
 {
+  yydebug = !!getenv("YYDEBUG");
+  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:134: 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:134"
+( $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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:134: 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:134"
+( $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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:134: \$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:134"
+( $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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:134: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:134"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:134"
+$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:134: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:134"
+( $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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:134: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:134"
+( $at_check_trace; $BISON_C_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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:134: \$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:134"
+( $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:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:134:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:134"
+( $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/actions.at:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:134: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:134"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:134"
+$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:135' \
+  "Initial location: yacc.c %define api.pure %parse-param { int x }" "" 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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.pure %parse-param { int x }
 
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp, int x,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp, int x,  const char *msg)
+{
+  YYUSE(x);
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
-#include <assert.h>
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  return !!yyparse (0);
+}
+_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:135: 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:135"
+( $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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:135: 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:135"
+( $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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:135: \$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:135"
+( $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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:135: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:135"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:135"
+$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:135: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:135"
+( $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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:135: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:135"
+( $at_check_trace; $BISON_C_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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:135: \$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:135"
+( $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:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:135:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:135"
+( $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/actions.at:135"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:135: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:135"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:135"
+$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_147
+#AT_START_148
+at_fn_group_banner 148 'actions.at:136' \
+  "Initial location: yacc.c %define api.push-pull both" "" 9
+at_xfail=no
+(
+  $as_echo "148. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.push-pull both
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror ( const char *msg);
+static int yylex (void);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
 static
+void yyerror ( const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
 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;
+  return 'x';
 }
+
 int
 main (void)
 {
-  return yyparse ();
+  yydebug = !!getenv("YYDEBUG");
+  return !!yyparse ();
 }
 _ATEOF
 
@@ -33604,39 +38563,1998 @@ 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:127: 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 -v -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:127"
+$as_echo "$at_srcdir/actions.at:136: 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:136"
 ( $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 -v -o input.c input.y
+                  --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:127"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:127: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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 -d -v -o input.c input.y" "actions.at:127"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -o input.c input.y
+$as_echo "$at_srcdir/actions.at:136: 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:136"
+( $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:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:136: \$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:136"
+( $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:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:136: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:136"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:136"
+$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:136: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:136"
+( $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:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:136: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:136"
+( $at_check_trace; $BISON_C_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:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:136: \$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:136"
+( $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:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:136:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:136"
+( $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/actions.at:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:136"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:136"
+$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_148
+#AT_START_149
+at_fn_group_banner 149 'actions.at:137' \
+  "Initial location: yacc.c %define api.push-pull both %define api.pure full" "" 9
+at_xfail=no
+(
+  $as_echo "149. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.push-pull both %define api.pure full
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  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:137: 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:137"
+( $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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:137: 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:137"
+( $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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:137: \$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:137"
+( $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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:137: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:137"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:137"
+$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:137: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:137"
+( $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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:137: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:137"
+( $at_check_trace; $BISON_C_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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:137: \$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:137"
+( $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:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:137:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:137"
+( $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/actions.at:137"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:137"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:137"
+$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_149
+#AT_START_150
+at_fn_group_banner 150 'actions.at:138' \
+  "Initial location: glr.c " "                       " 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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "glr.c"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror ( const char *msg);
+static int yylex (void);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (void)
+{
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  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:138: 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:138"
+( $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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:138: 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:138"
+( $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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:138: \$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:138"
+( $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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:138: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:138"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:138"
+$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:138: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:138"
+( $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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:138: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:138"
+( $at_check_trace; $BISON_C_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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:138: \$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:138"
+( $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:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:138:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:138"
+( $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/actions.at:138"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:138: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:138"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:138"
+$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:139' \
+  "Initial location: glr.c %define api.pure" "       " 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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "glr.c"
+%define api.pure
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  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:139: 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:139"
+( $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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:139: 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:139"
+( $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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:139: \$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:139"
+( $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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:139: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:139"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:139"
+$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:139: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:139"
+( $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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:139: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:139"
+( $at_check_trace; $BISON_C_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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:139: \$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:139"
+( $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:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:139:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:139"
+( $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/actions.at:139"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:139: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:139"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:139"
+$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:140' \
+  "Initial location: lalr1.cc " "                    " 9
+at_xfail=no
+(
+  $as_echo "152. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "lalr1.cc"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+
+static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+}
+%%
+exp: { std::cerr << @$ << std::endl; }
+%%
+/* 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 yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yy::parser p;
+  p.set_debug_level (!!getenv("YYDEBUG"));
+  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:140: 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:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:140: 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:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:140: \$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:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:140: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:140"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:140"
+$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:140: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:140: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:140: \$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:140"
+( $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:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:140:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:140"
+( $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/actions.at:140"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:140: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:140"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:140"
+$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_152
+#AT_START_153
+at_fn_group_banner 153 'actions.at:141' \
+  "Initial location: glr.cc " "                      " 9
+at_xfail=no
+(
+  $as_echo "153. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "glr.cc"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+
+static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
+}
+%%
+exp: { std::cerr << @$ << std::endl; }
+%%
+/* 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 yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yy::parser p;
+  p.set_debug_level (!!getenv("YYDEBUG"));
+  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:141: 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:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:141: 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:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:141: \$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:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:141: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:141"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:141"
+$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:141: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:141: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:141: \$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:141"
+( $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:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:141:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:141"
+( $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/actions.at:141"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:141: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:141"
+( $at_check_trace; sed >&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 "1.1
+1.1: syntax error
+" | \
+  $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:141"
+$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_153
+#AT_START_154
+at_fn_group_banner 154 'actions.at:150' \
+  "Initial location: yacc.c %define api.pure full" " " 9
+at_xfail=no
+(
+  $as_echo "154. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.pure full
+%{
+# define YYLTYPE int
+# define YY_LOCATION_PRINT(Stream, Loc)      \
+   (void) (Loc)
+# define YYLLOC_DEFAULT(Current, Rhs, N)    \
+  (Current) = ((Rhs)[N ? 1 : 0])
+%}
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  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:150: 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:150"
+( $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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.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" "actions.at:150"
+( $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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:150: \$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:150"
+( $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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:150: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:150"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:150"
+$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:150: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:150"
+( $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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:150: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:150"
+( $at_check_trace; $BISON_C_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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:150: \$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:150"
+( $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:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:150:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:150"
+( $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/actions.at:150"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:150: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:150"
+( $at_check_trace; sed >&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 "
+: syntax error
+" | \
+  $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:150"
+$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_154
+#AT_START_155
+at_fn_group_banner 155 'actions.at:161' \
+  "Initial location: yacc.c %define api.pure full" " " 9
+at_xfail=no
+(
+  $as_echo "155. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+%define api.pure full
+%{
+# define YYLTYPE int
+# define YY_LOCATION_PRINT(Stream, Loc)      \
+    fprintf ((Stream), "%d", (Loc))
+# define YYLLOC_DEFAULT(Current, Rhs, N)    \
+  (Current) = ((Rhs)[N ? 1 : 0])
+%}
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
+static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
+}
+%%
+exp: { YY_LOCATION_PRINT(stderr, @$); fputc ('\n', stderr); }
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
+
+int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
+{
+  YYUSE(lvalp);
+  YYUSE(llocp);
+  return 'x';
+}
+
+int
+main (void)
+{
+  yydebug = !!getenv("YYDEBUG");
+  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:161: 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:161"
+( $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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:161: 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:161"
+( $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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:161: \$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:161"
+( $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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:161: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:161"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:161"
+$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:161: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:161"
+( $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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:161: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:161"
+( $at_check_trace; $BISON_C_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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:161: \$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:161"
+( $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:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:161:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:161"
+( $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/actions.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:161: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:161"
+( $at_check_trace; sed >&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 "0
+0: syntax error
+" | \
+  $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:161"
+$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_155
+#AT_START_156
+at_fn_group_banner 156 'actions.at:244' \
+  "Location print: yacc.c " "                        " 9
+at_xfail=no
+(
+  $as_echo "156. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "yacc.c"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror ( const char *msg);
+static int yylex (void);
+}
+%%
+exp:;
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  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++];
+  ;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
+
+int
+main (void)
+{
+#define TEST(L1, C1, L2, C2)          \
+  (yylloc).first_line = L1;           \
+  (yylloc).first_column = C1;         \
+  (yylloc).last_line = L2;            \
+  (yylloc).last_column = C2;          \
+  YY_LOCATION_PRINT(stdout, (yylloc));\
+  putchar ('\n');
+
+  TEST(1, 1, 1, 1);
+  TEST(2, 1, 2, 10);
+  TEST(3, 1, 4, 1);
+  TEST(5, 1, 6, 10);
+
+  TEST(7, 2, 0, 2);
+  TEST(8, 0, 8, 0);
+  return 0;
+}
+_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:244: 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:244"
+( $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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:244: 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:244"
+( $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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:244: \$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:244"
+( $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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:244: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:244"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:244"
+$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:244: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:244"
+( $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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:244: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:244"
+( $at_check_trace; $BISON_C_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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:244: \$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:244"
+( $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:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:244:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:244"
+( $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"
+echo >>"$at_stdout"; $as_echo "1.1
+2.1-9
+3.1-4.0
+5.1-6.9
+7.2
+8.0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:244"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:244: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:244"
+( $at_check_trace; 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:244"
+$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_156
+#AT_START_157
+at_fn_group_banner 157 'actions.at:245' \
+  "Location print: glr.c " "                         " 9
+at_xfail=no
+(
+  $as_echo "157. $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
+}
+
+%defines /* FIXME: Required by lalr1.cc in Bison 2.6. */
+%locations
+%debug
+%skeleton "glr.c"
+
+
+%code
+{
+# include <stdio.h>
+# include <stdlib.h> /* getenv */
+static void yyerror ( const char *msg);
+static int yylex (void);
+}
+%%
+exp:;
+%%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  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++];
+  ;
+  (yylloc).first_line = (yylloc).last_line = 1;
+  (yylloc).first_column = (yylloc).last_column = toknum;
+  return res;
+}
+
+int
+main (void)
+{
+#define TEST(L1, C1, L2, C2)          \
+  (yylloc).first_line = L1;           \
+  (yylloc).first_column = C1;         \
+  (yylloc).last_line = L2;            \
+  (yylloc).last_column = C2;          \
+  YY_LOCATION_PRINT(stdout, (yylloc));\
+  putchar ('\n');
+
+  TEST(1, 1, 1, 1);
+  TEST(2, 1, 2, 10);
+  TEST(3, 1, 4, 1);
+  TEST(5, 1, 6, 10);
+
+  TEST(7, 2, 0, 2);
+  TEST(8, 0, 8, 0);
+  return 0;
+}
+_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:245: 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:245"
+( $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:245"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:245: 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:245"
+( $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:127"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:245"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:127: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:245: \$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:127"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:245"
 ( $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
@@ -33645,25 +40563,261 @@ at_status=$? at_failed=false
 $at_check_filter
 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:127"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:245"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:127: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:245: \$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:127"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:245"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:245"
+$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:245: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:245"
+( $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:245"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/actions.at:245: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:245"
+( $at_check_trace; $BISON_C_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:245"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:245: \$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:245"
+( $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:245"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:245:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:245"
+( $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"
+echo >>"$at_stdout"; $as_echo "1.1
+2.1-9
+3.1-4.0
+5.1-6.9
+7.2
+8.0
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:245"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:245: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:245"
+( $at_check_trace; 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:245"
+$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_157
+#AT_START_158
+at_fn_group_banner 158 'actions.at:257' \
+  "Exotic Dollars" "                                 " 9
+at_xfail=no
+(
+  $as_echo "158. $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
+}
+
+%error-verbose
+%debug
+%{
+static void yyerror ( const char *msg);
+static int yylex (void);
+# define USE(Var)
+%}
+
+%union
+{
+  int val;
+};
+
+%type <val> a_1 a_2 a_5
+            sum_of_the_five_previous_values
+
+%%
+exp: a_1 a_2 { $<val>$ = 3; } { $<val>$ = $<val>3 + 1; } a_5
+     sum_of_the_five_previous_values
+    {
+       USE (($1, $2, $<foo>3, $<foo>4, $5));
+       printf ("%d\n", $6);
+    }
+;
+a_1: { $$ = 1; };
+a_2: { $$ = 2; };
+a_5: { $$ = 5; };
+
+sum_of_the_five_previous_values:
+    {
+       $$ = $<val>0 + $<val>-1 + $<val>-2 + $<val>-3 + $<val>-4;
+    }
+;
+
+%%
+#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)
+{
+  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:305: 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 -v -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:305"
+( $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 -v -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:305"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:305: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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 -d -v -o input.c input.y" "actions.at:305"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -d -v -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:305"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:305: \$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:305"
+( $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:127"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:305"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:305: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:305"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:305"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33671,35 +40825,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:127: bison -d -v -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:127"
+$as_echo "$at_srcdir/actions.at:305: bison -d -v -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:305"
 ( $at_check_trace; bison -d -v -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:127"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:305"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:128: \$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:128"
+$as_echo "$at_srcdir/actions.at:306: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:306"
+( $at_check_trace; $BISON_C_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:306"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:306: \$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:306"
 ( $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:128"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:306"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:129:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:129"
+$as_echo "$at_srcdir/actions.at:307:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:307"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -33708,20 +40875,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "15
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:129"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:307"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:129: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:129"
+$as_echo "$at_srcdir/actions.at:307: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:307"
 ( $at_check_trace; 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:129"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:307"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33742,7 +40909,7 @@ cat >input.y <<'_ATEOF'
 
 %{
 #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
   typedef struct { int val; } stype;
 # define YYSTYPE stype
@@ -33758,9 +40925,8 @@ sum: { printf ("%d\n", $0.val + $-1.val + $-2.val); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -33791,9 +40957,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:162: 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:340: 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:162"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:340"
 ( $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>&-
@@ -33801,29 +40967,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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:162: 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:162"
+$as_echo "$at_srcdir/actions.at:340: 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:340"
 ( $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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:162: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:340: \$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:162"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:340"
 ( $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
@@ -33832,25 +40998,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:162: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:340: \$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:162"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:340"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33858,35 +41024,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:162: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:162"
+$as_echo "$at_srcdir/actions.at:340: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:340"
 ( $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:162"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+   { set +x
+$as_echo "$at_srcdir/actions.at:340: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:340"
+( $at_check_trace; $BISON_C_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:340"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
 { set +x
-$as_echo "$at_srcdir/actions.at:163: \$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:163"
+$as_echo "$at_srcdir/actions.at:340: \$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:340"
 ( $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:163"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:340"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+
 { set +x
-$as_echo "$at_srcdir/actions.at:164:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:164"
+$as_echo "$at_srcdir/actions.at:341:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:341"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -33895,20 +41075,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "6
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:164: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:164"
+$as_echo "$at_srcdir/actions.at:341: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:341"
 ( $at_check_trace; 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:164"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -33919,13 +41099,13 @@ $at_traceon; }
   $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:574' \
-  "Printers and Destructors : " "                    " 9
+#AT_STOP_158
+#AT_START_159
+at_fn_group_banner 159 'actions.at:751' \
+  "Printers and Destructors" "                       " 9
 at_xfail=no
 (
-  $as_echo "133. $at_setup_line: testing $at_desc ..."
+  $as_echo "159. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -33969,7 +41149,7 @@ cat >input.y <<'_ATEOF'
 %code {
 
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 }
 
 
@@ -34021,7 +41201,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -34062,7 +41242,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -34082,17 +41262,9 @@ const char *source = YY_NULL;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -34142,9 +41314,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:574: 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: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 input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:574"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.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 input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -34152,29 +41324,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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:574: 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:574"
+$as_echo "$at_srcdir/actions.at:751: 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:751"
 ( $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:574: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.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' "actions.at:574"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.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
@@ -34183,25 +41355,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:574: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.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' "actions.at:574"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34209,29 +41381,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:574: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:751"
 ( $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/actions.at:574: \$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:574"
+$as_echo "$at_srcdir/actions.at:751: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:751"
+( $at_check_trace; $BISON_C_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:751"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:751: \$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:751"
 ( $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34244,21 +41429,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:574:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:751"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34277,7 +41462,7 @@ Successful parse.
 " | \
   $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34289,21 +41474,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:574:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:751"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34323,7 +41508,7 @@ Successful parse.
 " | \
   $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34345,21 +41530,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:574:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:751"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:574"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34402,7 +41587,7 @@ Parsing FAILED.
 " | \
   $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34419,21 +41604,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:574:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:751"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:574"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34460,7 +41645,7 @@ Parsing FAILED.
 " | \
   $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34473,21 +41658,21 @@ $at_traceon; }
 # Only check for yacc.c.
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574:  \$PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'" "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751:  \$PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'" "actions.at:751"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/actions.at:574"
+at_fn_check_status 2 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:574: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:574"
+$as_echo "$at_srcdir/actions.at:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34538,7 +41723,7 @@ Parsing FAILED (status 2).
 " | \
   $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:574"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34552,13 +41737,13 @@ $at_traceon; }
   $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:575' \
-  "Printers and Destructors with union: " "          " 9
+#AT_STOP_159
+#AT_START_160
+at_fn_group_banner 160 'actions.at:752' \
+  "Printers and Destructors with union" "            " 9
 at_xfail=no
 (
-  $as_echo "134. $at_setup_line: testing $at_desc ..."
+  $as_echo "160. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -34605,7 +41790,7 @@ cat >input.y <<'_ATEOF'
 %code provides {
 
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 }
 
 %type <ival> '(' 'x' 'y' ')' ';' thing line input END
@@ -34657,7 +41842,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -34698,7 +41883,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -34718,17 +41903,9 @@ const char *source = YY_NULL;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -34778,9 +41955,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:575: 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: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 input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:575"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.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 input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -34788,29 +41965,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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:575: 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:575"
+$as_echo "$at_srcdir/actions.at:752: 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:752"
 ( $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:575: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.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' "actions.at:575"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.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
@@ -34819,25 +41996,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:575: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.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' "actions.at:575"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34845,29 +42022,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:575: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:752"
 ( $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/actions.at:575: \$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:575"
+$as_echo "$at_srcdir/actions.at:752: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:752"
+( $at_check_trace; $BISON_C_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:752"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:752: \$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:752"
 ( $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34880,21 +42070,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:575:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:752"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34913,7 +42103,7 @@ Successful parse.
 " | \
   $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34925,21 +42115,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:575:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:752"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -34959,7 +42149,7 @@ Successful parse.
 " | \
   $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -34981,21 +42171,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:575:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:752"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:575"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -35038,7 +42228,7 @@ Parsing FAILED.
 " | \
   $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35055,21 +42245,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:575:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:752"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:575"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -35096,7 +42286,7 @@ Parsing FAILED.
 " | \
   $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35109,21 +42299,21 @@ $at_traceon; }
 # Only check for yacc.c.
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575:  \$PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'" "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752:  \$PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'" "actions.at:752"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)(x)(x)(x)(x)(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/actions.at:575"
+at_fn_check_status 2 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:575: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:575"
+$as_echo "$at_srcdir/actions.at:752: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.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
@@ -35174,7 +42364,7 @@ Parsing FAILED (status 2).
 " | \
   $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:575"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:752"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35188,13 +42378,13 @@ $at_traceon; }
   $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:577' \
-  "Printers and Destructors : %defines %skeleton \"lalr1.cc\"" "" 9
+#AT_STOP_160
+#AT_START_161
+at_fn_group_banner 161 'actions.at:754' \
+  "Printers and Destructors: %defines %skeleton \"lalr1.cc\"" "" 9
 at_xfail=no
 (
-  $as_echo "135. $at_setup_line: testing $at_desc ..."
+  $as_echo "161. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -35290,7 +42480,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -35331,7 +42521,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -35409,9 +42599,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:577: 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:754: 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:577"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:754"
 ( $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>&-
@@ -35419,29 +42609,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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:577: 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:577"
+$as_echo "$at_srcdir/actions.at:754: 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:754"
 ( $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:577: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:754: \$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:577"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:754"
 ( $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
@@ -35450,25 +42640,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:577: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:754: \$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:577"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:754"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35476,43 +42666,43 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:577: bison -o input.cc input.y"
-at_fn_check_prepare_trace "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:754"
 ( $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:754"
 ( $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: \$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:577"
+$as_echo "$at_srcdir/actions.at:754: \$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:754"
 ( $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35525,21 +42715,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:577:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:754"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:754"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -35558,7 +42748,7 @@ Successful parse.
 " | \
   $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35570,21 +42760,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:577:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:754"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:754"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -35604,7 +42794,7 @@ Successful parse.
 " | \
   $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35626,21 +42816,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:577:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:754"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:577"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:754"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -35683,7 +42873,7 @@ Parsing FAILED.
 " | \
   $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35700,21 +42890,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:577:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:754"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:577"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:577: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:577"
+$as_echo "$at_srcdir/actions.at:754: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:754"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -35741,7 +42931,7 @@ Parsing FAILED.
 " | \
   $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:577"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:754"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -35761,13 +42951,13 @@ $at_traceon; }
   $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:578' \
+#AT_STOP_161
+#AT_START_162
+at_fn_group_banner 162 'actions.at:755' \
   "Printers and Destructors with union: %defines %skeleton \"lalr1.cc\"" "" 9
 at_xfail=no
 (
-  $as_echo "136. $at_setup_line: testing $at_desc ..."
+  $as_echo "162. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -35866,7 +43056,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -35907,7 +43097,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -35985,9 +43175,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:578: 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:755: 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:578"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:755"
 ( $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>&-
@@ -35995,29 +43185,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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:578: 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:578"
+$as_echo "$at_srcdir/actions.at:755: 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:755"
 ( $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:578: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:755: \$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:578"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:755"
 ( $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
@@ -36026,25 +43216,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:578: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:755: \$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:578"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:755"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36052,43 +43242,43 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:578: bison -o input.cc input.y"
-at_fn_check_prepare_trace "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:755"
 ( $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:755"
 ( $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: \$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:578"
+$as_echo "$at_srcdir/actions.at:755: \$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:755"
 ( $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36101,21 +43291,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:578:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:755"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:755"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36134,7 +43324,7 @@ Successful parse.
 " | \
   $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36146,21 +43336,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:578:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:755"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:755"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36180,7 +43370,7 @@ Successful parse.
 " | \
   $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36202,21 +43392,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:578:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:755"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:578"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:755"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36259,7 +43449,7 @@ Parsing FAILED.
 " | \
   $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36276,21 +43466,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:578:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:755"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:578"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:578: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:578"
+$as_echo "$at_srcdir/actions.at:755: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:755"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36317,7 +43507,7 @@ Parsing FAILED.
 " | \
   $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:578"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:755"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36337,13 +43527,13 @@ $at_traceon; }
   $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:580' \
-  "Printers and Destructors : %glr-parser" "         " 9
+#AT_STOP_162
+#AT_START_163
+at_fn_group_banner 163 'actions.at:757' \
+  "Printers and Destructors: %glr-parser" "          " 9
 at_xfail=no
 (
-  $as_echo "137. $at_setup_line: testing $at_desc ..."
+  $as_echo "163. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -36387,7 +43577,7 @@ cat >input.y <<'_ATEOF'
 %code {
 
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 }
 
 
@@ -36439,7 +43629,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -36480,7 +43670,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -36500,17 +43690,9 @@ const char *source = YY_NULL;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -36560,9 +43742,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:580: 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:757: 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:580"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:757"
 ( $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>&-
@@ -36570,29 +43752,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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:580: 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:580"
+$as_echo "$at_srcdir/actions.at:757: 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:757"
 ( $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:580: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:757: \$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:580"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:757"
 ( $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
@@ -36601,25 +43783,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:580: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:757: \$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:580"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:757"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36627,29 +43809,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:580: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:757"
 ( $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/actions.at:580: \$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:580"
+$as_echo "$at_srcdir/actions.at:757: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:757"
+( $at_check_trace; $BISON_C_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:757"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:757: \$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:757"
 ( $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36662,21 +43857,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:580:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:757"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:580: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:757"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36695,7 +43890,7 @@ Successful parse.
 " | \
   $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36707,21 +43902,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:580:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:757"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:580: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:757"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36741,7 +43936,7 @@ Successful parse.
 " | \
   $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36763,21 +43958,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:580:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:757"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:580"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:580: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:757"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36820,7 +44015,7 @@ Parsing FAILED.
 " | \
   $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36837,21 +44032,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:580:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:757"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:580"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:580: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:580"
+$as_echo "$at_srcdir/actions.at:757: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:757"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -36878,7 +44073,7 @@ Parsing FAILED.
 " | \
   $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:580"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:757"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -36898,13 +44093,13 @@ $at_traceon; }
   $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:581' \
+#AT_STOP_163
+#AT_START_164
+at_fn_group_banner 164 'actions.at:758' \
   "Printers and Destructors with union: %glr-parser" "" 9
 at_xfail=no
 (
-  $as_echo "138. $at_setup_line: testing $at_desc ..."
+  $as_echo "164. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -36951,7 +44146,7 @@ cat >input.y <<'_ATEOF'
 %code provides {
 
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 }
 
 %type <ival> '(' 'x' 'y' ')' ';' thing line input END
@@ -37003,7 +44198,7 @@ input:
       V(input, $$, @$, ": /* Nothing */\n");
     }
 | line input /* Right recursive to load the stack so that popping at
-               END can be exercised.  */
+                END can be exercised.  */
     {
       $$ = 2;
       V(input, $$, @$, ": ");
@@ -37044,7 +44239,7 @@ line:
       $$ = -1;
       V(line,  $$, @$, ": ");
       V('(',   $1, @1, " ");
-      fprintf (stderr, "error (@%d-%d) ", RANGE(@2));
+      fprintf (stderr, "error (@%d-%d) ", RANGE (@2));
       V(')',   $3, @3, "\n");
     }
 ;
@@ -37064,17 +44259,9 @@ const char *source = YY_NULL;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -37124,9 +44311,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:581: 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:758: 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:581"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:758"
 ( $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>&-
@@ -37134,29 +44321,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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:581: 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:581"
+$as_echo "$at_srcdir/actions.at:758: 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:758"
 ( $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:581: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:758: \$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:581"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:758"
 ( $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
@@ -37165,25 +44352,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:581: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:758: \$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:581"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:758"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37191,29 +44378,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:581: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:758"
 ( $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/actions.at:581: \$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:581"
+$as_echo "$at_srcdir/actions.at:758: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:758"
+( $at_check_trace; $BISON_C_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:758"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:758: \$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:758"
 ( $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37226,21 +44426,21 @@ $at_traceon; }
 # an empty "line" nterm.
 # FIXME: This location is not satisfying.  Depend on the lookahead?
 { set +x
-$as_echo "$at_srcdir/actions.at:581:  \$PREPARSER ./input '(x)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758:  \$PREPARSER ./input '(x)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)'" "actions.at:758"
 ( $at_check_trace;  $PREPARSER ./input '(x)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:581: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:758"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -37259,7 +44459,7 @@ Successful parse.
 " | \
   $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37271,21 +44471,21 @@ $at_traceon; }
 # '(y)' is an error, but can be recovered from.  But what's the location
 # of the error itself ('y'), and of the resulting reduction ('(error)').
 { set +x
-$as_echo "$at_srcdir/actions.at:581:  \$PREPARSER ./input '(y)'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758:  \$PREPARSER ./input '(y)'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(y)'" "actions.at:758"
 ( $at_check_trace;  $PREPARSER ./input '(y)'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:581: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:758"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -37305,7 +44505,7 @@ Successful parse.
 " | \
   $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37327,21 +44527,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'y'
 { set +x
-$as_echo "$at_srcdir/actions.at:581:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758:  \$PREPARSER ./input '(xxxxx)(x)(x)y'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(xxxxx)(x)(x)y'" "actions.at:758"
 ( $at_check_trace;  $PREPARSER ./input '(xxxxx)(x)(x)y'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:581"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:581: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:758"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -37384,7 +44584,7 @@ Parsing FAILED.
 " | \
   $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37401,21 +44601,21 @@ $at_traceon; }
 #     '(', 'x', ')',
 #     'x'
 { set +x
-$as_echo "$at_srcdir/actions.at:581:  \$PREPARSER ./input '(x)(x)x'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758:  \$PREPARSER ./input '(x)(x)x'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '(x)(x)x'" "actions.at:758"
 ( $at_check_trace;  $PREPARSER ./input '(x)(x)x'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:581"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:581: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:581"
+$as_echo "$at_srcdir/actions.at:758: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:758"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -37442,7 +44642,7 @@ Parsing FAILED.
 " | \
   $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:581"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:758"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37462,13 +44662,13 @@ $at_traceon; }
   $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:592' \
+#AT_STOP_164
+#AT_START_165
+at_fn_group_banner 165 'actions.at:769' \
   "Default tagless %printer and %destructor" "       " 9
 at_xfail=no
 (
-  $as_echo "139. $at_setup_line: testing $at_desc ..."
+  $as_echo "165. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -37484,16 +44684,12 @@ cat >input.y <<'_ATEOF'
 %error-verbose
 %debug
 %locations
-%initial-action {
-  @$.first_line = @$.last_line = 1;
-  @$.first_column = @$.last_column = 1;
-}
 
 %{
 # include <stdio.h>
 # include <stdlib.h>
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 # define USE(SYM)
 %}
 
@@ -37527,17 +44723,9 @@ start: 'a' 'b' 'c' 'd' 'e' { $$ = 'S'; USE(($1, $2, $3, $4, $5)); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -37573,9 +44761,289 @@ 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:649: 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:822: 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:822"
+( $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:822"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:822: 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:822"
+( $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:822"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:822: \$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:822"
+( $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:822"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:822: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:822"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:822"
+$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:822: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:822"
+( $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:822"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:823: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:823"
+( $at_check_trace; $BISON_C_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:823"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:823: \$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:823"
+( $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:823"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:824:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:824"
+( $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"
+echo >>"$at_stdout"; $as_echo "<> destructor for 'd' @ 4.
+'b'/'c' destructor for 'c' @ 3.
+'b'/'c' destructor for 'b' @ 2.
+<> destructor for 'a' @ 1.
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:824"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:824: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:824"
+( $at_check_trace; sed >&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 'a' (1.1: <> printer for 'a' @ 1)
+Shifting token 'a' (1.1: <> printer for 'a' @ 1)
+Entering state 1
+Reading a token: Next token is token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
+Shifting token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
+Entering state 3
+Reading a token: Next token is token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
+Shifting token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
+Entering state 5
+Reading a token: Next token is token 'd' (1.4: <> printer for 'd' @ 4)
+Shifting token 'd' (1.4: <> printer for 'd' @ 4)
+Entering state 6
+Reading a token: Now at end of input.
+1.5: syntax error, unexpected \$end, expecting 'e'
+Error: popping token 'd' (1.4: <> printer for 'd' @ 4)
+Stack now 0 1 3 5
+Error: popping token 'c' (1.3: 'b'/'c' printer for 'c' @ 3)
+Stack now 0 1 3
+Error: popping token 'b' (1.2: 'b'/'c' printer for 'b' @ 2)
+Stack now 0 1
+Error: popping token 'a' (1.1: <> printer for 'a' @ 1)
+Stack now 0
+Cleanup: discarding lookahead token \$end (1.5: )
+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/actions.at:824"
+$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_165
+#AT_START_166
+at_fn_group_banner 166 'actions.at:867' \
+  "Default tagged and per-type %printer and %destructor" "" 9
+at_xfail=no
+(
+  $as_echo "166. $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
+}
+
+%error-verbose
+%debug
+
+%{
+# include <stdio.h>
+# include <stdlib.h>
+static void yyerror ( const char *msg);
+static int yylex (void);
+# define USE(SYM)
+%}
+
+%printer {
+  fprintf (yyoutput, "<> printer should not be called.\n");
+} <>
+
+%union { int field0; int field1; int field2; }
+%type <field0> start 'a' 'g'
+%type <field1> 'e'
+%type <field2> 'f'
+%printer {
+  fprintf (yyoutput, "<*>/<field2>/e printer");
+} <*> 'e' <field2>
+%destructor {
+  fprintf (stdout, "<*>/<field2>/e destructor.\n");
+} <*> 'e' <field2>
+
+%type <field1> 'b'
+%printer { fprintf (yyoutput, "<field1> printer"); } <field1>
+%destructor { fprintf (stdout, "<field1> destructor.\n"); } <field1>
+
+%type <field0> 'c'
+%printer { fprintf (yyoutput, "'c' printer"); } 'c'
+%destructor { fprintf (stdout, "'c' destructor.\n"); } 'c'
+
+%type <field1> 'd'
+%printer { fprintf (yyoutput, "'d' printer"); } 'd'
+%destructor { fprintf (stdout, "'d' destructor.\n"); } 'd'
+
+%destructor {
+  fprintf (yyoutput, "<> destructor should not be called.\n");
+} <>
+
+%%
+
+start:
+  'a' 'b' 'c' 'd' 'e' 'f' 'g'
+    {
+      USE(($1, $2, $3, $4, $5, $6, $7));
+      $$ = 'S';
+    }
+  ;
+
+%%
+#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[] = "abcdef";
+  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/actions.at:934: 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:649"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:934"
 ( $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>&-
@@ -37583,29 +45051,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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:934"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:649: 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:649"
+$as_echo "$at_srcdir/actions.at:934: 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:934"
 ( $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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:934"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:649: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:934: \$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:649"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:934"
 ( $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
@@ -37614,25 +45082,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:934"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:649: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:934: \$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:649"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:934"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:934"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -37640,303 +45108,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:649: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:649"
+$as_echo "$at_srcdir/actions.at:934: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:934"
 ( $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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:934"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:650: \$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:650"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
+$as_echo "$at_srcdir/actions.at:935: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:935"
+( $at_check_trace; $BISON_C_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:650"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:935"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:651:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:651"
-( $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"
-echo >>"$at_stdout"; $as_echo "<> destructor for 'd' @ 4.
-'b'/'c' destructor for 'c' @ 3.
-'b'/'c' destructor for 'b' @ 2.
-<> destructor for 'a' @ 1.
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:651"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/actions.at:651: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.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 >>"$at_stderr"; $as_echo "Starting parse
-Entering state 0
-Reading a token: Next token is token 'a' (1.1-1.1: <> printer for 'a' @ 1)
-Shifting token 'a' (1.1-1.1: <> printer for 'a' @ 1)
-Entering state 1
-Reading a token: Next token is token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
-Shifting token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
-Entering state 3
-Reading a token: Next token is token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
-Shifting token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
-Entering state 5
-Reading a token: Next token is token 'd' (1.4-1.4: <> printer for 'd' @ 4)
-Shifting token 'd' (1.4-1.4: <> printer for 'd' @ 4)
-Entering state 6
-Reading a token: Now at end of input.
-1.5-4: syntax error, unexpected \$end, expecting 'e'
-Error: popping token 'd' (1.4-1.4: <> printer for 'd' @ 4)
-Stack now 0 1 3 5
-Error: popping token 'c' (1.3-1.3: 'b'/'c' printer for 'c' @ 3)
-Stack now 0 1 3
-Error: popping token 'b' (1.2-1.2: 'b'/'c' printer for 'b' @ 2)
-Stack now 0 1
-Error: popping token 'a' (1.1-1.1: <> printer for 'a' @ 1)
-Stack now 0
-Cleanup: discarding lookahead token \$end (1.5-1.5: )
-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/actions.at:651"
-$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_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 "140. $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
-}
-
-%error-verbose
-%debug
-
-%{
-# include <stdio.h>
-# include <stdlib.h>
-static void yyerror (const char *msg);
-static int yylex (void);
-# define USE(SYM)
-%}
-
-%printer {
-  fprintf (yyoutput, "<> printer should not be called.\n");
-} <>
-
-%union { int field0; int field1; int field2; }
-%type <field0> start 'a' 'g'
-%type <field1> 'e'
-%type <field2> 'f'
-%printer {
-  fprintf (yyoutput, "<*>/<field2>/e printer");
-} <*> 'e' <field2>
-%destructor {
-  fprintf (stdout, "<*>/<field2>/e destructor.\n");
-} <*> 'e' <field2>
-
-%type <field1> 'b'
-%printer { fprintf (yyoutput, "<field1> printer"); } <field1>
-%destructor { fprintf (stdout, "<field1> destructor.\n"); } <field1>
-
-%type <field0> 'c'
-%printer { fprintf (yyoutput, "'c' printer"); } 'c'
-%destructor { fprintf (stdout, "'c' destructor.\n"); } 'c'
-
-%type <field1> 'd'
-%printer { fprintf (yyoutput, "'d' printer"); } 'd'
-%destructor { fprintf (stdout, "'d' destructor.\n"); } 'd'
-
-%destructor {
-  fprintf (yyoutput, "<> destructor should not be called.\n");
-} <>
-
-%%
-
-start:
-  'a' 'b' 'c' 'd' 'e' 'f' 'g'
-    {
-      USE(($1, $2, $3, $4, $5, $6, $7));
-      $$ = 'S';
-    }
-  ;
-
-%%
-#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[] = "abcdef";
-  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/actions.at:761: 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:761"
-( $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:761"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/actions.at:761: 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:761"
-( $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:761"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/actions.at:761: \$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:761"
-( $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:761"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/actions.at:761: \$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:761"
-( $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:761"
-$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:761: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:761"
-( $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:761"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/actions.at:762: \$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:762"
+$as_echo "$at_srcdir/actions.at:935: \$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:935"
 ( $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:762"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:935"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:763:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:763"
+$as_echo "$at_srcdir/actions.at:936:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:936"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -37950,13 +45163,13 @@ echo >>"$at_stdout"; $as_echo "<*>/<field2>/e destructor.
 <*>/<field2>/e destructor.
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/actions.at:763"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:763: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:763"
+$as_echo "$at_srcdir/actions.at:936: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:936"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -38000,7 +45213,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/actions.at:763"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38011,13 +45224,13 @@ $at_traceon; }
   $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:818' \
+#AT_STOP_166
+#AT_START_167
+at_fn_group_banner 167 'actions.at:991' \
   "Default %printer and %destructor for user-defined end token" "" 9
 at_xfail=no
 (
-  $as_echo "141. $at_setup_line: testing $at_desc ..."
+  $as_echo "167. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38040,15 +45253,11 @@ cat >input0.y <<'_ATEOF'
 %error-verbose
 %debug
 %locations
-%initial-action {
-  @$.first_line = @$.last_line = 1;
-  @$.first_column = @$.last_column = 1;
-}
 
 %{
 # include <stdio.h>
 # include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 # define USE(SYM)
 %}
@@ -38092,17 +45301,9 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -38124,9 +45325,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:918: 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:1087: 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 input0.c input0.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:918"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1087"
 ( $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 input0.c input0.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38134,29 +45335,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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:918: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input0.c input0.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 input0.c input0.y" "actions.at:918"
+$as_echo "$at_srcdir/actions.at:1087: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input0.c input0.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 input0.c input0.y" "actions.at:1087"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input0.c input0.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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:918: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1087: \$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:918"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1087"
 ( $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
@@ -38165,25 +45366,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:918: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1087: \$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:918"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1087"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38191,35 +45392,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:918: bison -o input0.c input0.y"
-at_fn_check_prepare_trace "actions.at:918"
+$as_echo "$at_srcdir/actions.at:1087: bison -o input0.c input0.y"
+at_fn_check_prepare_trace "actions.at:1087"
 ( $at_check_trace; bison -o input0.c input0.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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:918: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input0 input0.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input0 input0.c $LIBS" "actions.at:918"
+$as_echo "$at_srcdir/actions.at:1087: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1087"
+( $at_check_trace; $BISON_C_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:1087"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1087: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input0 input0.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input0 input0.c $LIBS" "actions.at:1087"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input0 input0.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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:918:  \$PREPARSER ./input0"
-at_fn_check_prepare_dynamic " $PREPARSER ./input0" "actions.at:918"
+$as_echo "$at_srcdir/actions.at:1087:  \$PREPARSER ./input0"
+at_fn_check_prepare_dynamic " $PREPARSER ./input0" "actions.at:1087"
 ( $at_check_trace;  $PREPARSER ./input0
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -38229,33 +45443,33 @@ echo >>"$at_stdout"; $as_echo "<> for 'E' @ 1.
 <> for 'S' @ 1.
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:918: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:918"
+$as_echo "$at_srcdir/actions.at:1087: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1087"
 ( $at_check_trace; sed >&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
-Reducing stack by rule 1 (line 46):
--> \$\$ = nterm start (1.1-1.1: <> for 'S' @ 1)
+Reducing stack by rule 1 (line 42):
+-> \$\$ = nterm start (1.1: <> for 'S' @ 1)
 Stack now 0
 Entering state 1
 Reading a token: Now at end of input.
-Shifting token END (1.1-1.1: <> for 'E' @ 1)
+Shifting token END (1.1: <> for 'E' @ 1)
 Entering state 2
 Stack now 0 1 2
-Cleanup: popping token END (1.1-1.1: <> for 'E' @ 1)
-Cleanup: popping nterm start (1.1-1.1: <> for 'S' @ 1)
+Cleanup: popping token END (1.1: <> for 'E' @ 1)
+Cleanup: popping nterm start (1.1: <> for 'S' @ 1)
 " | \
   $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:918"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1087"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38279,15 +45493,11 @@ cat >input1.y <<'_ATEOF'
 %error-verbose
 %debug
 %locations
-%initial-action {
-  @$.first_line = @$.last_line = 1;
-  @$.first_column = @$.last_column = 1;
-}
 
 %{
 # include <stdio.h>
 # include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 # define USE(SYM)
 %}
@@ -38331,17 +45541,9 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -38363,9 +45565,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:919: 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:1088: 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 input1.c input1.y"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:919"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1088"
 ( $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 input1.c input1.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -38373,29 +45575,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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:919: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input1.c input1.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 input1.c input1.y" "actions.at:919"
+$as_echo "$at_srcdir/actions.at:1088: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input1.c input1.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 input1.c input1.y" "actions.at:1088"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input1.c input1.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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:919: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1088: \$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:919"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1088"
 ( $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
@@ -38404,25 +45606,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:919: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1088: \$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:919"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1088"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38430,35 +45632,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:919: bison -o input1.c input1.y"
-at_fn_check_prepare_trace "actions.at:919"
+$as_echo "$at_srcdir/actions.at:1088: bison -o input1.c input1.y"
+at_fn_check_prepare_trace "actions.at:1088"
 ( $at_check_trace; bison -o input1.c input1.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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:919: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input1 input1.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input1 input1.c $LIBS" "actions.at:919"
+$as_echo "$at_srcdir/actions.at:1088: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1088"
+( $at_check_trace; $BISON_C_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:1088"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1088: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input1 input1.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input1 input1.c $LIBS" "actions.at:1088"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input1 input1.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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:919:  \$PREPARSER ./input1"
-at_fn_check_prepare_dynamic " $PREPARSER ./input1" "actions.at:919"
+$as_echo "$at_srcdir/actions.at:1088:  \$PREPARSER ./input1"
+at_fn_check_prepare_dynamic " $PREPARSER ./input1" "actions.at:1088"
 ( $at_check_trace;  $PREPARSER ./input1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -38468,33 +45683,33 @@ echo >>"$at_stdout"; $as_echo "<*> for 'E' @ 1.
 <*> for 'S' @ 1.
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/actions.at:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:919: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:919"
+$as_echo "$at_srcdir/actions.at:1088: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1088"
 ( $at_check_trace; sed >&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
-Reducing stack by rule 1 (line 46):
--> \$\$ = nterm start (1.1-1.1: <*> for 'S' @ 1)
+Reducing stack by rule 1 (line 42):
+-> \$\$ = nterm start (1.1: <*> for 'S' @ 1)
 Stack now 0
 Entering state 1
 Reading a token: Now at end of input.
-Shifting token END (1.1-1.1: <*> for 'E' @ 1)
+Shifting token END (1.1: <*> for 'E' @ 1)
 Entering state 2
 Stack now 0 1 2
-Cleanup: popping token END (1.1-1.1: <*> for 'E' @ 1)
-Cleanup: popping nterm start (1.1-1.1: <*> for 'S' @ 1)
+Cleanup: popping token END (1.1: <*> for 'E' @ 1)
+Cleanup: popping nterm start (1.1: <*> for 'S' @ 1)
 " | \
   $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:919"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1088"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38508,13 +45723,13 @@ $at_traceon; }
   $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:929' \
+#AT_STOP_167
+#AT_START_168
+at_fn_group_banner 168 'actions.at:1098' \
   "Default %printer and %destructor are not for error or \$undefined" "" 9
 at_xfail=no
 (
-  $as_echo "142. $at_setup_line: testing $at_desc ..."
+  $as_echo "168. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38541,7 +45756,7 @@ cat >input.y <<'_ATEOF'
 %{
 # include <stdio.h>
 # include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 # define USE(SYM)
 %}
@@ -38566,9 +45781,8 @@ start:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -38601,9 +45815,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:979: 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:1148: 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:979"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1148"
 ( $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>&-
@@ -38611,29 +45825,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:979"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1148"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:979: 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:979"
+$as_echo "$at_srcdir/actions.at:1148: 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:1148"
 ( $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:979"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1148"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:979: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1148: \$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:979"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1148"
 ( $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
@@ -38642,25 +45856,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:979"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1148"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:979: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1148: \$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:979"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1148"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:979"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1148"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38668,48 +45882,61 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:979: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:979"
+$as_echo "$at_srcdir/actions.at:1148: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1148"
 ( $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:979"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1148"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:980: \$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:980"
+$as_echo "$at_srcdir/actions.at:1149: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1149"
+( $at_check_trace; $BISON_C_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:1149"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1149: \$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:1149"
 ( $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:980"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1149"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:981:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:981"
+$as_echo "$at_srcdir/actions.at:1150:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1150"
 ( $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/actions.at:981"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:981: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:981"
+$as_echo "$at_srcdir/actions.at:1150: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1150"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -38749,7 +45976,7 @@ DESTROY 'a'
 " | \
   $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:981"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1150"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38759,13 +45986,13 @@ $at_traceon; }
   $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:1024' \
+#AT_STOP_168
+#AT_START_169
+at_fn_group_banner 169 'actions.at:1193' \
   "Default %printer and %destructor are not for \$accept" "" 9
 at_xfail=no
 (
-  $as_echo "143. $at_setup_line: testing $at_desc ..."
+  $as_echo "169. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38797,7 +46024,7 @@ cat >input.y <<'_ATEOF'
 %{
 # include <stdio.h>
 # include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 # define USE(SYM)
 %}
@@ -38822,9 +46049,8 @@ start: { USE($$); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -38856,9 +46082,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:1078: 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:1247: 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:1078"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1247"
 ( $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>&-
@@ -38866,29 +46092,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:1078"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1078: 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:1078"
+$as_echo "$at_srcdir/actions.at:1247: 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:1247"
 ( $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:1078"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1078: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1247: \$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:1078"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1247"
 ( $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
@@ -38897,25 +46123,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1078"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1078: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1247: \$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:1078"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1247"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1078"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38923,29 +46149,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1078: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1078"
+$as_echo "$at_srcdir/actions.at:1247: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1247"
 ( $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:1078"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1247"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1079: \$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:1079"
+$as_echo "$at_srcdir/actions.at:1248: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1248"
+( $at_check_trace; $BISON_C_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:1248"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1248: \$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:1248"
 ( $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:1079"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1248"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -38954,13 +46193,13 @@ $at_traceon; }
   $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:1089' \
+#AT_STOP_169
+#AT_START_170
+at_fn_group_banner 170 'actions.at:1258' \
   "Default %printer and %destructor for mid-rule values" "" 9
 at_xfail=no
 (
-  $as_echo "144. $at_setup_line: testing $at_desc ..."
+  $as_echo "170. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -38979,7 +46218,7 @@ cat >input.y <<'_ATEOF'
 %{
 # include <stdio.h>
 # include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 # define USE(SYM)
 # define YYLTYPE int
@@ -39007,9 +46246,8 @@ start:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -39042,9 +46280,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:1134: 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:1303: 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:1134"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1303"
 ( $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>&-
@@ -39052,29 +46290,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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: 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:1134"
+$as_echo "$at_srcdir/actions.at:1303: 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:1303"
 ( $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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1303: \$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:1134"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1303"
 ( $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
@@ -39083,25 +46321,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1303: \$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:1134"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1303"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39109,25 +46347,25 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1134: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1134"
+$as_echo "$at_srcdir/actions.at:1303: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1303"
 ( $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:33.3-23: warning: unset value: \$\$
-input.y:30.3-35.37: warning: unused value: \$3
+input.y:32.3-23: warning: unused value: \$3
 " | \
   $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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -39135,15 +46373,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: 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:1134"
+$as_echo "$at_srcdir/actions.at:1303: 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:1303"
 ( $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:1134"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39152,7 +46390,7 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:33.3-23: warning: unset value: $$
-input.y:30.3-35.37: warning: unused value: $3
+input.y:32.3-23: warning: unused value: $3
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -39180,9 +46418,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:1134: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/actions.at:1303: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1134"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1303"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -39190,7 +46428,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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39198,15 +46436,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: 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:1134"
+$as_echo "$at_srcdir/actions.at:1303: 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:1303"
 ( $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:1134"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39215,28 +46453,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:1134: 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:1134"
+$as_echo "$at_srcdir/actions.at:1303: 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:1303"
 ( $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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/actions.at:1134: 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:1134"
+$as_echo "$at_srcdir/actions.at:1303: 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:1303"
 ( $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:1134"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39244,35 +46482,264 @@ $at_traceon; }
   at_restore_special_files
 fi
 
+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:1308: 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 -fcaret -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1308"
+( $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 -fcaret -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:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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 -fcaret -o input.c input.y" "actions.at:1308"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: \$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:1308"
+( $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:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1308"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:1308"
+$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:1139: \$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:1139"
+$as_echo "$at_srcdir/actions.at:1308: bison -fcaret -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1308"
+( $at_check_trace; bison -fcaret -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:33.3-23: warning: unset value: \$\$
+   {           @\$ = 4; } // Only used.
+   ^^^^^^^^^^^^^^^^^^^^^
+input.y:32.3-23: warning: unused value: \$3
+   { USE (\$\$); @\$ = 3; } // Only set.
+   ^^^^^^^^^^^^^^^^^^^^^
+" | \
+  $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:1308"
+$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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Werror" "actions.at:1308"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:1308"
+$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'
+input.y:33.3-23: warning: unset value: $$
+   {           @$ = 4; } // Only used.
+   ^^^^^^^^^^^^^^^^^^^^^
+input.y:32.3-23: warning: unused value: $3
+   { USE ($$); @$ = 3; } // Only set.
+   ^^^^^^^^^^^^^^^^^^^^^
+_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/actions.at:1308: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1308"
+( $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/actions.at:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=error" "actions.at:1308"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:1308"
+$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/actions.at:1308: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Wnone -Werror" "actions.at:1308"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1308: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=none -Werror" "actions.at:1308"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:1308"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  at_restore_special_files
+fi
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1317: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1317"
+( $at_check_trace; $BISON_C_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:1317"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1317: \$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:1317"
 ( $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:1139"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1317"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1140:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1140"
+$as_echo "$at_srcdir/actions.at:1318:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1318"
 ( $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/actions.at:1140"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1318"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1140: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:1140"
+$as_echo "$at_srcdir/actions.at:1318: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1318"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -39313,7 +46780,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/actions.at:1140"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1318"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39323,13 +46790,13 @@ $at_traceon; }
   $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:1228' \
+#AT_STOP_170
+#AT_START_171
+at_fn_group_banner 171 'actions.at:1406' \
   "@\$ in %initial-action implies %locations" "       " 9
 at_xfail=no
 (
-  $as_echo "145. $at_setup_line: testing $at_desc ..."
+  $as_echo "171. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -39344,7 +46811,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 }
 
@@ -39369,9 +46836,8 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -39389,9 +46855,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: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:1406: 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:1406"
 ( $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>&-
@@ -39399,29 +46865,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:1406"
 $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:1406: 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:1406"
 ( $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:1406"
 $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:1406: \$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:1406"
 ( $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
@@ -39430,25 +46896,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1228: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1406: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1406"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39456,29 +46922,42 @@ $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:1406: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1406"
 ( $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:1406"
 $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:1406: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1406"
+( $at_check_trace; $BISON_C_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:1406"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1406: \$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:1406"
 ( $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:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39487,13 +46966,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_171
+#AT_START_172
+at_fn_group_banner 172 'actions.at:1407' \
   "@\$ in %destructor implies %locations" "           " 9
 at_xfail=no
 (
-  $as_echo "146. $at_setup_line: testing $at_desc ..."
+  $as_echo "172. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -39508,7 +46987,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 }
 
@@ -39533,9 +47012,8 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -39553,9 +47031,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:1407: 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:1407"
 ( $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>&-
@@ -39563,29 +47041,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:1407"
 $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:1407: 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:1407"
 ( $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:1407"
 $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:1407: \$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:1407"
 ( $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
@@ -39594,25 +47072,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1407"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1229: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1407: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1407"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1407"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39620,29 +47098,42 @@ $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:1407: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1407"
 ( $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:1407"
 $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"
+$as_echo "$at_srcdir/actions.at:1407: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1407"
+( $at_check_trace; $BISON_C_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:1407"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.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" "actions.at:1407"
 ( $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:1407"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -39651,13 +47142,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_172
+#AT_START_173
+at_fn_group_banner 173 'actions.at:1408' \
   "@\$ in %printer implies %locations" "              " 9
 at_xfail=no
 (
-  $as_echo "147. $at_setup_line: testing $at_desc ..."
+  $as_echo "173. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -39672,7 +47163,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 }
 
@@ -39697,233 +47188,13 @@ yylex (void)
 #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: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>&-
-at_status=$? at_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_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"
-( $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_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$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: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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-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_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$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: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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-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_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: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:1230"
-$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"
-( $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_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_147
-#AT_START_148
-at_fn_group_banner 148 'actions.at:1362' \
-  "Qualified \$\$ in actions: yacc.c" "                " 9
-at_xfail=no
-(
-  $as_echo "148. $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 "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;
-
-# define YYSTYPE sem_type
-
-
-# include <stdio.h>
-  static void
-  report (FILE* yyo, int ival, float fval)
-  {
-    fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
-  }
-
-}
-
-%code
-{
-  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)
+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
@@ -39936,9 +47207,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:1362: 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:1408: 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:1362"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1408"
 ( $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>&-
@@ -39946,29 +47217,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:1362"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1408"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1408: 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:1408"
 ( $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:1362"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1408"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1362: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1408: \$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:1362"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1408"
 ( $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
@@ -39977,25 +47248,247 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1362"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1408"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1362: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1408: \$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:1362"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1408"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:1408"
+$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:1408: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1408"
+( $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:1408"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1408: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1408"
+( $at_check_trace; $BISON_C_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:1408"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1408: \$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:1408"
+( $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:1408"
+$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_173
+#AT_START_174
+at_fn_group_banner 174 'actions.at:1529' \
+  "Qualified \$\$ in actions: yacc.c" "                " 9
+at_xfail=no
+(
+  $as_echo "174. $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 "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;
+
+# define YYSTYPE sem_type
+
+
+# include <stdio.h>
+  static void
+  report (FILE* yyo, int ival, float fval)
+  {
+    fprintf (yyo, "ival: %d, fval: %1.1f", ival, fval);
+  }
+
+}
+
+%code
+{
+  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)
+{
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  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
+
+
+
+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:1529: 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:1529"
+( $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:1529"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/actions.at:1529: 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:1529"
+( $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:1529"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1529: \$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:1529"
+( $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:1362"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1529"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/actions.at:1529: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1529"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:1529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40003,56 +47496,69 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1362: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1362"
+$as_echo "$at_srcdir/actions.at:1529: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1529"
 ( $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:1362"
+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: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"
+$as_echo "$at_srcdir/actions.at:1529: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1529"
+( $at_check_trace; $BISON_C_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:1529"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$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:1362"
+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:1362:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1362"
+$as_echo "$at_srcdir/actions.at:1529:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1529"
 ( $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_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:1362: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:1362"
+$as_echo "$at_srcdir/actions.at:1529: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1529"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40063,8 +47569,8 @@ $at_traceon; }
 # 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"
+$as_echo "$at_srcdir/actions.at:1529: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1529"
 ( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -40080,7 +47586,7 @@ Shifting token INT (ival: 20, fval: 0.2)
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40091,13 +47597,13 @@ $at_traceon; }
   $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 'actions.at:1363' \
+#AT_STOP_174
+#AT_START_175
+at_fn_group_banner 175 'actions.at:1530' \
   "Qualified \$\$ in actions: glr.c" "                 " 9
 at_xfail=no
 (
-  $as_echo "149. $at_setup_line: testing $at_desc ..."
+  $as_echo "175. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -40138,7 +47644,7 @@ cat >input.y <<'_ATEOF'
 
 %code
 {
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -40149,8 +47655,6 @@ cat >input.y <<'_ATEOF'
 %printer { report (yyo, $<ival>$, $$      ); } <fval>;
 %printer { report (yyo, $<ival>$, $<fval>$); } <>;
 
-
-
 %initial-action
 {
   $<ival>$ = 42;
@@ -40167,17 +47671,9 @@ float: UNTYPED INT
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -40212,9 +47708,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:1363: 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:1530: 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:1363"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1530"
 ( $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>&-
@@ -40222,29 +47718,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:1363"
+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: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"
+$as_echo "$at_srcdir/actions.at:1530: 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:1530"
 ( $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:1363"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1363: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1530: \$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:1363"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1530"
 ( $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
@@ -40253,25 +47749,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1363"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1363: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1530: \$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:1363"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1530"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1363"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40279,56 +47775,69 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1363: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1363"
+$as_echo "$at_srcdir/actions.at:1530: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1530"
 ( $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:1363"
+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: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"
+$as_echo "$at_srcdir/actions.at:1530: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1530"
+( $at_check_trace; $BISON_C_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:1530"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1530: \$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:1530"
 ( $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:1363"
+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:1363:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1363"
+$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:1363"
+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:1363: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "actions.at:1363"
+$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
 $at_check_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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40339,8 +47848,8 @@ $at_traceon; }
 # 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"
+$as_echo "$at_srcdir/actions.at:1530: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1530"
 ( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -40356,7 +47865,7 @@ Shifting token INT (ival: 20, fval: 0.2)
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40367,13 +47876,13 @@ $at_traceon; }
   $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 'actions.at:1364' \
+#AT_STOP_175
+#AT_START_176
+at_fn_group_banner 176 'actions.at:1531' \
   "Qualified \$\$ in actions: lalr1.cc" "              " 9
 at_xfail=no
 (
-  $as_echo "150. $at_setup_line: testing $at_desc ..."
+  $as_echo "176. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -40425,17 +47934,6 @@ cat >input.y <<'_ATEOF'
 %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;
@@ -40490,9 +47988,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:1364: 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:1531: 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_fn_check_prepare_notrace 'an embedded newline' "actions.at:1531"
 ( $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>&-
@@ -40500,29 +47998,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:1364"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $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"
+$as_echo "$at_srcdir/actions.at:1531: 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:1531"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1364: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1531: \$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_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1531"
 ( $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
@@ -40531,25 +48029,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1364: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1531: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1531"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40557,70 +48055,70 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/actions.at:1531: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:1531"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $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"
+$as_echo "$at_srcdir/actions.at:1531: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:1531"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $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"
+$as_echo "$at_srcdir/actions.at:1531: \$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:1531"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $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"
+$as_echo "$at_srcdir/actions.at:1531:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1531"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $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"
+$as_echo "$at_srcdir/actions.at:1531: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1531"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40631,8 +48129,8 @@ $at_traceon; }
 # 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"
+$as_echo "$at_srcdir/actions.at:1531: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1531"
 ( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -40648,7 +48146,7 @@ Shifting token INT (ival: 20, fval: 0.2)
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40659,13 +48157,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_176
+#AT_START_177
+at_fn_group_banner 177 'actions.at:1532' \
   "Qualified \$\$ in actions: glr.cc" "                " 9
 at_xfail=no
 (
-  $as_echo "151. $at_setup_line: testing $at_desc ..."
+  $as_echo "177. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -40717,17 +48215,6 @@ cat >input.y <<'_ATEOF'
 %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;
@@ -40782,9 +48269,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:1365: 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:1532: 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_fn_check_prepare_notrace 'an embedded newline' "actions.at:1532"
 ( $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>&-
@@ -40792,29 +48279,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:1365"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $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"
+$as_echo "$at_srcdir/actions.at:1532: 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:1532"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1365: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1532: \$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_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1532"
 ( $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
@@ -40823,25 +48310,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1365: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1532: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1532"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40849,70 +48336,70 @@ $at_traceon; }
   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"
+$as_echo "$at_srcdir/actions.at:1532: bison -o input.cc input.y"
+at_fn_check_prepare_trace "actions.at:1532"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $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"
+$as_echo "$at_srcdir/actions.at:1532: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "actions.at:1532"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $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"
+$as_echo "$at_srcdir/actions.at:1532: \$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:1532"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $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"
+$as_echo "$at_srcdir/actions.at:1532:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1532"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $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"
+$as_echo "$at_srcdir/actions.at:1532: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1532"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40923,8 +48410,8 @@ $at_traceon; }
 # 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"
+$as_echo "$at_srcdir/actions.at:1532: sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr"
+at_fn_check_prepare_trace "actions.at:1532"
 ( $at_check_trace; sed -ne 's/([-0-9.]*: /(/;/ival:/p' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -40940,7 +48427,7 @@ Shifting token INT (ival: 20, fval: 0.2)
 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_fn_check_status 0 $at_status "$at_srcdir/actions.at:1532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -40951,13 +48438,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_177
+#AT_START_178
+at_fn_group_banner 178 'actions.at:1540' \
   "Fix user actions without a trailing semicolon" "  " 9
 at_xfail=no
 (
-  $as_echo "152. $at_setup_line: testing $at_desc ..."
+  $as_echo "178. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -41023,9 +48510,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:1430: 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:1597: 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:1430"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1597"
 ( $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>&-
@@ -41033,29 +48520,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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1597: 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:1597"
 ( $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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1430: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1597: \$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:1430"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1597"
 ( $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
@@ -41064,25 +48551,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1430: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1597: \$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:1430"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1597"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41090,59 +48577,59 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1430: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1430"
+$as_echo "$at_srcdir/actions.at:1597: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1597"
 ( $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:8.48: warning: a ';' might be needed at the end of action code
-input.y:8.48: warning: future versions of Bison will not add the ';'
+input.y:8.48:     future versions of Bison will not add the ';'
 input.y:9.48: warning: a ';' might be needed at the end of action code
-input.y:9.48: warning: future versions of Bison will not add the ';'
+input.y:9.48:     future versions of Bison will not add the ';'
 input.y:10.48: warning: a ';' might be needed at the end of action code
-input.y:10.48: warning: future versions of Bison will not add the ';'
+input.y:10.48:     future versions of Bison will not add the ';'
 input.y:11.48: warning: a ';' might be needed at the end of action code
-input.y:11.48: warning: future versions of Bison will not add the ';'
+input.y:11.48:     future versions of Bison will not add the ';'
 input.y:12.48: warning: a ';' might be needed at the end of action code
-input.y:12.48: warning: future versions of Bison will not add the ';'
+input.y:12.48:     future versions of Bison will not add the ';'
 input.y:13.48: warning: a ';' might be needed at the end of action code
-input.y:13.48: warning: future versions of Bison will not add the ';'
+input.y:13.48:     future versions of Bison will not add the ';'
 input.y:20.1: warning: a ';' might be needed at the end of action code
-input.y:20.1: warning: future versions of Bison will not add the ';'
+input.y:20.1:     future versions of Bison will not add the ';'
 input.y:21.1: warning: a ';' might be needed at the end of action code
-input.y:21.1: warning: future versions of Bison will not add the ';'
+input.y:21.1:     future versions of Bison will not add the ';'
 input.y:22.1: warning: a ';' might be needed at the end of action code
-input.y:22.1: warning: future versions of Bison will not add the ';'
+input.y:22.1:     future versions of Bison will not add the ';'
 input.y:23.1: warning: a ';' might be needed at the end of action code
-input.y:23.1: warning: future versions of Bison will not add the ';'
+input.y:23.1:     future versions of Bison will not add the ';'
 input.y:24.1: warning: a ';' might be needed at the end of action code
-input.y:24.1: warning: future versions of Bison will not add the ';'
+input.y:24.1:     future versions of Bison will not add the ';'
 input.y:25.1: warning: a ';' might be needed at the end of action code
-input.y:25.1: warning: future versions of Bison will not add the ';'
+input.y:25.1:     future versions of Bison will not add the ';'
 input.y:31.1: warning: a ';' might be needed at the end of action code
-input.y:31.1: warning: future versions of Bison will not add the ';'
+input.y:31.1:     future versions of Bison will not add the ';'
 input.y:32.1: warning: a ';' might be needed at the end of action code
-input.y:32.1: warning: future versions of Bison will not add the ';'
+input.y:32.1:     future versions of Bison will not add the ';'
 input.y:33.1: warning: a ';' might be needed at the end of action code
-input.y:33.1: warning: future versions of Bison will not add the ';'
+input.y:33.1:     future versions of Bison will not add the ';'
 input.y:34.1: warning: a ';' might be needed at the end of action code
-input.y:34.1: warning: future versions of Bison will not add the ';'
+input.y:34.1:     future versions of Bison will not add the ';'
 input.y:35.1: warning: a ';' might be needed at the end of action code
-input.y:35.1: warning: future versions of Bison will not add the ';'
+input.y:35.1:     future versions of Bison will not add the ';'
 input.y:36.1: warning: a ';' might be needed at the end of action code
-input.y:36.1: warning: future versions of Bison will not add the ';'
+input.y:36.1:     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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -41150,15 +48637,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1597: 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:1597"
 ( $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:1430"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41167,41 +48654,41 @@ $at_traceon; }
   # treated as errors" message.
   cat >at-bison-check-warnings <<'_ATEOF'
 input.y:8.48: warning: a ';' might be needed at the end of action code
-input.y:8.48: warning: future versions of Bison will not add the ';'
+input.y:8.48:     future versions of Bison will not add the ';'
 input.y:9.48: warning: a ';' might be needed at the end of action code
-input.y:9.48: warning: future versions of Bison will not add the ';'
+input.y:9.48:     future versions of Bison will not add the ';'
 input.y:10.48: warning: a ';' might be needed at the end of action code
-input.y:10.48: warning: future versions of Bison will not add the ';'
+input.y:10.48:     future versions of Bison will not add the ';'
 input.y:11.48: warning: a ';' might be needed at the end of action code
-input.y:11.48: warning: future versions of Bison will not add the ';'
+input.y:11.48:     future versions of Bison will not add the ';'
 input.y:12.48: warning: a ';' might be needed at the end of action code
-input.y:12.48: warning: future versions of Bison will not add the ';'
+input.y:12.48:     future versions of Bison will not add the ';'
 input.y:13.48: warning: a ';' might be needed at the end of action code
-input.y:13.48: warning: future versions of Bison will not add the ';'
+input.y:13.48:     future versions of Bison will not add the ';'
 input.y:20.1: warning: a ';' might be needed at the end of action code
-input.y:20.1: warning: future versions of Bison will not add the ';'
+input.y:20.1:     future versions of Bison will not add the ';'
 input.y:21.1: warning: a ';' might be needed at the end of action code
-input.y:21.1: warning: future versions of Bison will not add the ';'
+input.y:21.1:     future versions of Bison will not add the ';'
 input.y:22.1: warning: a ';' might be needed at the end of action code
-input.y:22.1: warning: future versions of Bison will not add the ';'
+input.y:22.1:     future versions of Bison will not add the ';'
 input.y:23.1: warning: a ';' might be needed at the end of action code
-input.y:23.1: warning: future versions of Bison will not add the ';'
+input.y:23.1:     future versions of Bison will not add the ';'
 input.y:24.1: warning: a ';' might be needed at the end of action code
-input.y:24.1: warning: future versions of Bison will not add the ';'
+input.y:24.1:     future versions of Bison will not add the ';'
 input.y:25.1: warning: a ';' might be needed at the end of action code
-input.y:25.1: warning: future versions of Bison will not add the ';'
+input.y:25.1:     future versions of Bison will not add the ';'
 input.y:31.1: warning: a ';' might be needed at the end of action code
-input.y:31.1: warning: future versions of Bison will not add the ';'
+input.y:31.1:     future versions of Bison will not add the ';'
 input.y:32.1: warning: a ';' might be needed at the end of action code
-input.y:32.1: warning: future versions of Bison will not add the ';'
+input.y:32.1:     future versions of Bison will not add the ';'
 input.y:33.1: warning: a ';' might be needed at the end of action code
-input.y:33.1: warning: future versions of Bison will not add the ';'
+input.y:33.1:     future versions of Bison will not add the ';'
 input.y:34.1: warning: a ';' might be needed at the end of action code
-input.y:34.1: warning: future versions of Bison will not add the ';'
+input.y:34.1:     future versions of Bison will not add the ';'
 input.y:35.1: warning: a ';' might be needed at the end of action code
-input.y:35.1: warning: future versions of Bison will not add the ';'
+input.y:35.1:     future versions of Bison will not add the ';'
 input.y:36.1: warning: a ';' might be needed at the end of action code
-input.y:36.1: warning: future versions of Bison will not add the ';'
+input.y:36.1:     future versions of Bison will not add the ';'
 _ATEOF
 
   at_bison_check_first=`sed -n \
@@ -41229,9 +48716,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:1430: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/actions.at:1597: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1430"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1597"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -41239,7 +48726,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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41247,15 +48734,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1597: 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:1597"
 ( $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:1430"
+at_fn_check_status 1 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41264,28 +48751,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: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"
+$as_echo "$at_srcdir/actions.at:1597: 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:1597"
 ( $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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1597: 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:1597"
 ( $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:1430"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41294,12 +48781,12 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1469: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1636: \$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:1469"
-( $at_check_trace; perl -0777 -ne '
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1636"
+( $at_check_trace; $PERL -0777 -ne '
 my $count = 0;
 s{/\* TEST:N:2 \*/ \}$}{ ++$count; "" }gem;
 printf "$count\n";' input.c
@@ -41310,17 +48797,17 @@ 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:1469"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1636"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1470: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1637: \$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:1470"
-( $at_check_trace; perl -0777 -ne '
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1637"
+( $at_check_trace; $PERL -0777 -ne '
 my $count = 0;
 s{/\* TEST:Y:2 \*/ ;\}$}{ ++$count; "" }gem;
 printf "$count\n";' input.c
@@ -41331,17 +48818,17 @@ 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:1470"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1637"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1471: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1638: \$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:1471"
-( $at_check_trace; perl -0777 -ne '
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1638"
+( $at_check_trace; $PERL -0777 -ne '
 my $count = 0;
 s{// TEST:N:1 [;{}]*\n\}$}{ ++$count; "" }gem;
 printf "$count\n";' input.c
@@ -41352,17 +48839,17 @@ 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:1471"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1472: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1639: \$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:1472"
-( $at_check_trace; perl -0777 -ne '
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1639"
+( $at_check_trace; $PERL -0777 -ne '
 my $count = 0;
 s{// TEST:Y:1 [;{}]*\n;\}$}{ ++$count; "" }gem;
 printf "$count\n";' input.c
@@ -41373,17 +48860,17 @@ 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:1472"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1473: perl -0777 -ne '
+$as_echo "$at_srcdir/actions.at:1640: \$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:1473"
-( $at_check_trace; perl -0777 -ne '
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1640"
+( $at_check_trace; $PERL -0777 -ne '
 my $count = 0;
 s{#define TEST_MACRO_N \\\n\[\]"broken\\" \$ \@ \$\$ \@\$ \[\];\\\nstring;"\}}{ ++$count; "" }gem;
 printf "$count\n";' input.c
@@ -41394,7 +48881,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:1473"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41403,13 +48890,13 @@ $at_traceon; }
   $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 'actions.at:1482' \
+#AT_STOP_178
+#AT_START_179
+at_fn_group_banner 179 'actions.at:1649' \
   "Destroying lookahead assigned by semantic action" "" 9
 at_xfail=no
 (
-  $as_echo "153. $at_setup_line: testing $at_desc ..."
+  $as_echo "179. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -41427,7 +48914,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
   #define USE(Var)
 }
@@ -41459,9 +48946,8 @@ accept: /*empty*/ {
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -41492,9 +48978,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:1528: 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:1695: 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:1528"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1695"
 ( $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>&-
@@ -41502,29 +48988,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:1528"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1695"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1695: 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:1695"
 ( $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:1528"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1695"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1528: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1695: \$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:1528"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1695"
 ( $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
@@ -41533,25 +49019,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1528"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1695"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1528: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1695: \$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:1528"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1695"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1528"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1695"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41559,48 +49045,61 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1528: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1528"
+$as_echo "$at_srcdir/actions.at:1695: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1695"
 ( $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:1528"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1695"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1696: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1696"
+( $at_check_trace; $BISON_C_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:1696"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1696: \$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:1696"
 ( $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:1529"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1696"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1530:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1530"
+$as_echo "$at_srcdir/actions.at:1697:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1697"
 ( $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:1530"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1697"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1697: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1697"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -41610,7 +49109,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:1530"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1697"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41620,13 +49119,13 @@ $at_traceon; }
   $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 'actions.at:1541' \
+#AT_STOP_179
+#AT_START_180
+at_fn_group_banner 180 'actions.at:1708' \
   "YYBACKUP" "                                       " 9
 at_xfail=no
 (
-  $as_echo "154. $at_setup_line: testing $at_desc ..."
+  $as_echo "180. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -41650,7 +49149,7 @@ cat >input.y <<'_ATEOF'
 # include <stdlib.h>
 # include <assert.h>
 
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (YYSTYPE *lvalp);
 }
 %%
@@ -41668,9 +49167,8 @@ exp:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -41704,9 +49202,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:1582: 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:1749: 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:1582"
+at_fn_check_prepare_notrace 'an embedded newline' "actions.at:1749"
 ( $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>&-
@@ -41714,29 +49212,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:1582"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1749: 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:1749"
 ( $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:1582"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1582: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1749: \$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:1582"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1749"
 ( $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
@@ -41745,25 +49243,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1582"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/actions.at:1582: \$XSLTPROC \\
+$as_echo "$at_srcdir/actions.at:1749: \$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:1582"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "actions.at:1749"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1582"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41771,35 +49269,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/actions.at:1582: bison -o input.c input.y"
-at_fn_check_prepare_trace "actions.at:1582"
+$as_echo "$at_srcdir/actions.at:1749: bison -o input.c input.y"
+at_fn_check_prepare_trace "actions.at:1749"
 ( $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:1582"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1749"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1750: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "actions.at:1750"
+( $at_check_trace; $BISON_C_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:1750"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/actions.at:1750: \$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:1750"
 ( $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:1583"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1750"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/actions.at:1584:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1584"
+$as_echo "$at_srcdir/actions.at:1751:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "actions.at:1751"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -41809,20 +49320,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:1584"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/actions.at:1751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "actions.at:1751"
 ( $at_check_trace; 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:1584"
+at_fn_check_status 0 $at_status "$at_srcdir/actions.at:1751"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -41832,13 +49343,13 @@ $at_traceon; }
   $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:31' \
+#AT_STOP_180
+#AT_START_181
+at_fn_group_banner 181 'conflicts.at:31' \
   "S/R in initial" "                                 " 10
 at_xfail=no
 (
-  $as_echo "155. $at_setup_line: testing $at_desc ..."
+  $as_echo "181. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -41901,15 +49412,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:40"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/conflicts.at:40: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:40"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -41937,10 +49448,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:40"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -42056,17 +49567,227 @@ $at_traceon; }
   at_restore_special_files
 fi
 
+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/conflicts.at:44: 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 -fcaret -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:44"
+( $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 -fcaret -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/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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 -fcaret -o input.c input.y" "conflicts.at:44"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: \$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' "conflicts.at:44"
+( $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/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:44"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:44: bison -fcaret -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:44"
+( $at_check_trace; bison -fcaret -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:4.9: warning: rule useless in parser due to conflicts
+ e: 'e' | /* Nothing. */;
+         ^
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:44"
+$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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Werror" "conflicts.at:44"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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/conflicts.at:44"
+$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'
+input.y:4.9: warning: rule useless in parser due to conflicts
+ e: 'e' | /* Nothing. */;
+         ^
+_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/conflicts.at:44: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:44"
+( $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/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=error" "conflicts.at:44"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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/conflicts.at:44"
+$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/conflicts.at:44: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Wnone -Werror" "conflicts.at:44"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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/conflicts.at:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:44: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=none -Werror" "conflicts.at:44"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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/conflicts.at:44"
+$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_155
-#AT_START_156
-at_fn_group_banner 156 'conflicts.at:51' \
+#AT_STOP_181
+#AT_START_182
+at_fn_group_banner 182 'conflicts.at:57' \
   "%nonassoc and eof" "                              " 10
 at_xfail=no
 (
-  $as_echo "156. $at_setup_line: testing $at_desc ..."
+  $as_echo "182. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -42091,9 +49812,8 @@ cat >input.y <<'_ATEOF'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 /* The current argument. */
@@ -42137,9 +49857,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/conflicts.at:117: 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/conflicts.at:123: 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' "conflicts.at:117"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:123"
 ( $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>&-
@@ -42147,29 +49867,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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:117: 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" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: 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" "conflicts.at:123"
 ( $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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:117: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:123: \$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' "conflicts.at:117"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:123"
 ( $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
@@ -42178,25 +49898,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:117: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:123: \$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' "conflicts.at:117"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:123"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42204,29 +49924,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: bison  -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: bison  -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:123"
+( $at_check_trace; $BISON_C_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/conflicts.at:123"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:123: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:123"
 ( $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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42234,48 +49967,48 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117:  \$PREPARSER ./input '0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123:  \$PREPARSER ./input '0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:123"
 ( $at_check_trace;  $PREPARSER ./input '0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $at_check_trace; 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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117:  \$PREPARSER ./input '0<0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123:  \$PREPARSER ./input '0<0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:123"
 ( $at_check_trace;  $PREPARSER ./input '0<0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42284,55 +50017,55 @@ 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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117:  \$PREPARSER ./input '0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123:  \$PREPARSER ./input '0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:123"
 ( $at_check_trace;  $PREPARSER ./input '0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $at_check_trace; 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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117:  \$PREPARSER ./input '0>0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123:  \$PREPARSER ./input '0>0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:123"
 ( $at_check_trace;  $PREPARSER ./input '0>0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42341,28 +50074,28 @@ 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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117:  \$PREPARSER ./input '0<0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123:  \$PREPARSER ./input '0<0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:123"
 ( $at_check_trace;  $PREPARSER ./input '0<0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:117"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:117: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:117"
+$as_echo "$at_srcdir/conflicts.at:123: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:123"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42371,7 +50104,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/conflicts.at:117"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:123"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42387,9 +50120,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/conflicts.at:121: 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/conflicts.at:127: 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 -Dlr.default-reductions=consistent -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:121"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:127"
 ( $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 -Dlr.default-reductions=consistent -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -42397,29 +50130,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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:121: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.default-reductions=consistent -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 -Dlr.default-reductions=consistent -o input.c input.y" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.default-reductions=consistent -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 -Dlr.default-reductions=consistent -o input.c input.y" "conflicts.at:127"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.default-reductions=consistent -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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:121: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:127: \$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' "conflicts.at:121"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:127"
 ( $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
@@ -42428,25 +50161,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:121: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:127: \$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' "conflicts.at:121"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:127"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42454,29 +50187,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: bison -Dlr.default-reductions=consistent -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: bison -Dlr.default-reductions=consistent -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; bison -Dlr.default-reductions=consistent -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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:127"
+( $at_check_trace; $BISON_C_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/conflicts.at:127"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:127: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:127"
 ( $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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42484,48 +50230,48 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121:  \$PREPARSER ./input '0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127:  \$PREPARSER ./input '0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:127"
 ( $at_check_trace;  $PREPARSER ./input '0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; 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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121:  \$PREPARSER ./input '0<0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127:  \$PREPARSER ./input '0<0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:127"
 ( $at_check_trace;  $PREPARSER ./input '0<0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42534,55 +50280,55 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '<', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121:  \$PREPARSER ./input '0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127:  \$PREPARSER ./input '0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:127"
 ( $at_check_trace;  $PREPARSER ./input '0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; 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/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121:  \$PREPARSER ./input '0>0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127:  \$PREPARSER ./input '0>0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:127"
 ( $at_check_trace;  $PREPARSER ./input '0>0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42591,28 +50337,28 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121:  \$PREPARSER ./input '0<0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127:  \$PREPARSER ./input '0<0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:127"
 ( $at_check_trace;  $PREPARSER ./input '0<0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:121: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:121"
+$as_echo "$at_srcdir/conflicts.at:127: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:127"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42621,7 +50367,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:121"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:127"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42641,9 +50387,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/conflicts.at:130: 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/conflicts.at:136: 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 -Dlr.type=canonical-lr -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:130"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:136"
 ( $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 -Dlr.type=canonical-lr -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -42651,29 +50397,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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:130: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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 -Dlr.type=canonical-lr -o input.c input.y" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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 -Dlr.type=canonical-lr -o input.c input.y" "conflicts.at:136"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:130: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:136: \$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' "conflicts.at:130"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:136"
 ( $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
@@ -42682,25 +50428,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:130: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:136: \$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' "conflicts.at:130"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:136"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42708,29 +50454,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: bison -Dlr.type=canonical-lr -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: bison -Dlr.type=canonical-lr -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; bison -Dlr.type=canonical-lr -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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:136"
+( $at_check_trace; $BISON_C_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/conflicts.at:136"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:136: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:136"
 ( $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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42738,48 +50497,48 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130:  \$PREPARSER ./input '0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136:  \$PREPARSER ./input '0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:136"
 ( $at_check_trace;  $PREPARSER ./input '0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; 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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130:  \$PREPARSER ./input '0<0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136:  \$PREPARSER ./input '0<0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:136"
 ( $at_check_trace;  $PREPARSER ./input '0<0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42788,55 +50547,55 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '<', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130:  \$PREPARSER ./input '0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136:  \$PREPARSER ./input '0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:136"
 ( $at_check_trace;  $PREPARSER ./input '0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; 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/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130:  \$PREPARSER ./input '0>0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136:  \$PREPARSER ./input '0>0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:136"
 ( $at_check_trace;  $PREPARSER ./input '0>0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42845,28 +50604,28 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130:  \$PREPARSER ./input '0<0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136:  \$PREPARSER ./input '0<0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:136"
 ( $at_check_trace;  $PREPARSER ./input '0<0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:130: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:130"
+$as_echo "$at_srcdir/conflicts.at:136: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:136"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -42875,7 +50634,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:130"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42894,9 +50653,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/conflicts.at:137: 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/conflicts.at:143: 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 -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:137"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:143"
 ( $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 -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -42904,29 +50663,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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:137: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -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 -Dparse.lac=full -o input.c input.y" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dparse.lac=full -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 -Dparse.lac=full -o input.c input.y" "conflicts.at:143"
 ( $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 -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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:137: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:143: \$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' "conflicts.at:137"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:143"
 ( $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
@@ -42935,25 +50694,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:137: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:143: \$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' "conflicts.at:137"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:143"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42961,29 +50720,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: bison -Dparse.lac=full -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: bison -Dparse.lac=full -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; bison -Dparse.lac=full -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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:143"
+( $at_check_trace; $BISON_C_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/conflicts.at:143"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:143: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:143"
 ( $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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -42991,48 +50763,48 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137:  \$PREPARSER ./input '0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143:  \$PREPARSER ./input '0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0'" "conflicts.at:143"
 ( $at_check_trace;  $PREPARSER ./input '0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; 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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137:  \$PREPARSER ./input '0<0<0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143:  \$PREPARSER ./input '0<0<0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0<0'" "conflicts.at:143"
 ( $at_check_trace;  $PREPARSER ./input '0<0<0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43041,55 +50813,55 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '<', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137:  \$PREPARSER ./input '0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143:  \$PREPARSER ./input '0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0'" "conflicts.at:143"
 ( $at_check_trace;  $PREPARSER ./input '0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; 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/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137:  \$PREPARSER ./input '0>0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143:  \$PREPARSER ./input '0>0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0>0>0'" "conflicts.at:143"
 ( $at_check_trace;  $PREPARSER ./input '0>0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43098,28 +50870,28 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137:  \$PREPARSER ./input '0<0>0'"
-at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143:  \$PREPARSER ./input '0<0>0'"
+at_fn_check_prepare_dynamic " $PREPARSER ./input '0<0>0'" "conflicts.at:143"
 ( $at_check_trace;  $PREPARSER ./input '0<0>0'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:137: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:137"
+$as_echo "$at_srcdir/conflicts.at:143: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:143"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43128,7 +50900,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '>', expecting \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:137"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:143"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43142,13 +50914,13 @@ $at_traceon; }
   $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:149' \
+#AT_STOP_182
+#AT_START_183
+at_fn_group_banner 183 'conflicts.at:155' \
   "%error-verbose and consistent errors" "           " 10
 at_xfail=no
 (
-  $as_echo "157. $at_setup_line: testing $at_desc ..."
+  $as_echo "183. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -43187,7 +50959,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -43233,9 +51005,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -43259,9 +51030,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/conflicts.at:293: 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/conflicts.at:299: 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' "conflicts.at:293"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:299"
 ( $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>&-
@@ -43269,29 +51040,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/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:293: 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" "conflicts.at:293"
+$as_echo "$at_srcdir/conflicts.at:299: 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" "conflicts.at:299"
 ( $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/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:293: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:299: \$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' "conflicts.at:293"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:299"
 ( $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
@@ -43300,25 +51071,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:293: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:299: \$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' "conflicts.at:293"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:299"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43326,29 +51097,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:293: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:293"
+$as_echo "$at_srcdir/conflicts.at:299: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:299"
 ( $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/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:293: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:293"
+$as_echo "$at_srcdir/conflicts.at:299: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:299"
+( $at_check_trace; $BISON_C_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/conflicts.at:299"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:299: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:299"
 ( $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/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43357,21 +51141,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:293:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:293"
+$as_echo "$at_srcdir/conflicts.at:299:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:299"
 ( $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/conflicts.at:293"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:293: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:293"
+$as_echo "$at_srcdir/conflicts.at:299: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:299"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43380,7 +51164,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43411,7 +51195,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -43458,9 +51242,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -43484,9 +51267,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/conflicts.at:297: 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/conflicts.at:303: 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' "conflicts.at:297"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:303"
 ( $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>&-
@@ -43494,29 +51277,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/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:297: 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" "conflicts.at:297"
+$as_echo "$at_srcdir/conflicts.at:303: 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" "conflicts.at:303"
 ( $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/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:297: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:303: \$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' "conflicts.at:297"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:303"
 ( $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
@@ -43525,25 +51308,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:297: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:303: \$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' "conflicts.at:297"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:303"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43551,29 +51334,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:297: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:297"
+$as_echo "$at_srcdir/conflicts.at:303: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:303"
 ( $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/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:297: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:297"
+$as_echo "$at_srcdir/conflicts.at:303: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:303"
+( $at_check_trace; $BISON_C_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/conflicts.at:303"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:303: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:303"
 ( $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/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43582,21 +51378,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:297:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:297"
+$as_echo "$at_srcdir/conflicts.at:303:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:303"
 ( $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/conflicts.at:297"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:297: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:297"
+$as_echo "$at_srcdir/conflicts.at:303: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:303"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43605,7 +51401,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:297"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:303"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43708,9 +51504,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/conflicts.at:302: 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/conflicts.at:308: 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' "conflicts.at:302"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:308"
 ( $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>&-
@@ -43718,29 +51514,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/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:302: 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" "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308: 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" "conflicts.at:308"
 ( $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/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:302: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:308: \$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' "conflicts.at:302"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:308"
 ( $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
@@ -43749,25 +51545,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:302: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:308: \$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' "conflicts.at:302"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:308"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43775,43 +51571,43 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:302: bison -o input.cc input.y"
-at_fn_check_prepare_trace "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308: bison -o input.cc input.y"
+at_fn_check_prepare_trace "conflicts.at:308"
 ( $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/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:302: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "conflicts.at:308"
 ( $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/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:302: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "conflicts.at:308"
 ( $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/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43820,21 +51616,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:302:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:308"
 ( $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/conflicts.at:302"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:302: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:302"
+$as_echo "$at_srcdir/conflicts.at:308: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:308"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -43843,7 +51639,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:302"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:308"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -43942,9 +51738,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/conflicts.at:307: 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/conflicts.at:313: 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.java input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:307"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:313"
 ( $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.java input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -43952,29 +51748,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/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:307: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.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 -o input.java input.y" "conflicts.at:307"
+$as_echo "$at_srcdir/conflicts.at:313: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.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 -o input.java input.y" "conflicts.at:313"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.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/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:307: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:313: \$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' "conflicts.at:307"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:313"
 ( $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
@@ -43983,25 +51779,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:307: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:313: \$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' "conflicts.at:307"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:313"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44009,36 +51805,36 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:307: bison -o input.java input.y"
-at_fn_check_prepare_trace "conflicts.at:307"
+$as_echo "$at_srcdir/conflicts.at:313: bison -o input.java input.y"
+at_fn_check_prepare_trace "conflicts.at:313"
 ( $at_check_trace; bison -o input.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/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-$as_echo "conflicts.at:307" >"$at_check_line_file"
+$as_echo "conflicts.at:313" >"$at_check_line_file"
 (test -z "$CONF_JAVAC") \
-  && at_fn_check_skip 77 "$at_srcdir/conflicts.at:307"
-$as_echo "conflicts.at:307" >"$at_check_line_file"
+  && at_fn_check_skip 77 "$at_srcdir/conflicts.at:313"
+$as_echo "conflicts.at:313" >"$at_check_line_file"
 (test -z "$CONF_JAVA") \
-  && at_fn_check_skip 77 "$at_srcdir/conflicts.at:307"
+  && at_fn_check_skip 77 "$at_srcdir/conflicts.at:313"
 { set +x
-$as_echo "$at_srcdir/conflicts.at:307: \$SHELL ../../../javacomp.sh input.java"
-at_fn_check_prepare_dynamic "$SHELL ../../../javacomp.sh input.java" "conflicts.at:307"
+$as_echo "$at_srcdir/conflicts.at:313: \$SHELL ../../../javacomp.sh input.java"
+at_fn_check_prepare_dynamic "$SHELL ../../../javacomp.sh input.java" "conflicts.at:313"
 ( $at_check_trace; $SHELL ../../../javacomp.sh input.java
 ) >>"$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/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44047,8 +51843,8 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:307:  \$SHELL ../../../javaexec.sh input"
-at_fn_check_prepare_dynamic " $SHELL ../../../javaexec.sh input" "conflicts.at:307"
+$as_echo "$at_srcdir/conflicts.at:313:  \$SHELL ../../../javaexec.sh input"
+at_fn_check_prepare_dynamic " $SHELL ../../../javaexec.sh input" "conflicts.at:313"
 ( $at_check_trace;  $SHELL ../../../javaexec.sh input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -44057,7 +51853,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected end of input
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:307"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:313"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44089,7 +51885,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -44136,9 +51932,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -44162,9 +51957,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/conflicts.at:314: 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/conflicts.at:320: 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' "conflicts.at:314"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:320"
 ( $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>&-
@@ -44172,29 +51967,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/conflicts.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:314: 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" "conflicts.at:314"
+$as_echo "$at_srcdir/conflicts.at:320: 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" "conflicts.at:320"
 ( $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/conflicts.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:314: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:320: \$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' "conflicts.at:314"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:320"
 ( $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
@@ -44203,250 +51998,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:314"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:314: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:320: \$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' "conflicts.at:314"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:320"
 ( $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/conflicts.at:314"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/conflicts.at:314: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:314"
-( $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/conflicts.at:314"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-   { set +x
-$as_echo "$at_srcdir/conflicts.at:314: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:314"
-( $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/conflicts.at:314"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-
-
-{ set +x
-$as_echo "$at_srcdir/conflicts.at:314:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:314"
-( $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/conflicts.at:314"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/conflicts.at:314: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:314"
-( $at_check_trace; sed >&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 "syntax error, unexpected \$end, 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/conflicts.at:314"
-$at_failed && at_fn_log_failure
-$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 <assert.h>
-  #include <stdio.h>
-  static void yyerror (const char *msg);
-  int yylex (YYSTYPE *lvalp);
-  #define USE(Var)
-}
-
-%define api.pure
-
-%define lr.type ielr
-                             %define lr.default-reductions accepting
-
-%error-verbose
-
-%%
-
-%nonassoc 'a';
-
-start: consistent-error-on-a-a 'a' ;
-
-consistent-error-on-a-a:
-    'a' default-reduction
-  | 'a' default-reduction 'a'
-  | 'a' shift
-  ;
-
-default-reduction: /*empty*/ ;
-shift: 'b' ;
-
-// Provide another context in which all rules are useful so that this
-// test case looks a little more realistic.
-start: 'b' consistent-error-on-a-a 'c' ;
-
-
-%%
-
-/*--------.
-| yylex.  |
-`--------*/
-
-int yylex (YYSTYPE *lvalp)
-{
-  static char const *input = "a";
-  *lvalp = 1;
-  return *input++;
-}
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
-
-  fprintf (stderr, "%s\n", msg);
-}
-
-
-/*-------.
-| main.  |
-`-------*/
-
-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/conflicts.at:319: 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' "conflicts.at:319"
-( $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/conflicts.at:319"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:319: 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" "conflicts.at:319"
-( $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/conflicts.at:319"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:319: \$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' "conflicts.at:319"
-( $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/conflicts.at:319"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:319: \$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' "conflicts.at:319"
-( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:319"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44454,29 +52024,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:319: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:319"
+$as_echo "$at_srcdir/conflicts.at:320: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:320"
 ( $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/conflicts.at:319"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:319: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:319"
+$as_echo "$at_srcdir/conflicts.at:320: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:320"
+( $at_check_trace; $BISON_C_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/conflicts.at:320"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:320: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:320"
 ( $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/conflicts.at:319"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44485,21 +52068,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:319:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:319"
+$as_echo "$at_srcdir/conflicts.at:320:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:320"
 ( $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/conflicts.at:319"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:319: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:319"
+$as_echo "$at_srcdir/conflicts.at:320: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:320"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -44508,7 +52091,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'a' or
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:319"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:320"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44539,14 +52122,15 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
 
 %define api.pure
 
-%define lr.type canonical-lr
+%define lr.type ielr
+                             %define lr.default-reductions accepting
 
 %error-verbose
 
@@ -44585,9 +52169,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -44611,9 +52194,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/conflicts.at:324: 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/conflicts.at:325: 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' "conflicts.at:324"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:325"
 ( $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>&-
@@ -44621,29 +52204,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/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:324: 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" "conflicts.at:324"
+$as_echo "$at_srcdir/conflicts.at:325: 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" "conflicts.at:325"
 ( $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/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:324: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:325: \$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' "conflicts.at:324"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:325"
 ( $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
@@ -44652,25 +52235,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:324: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:325: \$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' "conflicts.at:324"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:325"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44678,29 +52261,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:324: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:324"
+$as_echo "$at_srcdir/conflicts.at:325: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:325"
 ( $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/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:324: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:324"
+$as_echo "$at_srcdir/conflicts.at:325: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:325"
+( $at_check_trace; $BISON_C_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/conflicts.at:325"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:325: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:325"
 ( $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/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44709,21 +52305,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:324:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:324"
+$as_echo "$at_srcdir/conflicts.at:325:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:325"
 ( $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/conflicts.at:324"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:324: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:324"
+$as_echo "$at_srcdir/conflicts.at:325: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:325"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -44732,7 +52328,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'a' or
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:324"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:325"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -44744,8 +52340,6 @@ $at_traceon; }
 
 
 
-# Only LAC gets it right.
-
 
 
 
@@ -44765,7 +52359,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -44773,7 +52367,6 @@ cat >input.y <<'_ATEOF'
 %define api.pure
 
 %define lr.type canonical-lr
-                             %define parse.lac full
 
 %error-verbose
 
@@ -44812,9 +52405,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -44883,15 +52475,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:330"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/conflicts.at:330: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:330"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -44919,6 +52511,19 @@ $at_traceon; }
 
 
    { set +x
+$as_echo "$at_srcdir/conflicts.at:330: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:330"
+( $at_check_trace; $BISON_C_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/conflicts.at:330"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/conflicts.at:330: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:330"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -44955,7 +52560,7 @@ at_fn_check_prepare_trace "conflicts.at:330"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'b'
+echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'a' or 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -44971,6 +52576,8 @@ $at_traceon; }
 
 
 
+# Only LAC gets it right.
+
 
 
 
@@ -44990,14 +52597,14 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
 
 %define api.pure
 
-%define lr.type ielr
+%define lr.type canonical-lr
                              %define parse.lac full
 
 %error-verbose
@@ -45037,9 +52644,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -45063,9 +52669,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/conflicts.at:335: 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/conflicts.at:336: 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' "conflicts.at:335"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:336"
 ( $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>&-
@@ -45073,29 +52679,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/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:336"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:335: 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" "conflicts.at:335"
+$as_echo "$at_srcdir/conflicts.at:336: 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" "conflicts.at:336"
 ( $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/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:336"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:335: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:336: \$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' "conflicts.at:335"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:336"
 ( $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
@@ -45104,25 +52710,262 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:336"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:335: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:336: \$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' "conflicts.at:335"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:336"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:336: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:336"
+( $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/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/conflicts.at:336: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:336"
+( $at_check_trace; $BISON_C_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/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:336: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:336"
+( $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/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:336:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:336"
+( $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/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:336: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:336"
+( $at_check_trace; sed >&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 "syntax error, unexpected \$end, expecting 'b'
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:336"
+$at_failed && at_fn_log_failure
+$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 <assert.h>
+  #include <stdio.h>
+  static void yyerror ( const char *msg);
+  int yylex (YYSTYPE *lvalp);
+  #define USE(Var)
+}
+
+%define api.pure
+
+%define lr.type ielr
+                             %define parse.lac full
+
+%error-verbose
+
+%%
+
+%nonassoc 'a';
+
+start: consistent-error-on-a-a 'a' ;
+
+consistent-error-on-a-a:
+    'a' default-reduction
+  | 'a' default-reduction 'a'
+  | 'a' shift
+  ;
+
+default-reduction: /*empty*/ ;
+shift: 'b' ;
+
+// Provide another context in which all rules are useful so that this
+// test case looks a little more realistic.
+start: 'b' consistent-error-on-a-a 'c' ;
+
+
+%%
+
+/*--------.
+| yylex.  |
+`--------*/
+
+int yylex (YYSTYPE *lvalp)
+{
+  static char const *input = "a";
+  *lvalp = 1;
+  return *input++;
+}
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
+{
+  fprintf (stderr, "%s\n", msg);
+}
+
+
+/*-------.
+| main.  |
+`-------*/
+
+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/conflicts.at:341: 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' "conflicts.at:341"
+( $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/conflicts.at:341"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:341: 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" "conflicts.at:341"
+( $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/conflicts.at:341"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:341: \$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' "conflicts.at:341"
+( $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/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:341"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:341: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:341"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45130,29 +52973,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:335: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:335"
+$as_echo "$at_srcdir/conflicts.at:341: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:341"
 ( $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/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:335: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:335"
+$as_echo "$at_srcdir/conflicts.at:341: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:341"
+( $at_check_trace; $BISON_C_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/conflicts.at:341"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:341: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:341"
 ( $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/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45161,21 +53017,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:335:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:335"
+$as_echo "$at_srcdir/conflicts.at:341:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:341"
 ( $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/conflicts.at:335"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:335: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:335"
+$as_echo "$at_srcdir/conflicts.at:341: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:341"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -45184,7 +53040,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:335"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:341"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45222,7 +53078,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -45295,9 +53151,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -45321,9 +53176,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/conflicts.at:391: 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/conflicts.at:397: 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' "conflicts.at:391"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:397"
 ( $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>&-
@@ -45331,29 +53186,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/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:391: 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" "conflicts.at:391"
+$as_echo "$at_srcdir/conflicts.at:397: 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" "conflicts.at:397"
 ( $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/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:391: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:397: \$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' "conflicts.at:391"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:397"
 ( $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
@@ -45362,25 +53217,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:391: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:397: \$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' "conflicts.at:391"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:397"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45388,29 +53243,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:391: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:391"
+$as_echo "$at_srcdir/conflicts.at:397: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:397"
 ( $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/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:391: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:391"
+$as_echo "$at_srcdir/conflicts.at:397: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:397"
+( $at_check_trace; $BISON_C_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/conflicts.at:397"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:397: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:397"
 ( $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/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45419,21 +53287,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:391:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:391"
+$as_echo "$at_srcdir/conflicts.at:397:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:397"
 ( $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/conflicts.at:391"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:391: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:391"
+$as_echo "$at_srcdir/conflicts.at:397: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:397"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -45442,7 +53310,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:391"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:397"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45473,7 +53341,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -45546,9 +53414,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -45572,9 +53439,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/conflicts.at:395: 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/conflicts.at:401: 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' "conflicts.at:395"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:401"
 ( $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>&-
@@ -45582,29 +53449,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/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:395: 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" "conflicts.at:395"
+$as_echo "$at_srcdir/conflicts.at:401: 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" "conflicts.at:401"
 ( $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/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:401: \$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' "conflicts.at:395"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:401"
 ( $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
@@ -45613,25 +53480,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:395: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:401: \$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' "conflicts.at:395"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:401"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45639,29 +53506,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:395: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:395"
+$as_echo "$at_srcdir/conflicts.at:401: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:401"
 ( $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/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:395"
+$as_echo "$at_srcdir/conflicts.at:401: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:401"
+( $at_check_trace; $BISON_C_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/conflicts.at:401"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:401: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:401"
 ( $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/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45670,21 +53550,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:395:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:395"
+$as_echo "$at_srcdir/conflicts.at:401:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:401"
 ( $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/conflicts.at:395"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:395: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:395"
+$as_echo "$at_srcdir/conflicts.at:401: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:401"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -45693,7 +53573,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:395"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:401"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45822,9 +53702,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/conflicts.at:399: 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/conflicts.at:405: 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' "conflicts.at:399"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:405"
 ( $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>&-
@@ -45832,29 +53712,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/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:399: 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" "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405: 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" "conflicts.at:405"
 ( $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/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:399: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:405: \$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' "conflicts.at:399"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:405"
 ( $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
@@ -45863,25 +53743,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:399: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:405: \$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' "conflicts.at:399"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:405"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45889,43 +53769,43 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:399: bison -o input.cc input.y"
-at_fn_check_prepare_trace "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405: bison -o input.cc input.y"
+at_fn_check_prepare_trace "conflicts.at:405"
 ( $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/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:399: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "conflicts.at:405"
 ( $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/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:399: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "conflicts.at:405"
 ( $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/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45934,21 +53814,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:399:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:405"
 ( $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/conflicts.at:399"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:399: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:399"
+$as_echo "$at_srcdir/conflicts.at:405: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:405"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -45957,7 +53837,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:399"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -45990,7 +53870,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -46063,9 +53943,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -46089,9 +53968,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/conflicts.at:405: 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/conflicts.at:411: 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' "conflicts.at:405"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:411"
 ( $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>&-
@@ -46099,29 +53978,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/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:405: 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" "conflicts.at:405"
+$as_echo "$at_srcdir/conflicts.at:411: 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" "conflicts.at:411"
 ( $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/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:405: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:411: \$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' "conflicts.at:405"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:411"
 ( $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
@@ -46130,25 +54009,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:405: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:411: \$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' "conflicts.at:405"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:411"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46156,29 +54035,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:405: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:405"
+$as_echo "$at_srcdir/conflicts.at:411: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:411"
 ( $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/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:405: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:405"
+$as_echo "$at_srcdir/conflicts.at:411: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:411"
+( $at_check_trace; $BISON_C_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/conflicts.at:411"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:411: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:411"
 ( $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/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46187,21 +54079,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:405:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:405"
+$as_echo "$at_srcdir/conflicts.at:411:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:411"
 ( $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/conflicts.at:405"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:405: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:405"
+$as_echo "$at_srcdir/conflicts.at:411: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:411"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -46210,7 +54102,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:405"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46243,7 +54135,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -46316,9 +54208,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -46342,9 +54233,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/conflicts.at:411: 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/conflicts.at:417: 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' "conflicts.at:411"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:417"
 ( $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>&-
@@ -46352,29 +54243,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/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:411: 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" "conflicts.at:411"
+$as_echo "$at_srcdir/conflicts.at:417: 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" "conflicts.at:417"
 ( $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/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:411: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:417: \$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' "conflicts.at:411"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:417"
 ( $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
@@ -46383,25 +54274,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:411: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:417: \$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' "conflicts.at:411"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:417"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46409,29 +54300,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:411: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:411"
+$as_echo "$at_srcdir/conflicts.at:417: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:417"
 ( $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/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:411: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:411"
+$as_echo "$at_srcdir/conflicts.at:417: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:417"
+( $at_check_trace; $BISON_C_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/conflicts.at:417"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:417: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:417"
 ( $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/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46440,21 +54344,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:411:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:411"
+$as_echo "$at_srcdir/conflicts.at:417:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:417"
 ( $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/conflicts.at:411"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:411: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:411"
+$as_echo "$at_srcdir/conflicts.at:417: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:417"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -46463,7 +54367,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'a'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:411"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:417"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46494,7 +54398,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -46567,9 +54471,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -46593,9 +54496,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/conflicts.at:415: 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/conflicts.at:421: 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' "conflicts.at:415"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:421"
 ( $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>&-
@@ -46603,29 +54506,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/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:415: 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" "conflicts.at:415"
+$as_echo "$at_srcdir/conflicts.at:421: 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" "conflicts.at:421"
 ( $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/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:415: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:421: \$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' "conflicts.at:415"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:421"
 ( $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
@@ -46634,25 +54537,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:415: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:421: \$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' "conflicts.at:415"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:421"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46660,29 +54563,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:415: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:415"
+$as_echo "$at_srcdir/conflicts.at:421: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:421"
 ( $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/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:415: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:415"
+$as_echo "$at_srcdir/conflicts.at:421: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:421"
+( $at_check_trace; $BISON_C_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/conflicts.at:421"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:421: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:421"
 ( $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/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46691,21 +54607,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:415:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:415"
+$as_echo "$at_srcdir/conflicts.at:421:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:421"
 ( $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/conflicts.at:415"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:415: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:415"
+$as_echo "$at_srcdir/conflicts.at:421: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:421"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -46714,7 +54630,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end, expecting 'a'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:415"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:421"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46746,7 +54662,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -46819,9 +54735,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -46845,9 +54760,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/conflicts.at:420: 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/conflicts.at:426: 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' "conflicts.at:420"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:426"
 ( $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>&-
@@ -46855,29 +54770,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/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:420: 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" "conflicts.at:420"
+$as_echo "$at_srcdir/conflicts.at:426: 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" "conflicts.at:426"
 ( $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/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:420: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:426: \$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' "conflicts.at:420"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:426"
 ( $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
@@ -46886,25 +54801,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:420: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:426: \$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' "conflicts.at:420"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:426"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46912,29 +54827,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:420: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:420"
+$as_echo "$at_srcdir/conflicts.at:426: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:426"
 ( $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/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:420: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:420"
+$as_echo "$at_srcdir/conflicts.at:426: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:426"
+( $at_check_trace; $BISON_C_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/conflicts.at:426"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:426: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:426"
 ( $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/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46943,21 +54871,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:420:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:420"
+$as_echo "$at_srcdir/conflicts.at:426:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:426"
 ( $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/conflicts.at:420"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:420: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:420"
+$as_echo "$at_srcdir/conflicts.at:426: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:426"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -46966,7 +54894,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:420"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:426"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -46997,7 +54925,7 @@ cat >input.y <<'_ATEOF'
 %code {
   #include <assert.h>
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *lvalp);
   #define USE(Var)
 }
@@ -47071,9 +54999,8 @@ int yylex (YYSTYPE *lvalp)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -47097,9 +55024,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/conflicts.at:424: 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/conflicts.at:430: 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' "conflicts.at:424"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:430"
 ( $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>&-
@@ -47107,29 +55034,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/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:424: 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" "conflicts.at:424"
+$as_echo "$at_srcdir/conflicts.at:430: 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" "conflicts.at:430"
 ( $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/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:424: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:430: \$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' "conflicts.at:424"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:430"
 ( $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
@@ -47138,25 +55065,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:424: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:430: \$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' "conflicts.at:424"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:430"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47164,29 +55091,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:424: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:424"
+$as_echo "$at_srcdir/conflicts.at:430: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:430"
 ( $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/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$as_echo "$at_srcdir/conflicts.at:424: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:424"
+$as_echo "$at_srcdir/conflicts.at:430: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:430"
+( $at_check_trace; $BISON_C_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/conflicts.at:430"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:430: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:430"
 ( $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/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47195,21 +55135,21 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:424:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:424"
+$as_echo "$at_srcdir/conflicts.at:430:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:430"
 ( $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/conflicts.at:424"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:424: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:424"
+$as_echo "$at_srcdir/conflicts.at:430: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:430"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47218,7 +55158,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected \$end
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:430"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47239,13 +55179,13 @@ $at_traceon; }
   $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:450' \
+#AT_STOP_183
+#AT_START_184
+at_fn_group_banner 184 'conflicts.at:456' \
   "LAC: %nonassoc requires splitting canonical LR states" "" 10
 at_xfail=no
 (
-  $as_echo "158. $at_setup_line: testing $at_desc ..."
+  $as_echo "184. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -47260,7 +55200,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -47301,9 +55241,8 @@ reduce-nonassoc: %prec 'a';
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -47337,9 +55276,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/conflicts.at:505: 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/conflicts.at:511: 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 -Dlr.type=canonical-lr -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:505"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:511"
 ( $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 -Dlr.type=canonical-lr -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47347,29 +55286,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/conflicts.at:505"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:505: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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 -Dlr.type=canonical-lr -o input.c input.y" "conflicts.at:505"
+$as_echo "$at_srcdir/conflicts.at:511: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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 -Dlr.type=canonical-lr -o input.c input.y" "conflicts.at:511"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -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/conflicts.at:505"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:505: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:511: \$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' "conflicts.at:505"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:511"
 ( $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
@@ -47378,25 +55317,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:505"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:505: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:511: \$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' "conflicts.at:505"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:511"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:505"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47404,8 +55343,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:505: bison -Dlr.type=canonical-lr -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:505"
+$as_echo "$at_srcdir/conflicts.at:511: bison -Dlr.type=canonical-lr -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:511"
 ( $at_check_trace; bison -Dlr.type=canonical-lr -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47414,40 +55353,53 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 2 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/conflicts.at:505"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:509: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:509"
+$as_echo "$at_srcdir/conflicts.at:515: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:515"
+( $at_check_trace; $BISON_C_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/conflicts.at:515"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:515: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:515"
 ( $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/conflicts.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:515"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:510:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:510"
+$as_echo "$at_srcdir/conflicts.at:516:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:516"
 ( $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/conflicts.at:510"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:510: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:510"
+$as_echo "$at_srcdir/conflicts.at:516: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:516"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47456,7 +55408,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'a', expecting 'b'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:510"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47469,10 +55421,10 @@ 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/conflicts.at:515: 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/conflicts.at:521: 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 -Dlr.type=canonical-lr -Dparse.lac=full \\
                  -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:515"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:521"
 ( $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 -Dlr.type=canonical-lr -Dparse.lac=full \
                  -o input.c input.y
@@ -47481,14 +55433,14 @@ at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:515: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -Dparse.lac=full \\
+$as_echo "$at_srcdir/conflicts.at:521: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -Dparse.lac=full \\
                  -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:515"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:521"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=canonical-lr -Dparse.lac=full \
                  -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47496,16 +55448,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/conflicts.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:515: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:521: \$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' "conflicts.at:515"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:521"
 ( $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
@@ -47514,25 +55466,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:515: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:521: \$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' "conflicts.at:515"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:521"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47540,9 +55492,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:515: bison -Dlr.type=canonical-lr -Dparse.lac=full \\
+$as_echo "$at_srcdir/conflicts.at:521: bison -Dlr.type=canonical-lr -Dparse.lac=full \\
                  -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:515"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:521"
 ( $at_check_trace; bison -Dlr.type=canonical-lr -Dparse.lac=full \
                  -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47552,40 +55504,53 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 2 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/conflicts.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:519: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:519"
+$as_echo "$at_srcdir/conflicts.at:525: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:525"
+( $at_check_trace; $BISON_C_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/conflicts.at:525"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:525: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:525"
 ( $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/conflicts.at:519"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:525"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:520:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:520"
+$as_echo "$at_srcdir/conflicts.at:526:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:526"
 ( $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/conflicts.at:520"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:526"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:520: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:520"
+$as_echo "$at_srcdir/conflicts.at:526: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:526"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47594,7 +55559,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'a', expecting 'b' or 'c
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:520"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:526"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47607,9 +55572,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/conflicts.at:525: 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/conflicts.at:531: 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 -Dlr.type=ielr -Dparse.lac=full -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:525"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:531"
 ( $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 -Dlr.type=ielr -Dparse.lac=full -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47617,29 +55582,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/conflicts.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:525: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=ielr -Dparse.lac=full -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 -Dlr.type=ielr -Dparse.lac=full -o input.c input.y" "conflicts.at:525"
+$as_echo "$at_srcdir/conflicts.at:531: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=ielr -Dparse.lac=full -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 -Dlr.type=ielr -Dparse.lac=full -o input.c input.y" "conflicts.at:531"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Dlr.type=ielr -Dparse.lac=full -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/conflicts.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:525: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:531: \$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' "conflicts.at:525"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:531"
 ( $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
@@ -47648,25 +55613,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:525: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:531: \$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' "conflicts.at:525"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:531"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47674,8 +55639,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:525: bison -Dlr.type=ielr -Dparse.lac=full -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:525"
+$as_echo "$at_srcdir/conflicts.at:531: bison -Dlr.type=ielr -Dparse.lac=full -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:531"
 ( $at_check_trace; bison -Dlr.type=ielr -Dparse.lac=full -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47684,40 +55649,53 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 2 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/conflicts.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:529: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:529"
+$as_echo "$at_srcdir/conflicts.at:535: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "conflicts.at:535"
+( $at_check_trace; $BISON_C_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/conflicts.at:535"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:535: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "conflicts.at:535"
 ( $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/conflicts.at:529"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:535"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:530:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:530"
+$as_echo "$at_srcdir/conflicts.at:536:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "conflicts.at:536"
 ( $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/conflicts.at:530"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:530: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "conflicts.at:530"
+$as_echo "$at_srcdir/conflicts.at:536: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "conflicts.at:536"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47726,7 +55704,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected 'a', expecting 'b' or 'c
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:530"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47736,13 +55714,13 @@ $at_traceon; }
   $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:540' \
+#AT_STOP_184
+#AT_START_185
+at_fn_group_banner 185 'conflicts.at:546' \
   "Unresolved SR Conflicts" "                        " 10
 at_xfail=no
 (
-  $as_echo "159. $at_setup_line: testing $at_desc ..."
+  $as_echo "185. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -47761,9 +55739,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/conflicts.at:550: 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/conflicts.at:556: 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 --report=all input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:550"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:556"
 ( $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 --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47771,29 +55749,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/conflicts.at:550"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:550"
+$as_echo "$at_srcdir/conflicts.at:556: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:556"
 ( $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 --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/conflicts.at:550"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:550: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:556: \$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' "conflicts.at:550"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:556"
 ( $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
@@ -47802,25 +55780,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:550"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:550: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:556: \$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' "conflicts.at:550"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:556"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:550"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47828,8 +55806,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:550: bison -o input.c --report=all input.y"
-at_fn_check_prepare_trace "conflicts.at:550"
+$as_echo "$at_srcdir/conflicts.at:556: bison -o input.c --report=all input.y"
+at_fn_check_prepare_trace "conflicts.at:556"
 ( $at_check_trace; bison -o input.c --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47838,7 +55816,7 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 1 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/conflicts.at:550"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47846,8 +55824,8 @@ $at_traceon; }
 
 # Check the contents of the report.
 { set +x
-$as_echo "$at_srcdir/conflicts.at:555: cat input.output"
-at_fn_check_prepare_trace "conflicts.at:555"
+$as_echo "$at_srcdir/conflicts.at:561: cat input.output"
+at_fn_check_prepare_trace "conflicts.at:561"
 ( $at_check_trace; cat input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -47880,7 +55858,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 \$accept: . exp \$end
     1 exp: . exp OP exp
@@ -47891,14 +55869,14 @@ state 0
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     \$default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 \$accept: exp . \$end
     1 exp: exp . OP exp
@@ -47907,14 +55885,14 @@ state 2
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 \$accept: exp \$end .
 
     \$default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -47925,7 +55903,7 @@ state 4
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [\$end, OP]
@@ -47936,7 +55914,7 @@ state 5
     \$default  reduce using rule 1 (exp)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:555"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:561"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -47945,13 +55923,13 @@ $at_traceon; }
   $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:647' \
+#AT_STOP_185
+#AT_START_186
+at_fn_group_banner 186 'conflicts.at:653' \
   "Resolved SR Conflicts" "                          " 10
 at_xfail=no
 (
-  $as_echo "160. $at_setup_line: testing $at_desc ..."
+  $as_echo "186. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -47971,9 +55949,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/conflicts.at:658: 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/conflicts.at:664: 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 --report=all input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:658"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:664"
 ( $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 --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -47981,29 +55959,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/conflicts.at:658"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:658: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:658"
+$as_echo "$at_srcdir/conflicts.at:664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:664"
 ( $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 --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/conflicts.at:658"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:658: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:664: \$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' "conflicts.at:658"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:664"
 ( $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
@@ -48012,25 +55990,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:658"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:658: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:664: \$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' "conflicts.at:658"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:664"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:658"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48038,15 +56016,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:658: bison -o input.c --report=all input.y"
-at_fn_check_prepare_trace "conflicts.at:658"
+$as_echo "$at_srcdir/conflicts.at:664: bison -o input.c --report=all input.y"
+at_fn_check_prepare_trace "conflicts.at:664"
 ( $at_check_trace; bison -o input.c --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/conflicts.at:658"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48054,8 +56032,8 @@ $at_traceon; }
 
 # Check the contents of the report.
 { set +x
-$as_echo "$at_srcdir/conflicts.at:661: cat input.output"
-at_fn_check_prepare_trace "conflicts.at:661"
+$as_echo "$at_srcdir/conflicts.at:667: cat input.output"
+at_fn_check_prepare_trace "conflicts.at:667"
 ( $at_check_trace; cat input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -48085,7 +56063,7 @@ exp (6)
     on left: 1 2, on right: 0 1
 
 
-state 0
+State 0
 
     0 \$accept: . exp \$end
     1 exp: . exp OP exp
@@ -48096,14 +56074,14 @@ state 0
     exp  go to state 2
 
 
-state 1
+State 1
 
     2 exp: NUM .
 
     \$default  reduce using rule 2 (exp)
 
 
-state 2
+State 2
 
     0 \$accept: exp . \$end
     1 exp: exp . OP exp
@@ -48112,14 +56090,14 @@ state 2
     OP    shift, and go to state 4
 
 
-state 3
+State 3
 
     0 \$accept: exp \$end .
 
     \$default  accept
 
 
-state 4
+State 4
 
     1 exp: . exp OP exp
     1    | exp OP . exp
@@ -48130,7 +56108,7 @@ state 4
     exp  go to state 5
 
 
-state 5
+State 5
 
     1 exp: exp . OP exp
     1    | exp OP exp .  [\$end, OP]
@@ -48140,7 +56118,7 @@ state 5
     Conflict between rule 1 and token OP resolved as reduce (%left OP).
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:661"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:667"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48149,13 +56127,13 @@ $at_traceon; }
   $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:769' \
+#AT_STOP_186
+#AT_START_187
+at_fn_group_banner 187 'conflicts.at:775' \
   "Defaulted Conflicted Reduction" "                 " 10
 at_xfail=no
 (
-  $as_echo "161. $at_setup_line: testing $at_desc ..."
+  $as_echo "187. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48175,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/conflicts.at:780: 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/conflicts.at:786: 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 --report=all input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:786"
 ( $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 --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -48185,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/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.c --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 -o input.c --report=all input.y" "conflicts.at:786"
 ( $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 --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/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:786: \$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' "conflicts.at:780"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:786"
 ( $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
@@ -48216,25 +56194,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:786: \$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' "conflicts.at:780"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:786"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48242,8 +56220,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:780: bison -o input.c --report=all input.y"
-at_fn_check_prepare_trace "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: bison -o input.c --report=all input.y"
+at_fn_check_prepare_trace "conflicts.at:786"
 ( $at_check_trace; bison -o input.c --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -48253,14 +56231,14 @@ input.y:4.6-8: warning: rule useless in parser due to conflicts: id: '0'
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -48268,15 +56246,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y -Werror" "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y -Werror" "conflicts.at:786"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c --report=all 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/conflicts.at:780"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48313,9 +56291,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/conflicts.at:786: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:786"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -48323,7 +56301,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/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48331,15 +56309,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y --warnings=error" "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y --warnings=error" "conflicts.at:786"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c --report=all 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/conflicts.at:780"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48348,28 +56326,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y -Wnone -Werror" "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y -Wnone -Werror" "conflicts.at:786"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c --report=all 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/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y --warnings=none -Werror" "conflicts.at:780"
+$as_echo "$at_srcdir/conflicts.at:786: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c --report=all 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 --report=all input.y --warnings=none -Werror" "conflicts.at:786"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o input.c --report=all 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/conflicts.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48379,8 +56357,8 @@ fi
 
 # Check the contents of the report.
 { set +x
-$as_echo "$at_srcdir/conflicts.at:786: cat input.output"
-at_fn_check_prepare_trace "conflicts.at:786"
+$as_echo "$at_srcdir/conflicts.at:792: cat input.output"
+at_fn_check_prepare_trace "conflicts.at:792"
 ( $at_check_trace; cat input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -48425,7 +56403,7 @@ id (7)
     on left: 4, on right: 2
 
 
-state 0
+State 0
 
     0 \$accept: . exp \$end
     1 exp: . num
@@ -48440,7 +56418,7 @@ state 0
     id   go to state 4
 
 
-state 1
+State 1
 
     3 num: '0' .  [\$end]
     4 id: '0' .  [\$end]
@@ -48450,35 +56428,35 @@ state 1
     \$default  reduce using rule 3 (num)
 
 
-state 2
+State 2
 
     0 \$accept: exp . \$end
 
     \$end  shift, and go to state 5
 
 
-state 3
+State 3
 
     1 exp: num .
 
     \$default  reduce using rule 1 (exp)
 
 
-state 4
+State 4
 
     2 exp: id .
 
     \$default  reduce using rule 2 (exp)
 
 
-state 5
+State 5
 
     0 \$accept: exp \$end .
 
     \$default  accept
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:786"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:792"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48487,13 +56465,13 @@ $at_traceon; }
   $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:888' \
+#AT_STOP_187
+#AT_START_188
+at_fn_group_banner 188 'conflicts.at:894' \
   "%expect not enough" "                             " 10
 at_xfail=no
 (
-  $as_echo "162. $at_setup_line: testing $at_desc ..."
+  $as_echo "188. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48507,18 +56485,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:897: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:897"
+$as_echo "$at_srcdir/conflicts.at:903: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:903"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; 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: 1 shift/reduce
-input.y: expected 0 shift/reduce conflicts
+input.y: error: expected 0 shift/reduce conflicts
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:897"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:903"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48527,13 +56505,13 @@ $at_traceon; }
   $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:908' \
+#AT_STOP_188
+#AT_START_189
+at_fn_group_banner 189 'conflicts.at:914' \
   "%expect right" "                                  " 10
 at_xfail=no
 (
-  $as_echo "163. $at_setup_line: testing $at_desc ..."
+  $as_echo "189. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48551,9 +56529,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/conflicts.at:917: 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/conflicts.at:923: 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' "conflicts.at:917"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:923"
 ( $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>&-
@@ -48561,29 +56539,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/conflicts.at:917"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:923"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:917: 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" "conflicts.at:917"
+$as_echo "$at_srcdir/conflicts.at:923: 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" "conflicts.at:923"
 ( $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/conflicts.at:917"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:923"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:917: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:923: \$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' "conflicts.at:917"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:923"
 ( $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
@@ -48592,25 +56570,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:917"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:923"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:917: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:923: \$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' "conflicts.at:917"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:923"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:917"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:923"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48618,15 +56596,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:917: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:917"
+$as_echo "$at_srcdir/conflicts.at:923: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:923"
 ( $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/conflicts.at:917"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:923"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48635,13 +56613,13 @@ $at_traceon; }
   $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:925' \
+#AT_STOP_189
+#AT_START_190
+at_fn_group_banner 190 'conflicts.at:931' \
   "%expect too much" "                               " 10
 at_xfail=no
 (
-  $as_echo "164. $at_setup_line: testing $at_desc ..."
+  $as_echo "190. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48655,18 +56633,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:934: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:934"
+$as_echo "$at_srcdir/conflicts.at:940: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:940"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; 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: 1 shift/reduce
-input.y: expected 2 shift/reduce conflicts
+input.y: error: expected 2 shift/reduce conflicts
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:934"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:940"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48675,13 +56653,13 @@ $at_traceon; }
   $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:945' \
+#AT_STOP_190
+#AT_START_191
+at_fn_group_banner 191 'conflicts.at:951' \
   "%expect with reduce conflicts" "                  " 10
 at_xfail=no
 (
-  $as_echo "165. $at_setup_line: testing $at_desc ..."
+  $as_echo "191. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48695,18 +56673,18 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:954: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:954"
+$as_echo "$at_srcdir/conflicts.at:960: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o input.c input.y" "conflicts.at:960"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; 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: 1 reduce/reduce
-input.y: expected 0 reduce/reduce conflicts
+input.y: error: expected 0 reduce/reduce conflicts
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:954"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:960"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48715,13 +56693,13 @@ $at_traceon; }
   $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:965' \
+#AT_STOP_191
+#AT_START_192
+at_fn_group_banner 192 'conflicts.at:971' \
   "%prec with user string" "                         " 10
 at_xfail=no
 (
-  $as_echo "166. $at_setup_line: testing $at_desc ..."
+  $as_echo "192. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48739,9 +56717,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/conflicts.at:974: 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/conflicts.at:980: 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' "conflicts.at:974"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:980"
 ( $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>&-
@@ -48749,29 +56727,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/conflicts.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:980"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:974: 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" "conflicts.at:974"
+$as_echo "$at_srcdir/conflicts.at:980: 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" "conflicts.at:980"
 ( $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/conflicts.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:980"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:974: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:980: \$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' "conflicts.at:974"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:980"
 ( $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
@@ -48780,25 +56758,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:980"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:974: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:980: \$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' "conflicts.at:974"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:980"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:980"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48806,15 +56784,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:974: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:974"
+$as_echo "$at_srcdir/conflicts.at:980: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:980"
 ( $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/conflicts.at:974"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:980"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48823,13 +56801,13 @@ $at_traceon; }
   $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:982' \
+#AT_STOP_192
+#AT_START_193
+at_fn_group_banner 193 'conflicts.at:988' \
   "%no-default-prec without %prec" "                 " 10
 at_xfail=no
 (
-  $as_echo "167. $at_setup_line: testing $at_desc ..."
+  $as_echo "193. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48854,9 +56832,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/conflicts.at:998: 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/conflicts.at:1004: 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' "conflicts.at:998"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1004"
 ( $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>&-
@@ -48864,29 +56842,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/conflicts.at:998"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1004"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:998: 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" "conflicts.at:998"
+$as_echo "$at_srcdir/conflicts.at:1004: 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" "conflicts.at:1004"
 ( $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/conflicts.at:998"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1004"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:998: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1004: \$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' "conflicts.at:998"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1004"
 ( $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
@@ -48895,25 +56873,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:998"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1004"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:998: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1004: \$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' "conflicts.at:998"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1004"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:998"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1004"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48921,8 +56899,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:998: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:998"
+$as_echo "$at_srcdir/conflicts.at:1004: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:1004"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -48931,7 +56909,7 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 4 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/conflicts.at:998"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1004"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -48940,13 +56918,13 @@ $at_traceon; }
   $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 'conflicts.at:1008' \
+#AT_STOP_193
+#AT_START_194
+at_fn_group_banner 194 'conflicts.at:1014' \
   "%no-default-prec with %prec" "                    " 10
 at_xfail=no
 (
-  $as_echo "168. $at_setup_line: testing $at_desc ..."
+  $as_echo "194. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -48971,124 +56949,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/conflicts.at:1024: 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' "conflicts.at:1024"
-( $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/conflicts.at:1024"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1024: 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" "conflicts.at:1024"
-( $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/conflicts.at:1024"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1024: \$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' "conflicts.at:1024"
-( $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/conflicts.at:1024"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1024: \$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' "conflicts.at:1024"
-( $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/conflicts.at:1024"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/conflicts.at:1024: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:1024"
-( $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/conflicts.at:1024"
-$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_168
-#AT_START_169
-at_fn_group_banner 169 'conflicts.at:1032' \
-  "%default-prec" "                                  " 10
-at_xfail=no
-(
-  $as_echo "169. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
-
-cat >input.y <<'_ATEOF'
-%left '+'
-%left '*'
-
-%%
-
-%default-prec;
-
-e:   e '+' e
-   | e '*' e
-   | '0'
-   ;
-_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/conflicts.at:1048: 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/conflicts.at:1030: 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' "conflicts.at:1048"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1030"
 ( $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>&-
@@ -49096,172 +56959,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/conflicts.at:1048"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1030"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1048: 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" "conflicts.at:1048"
+$as_echo "$at_srcdir/conflicts.at:1030: 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" "conflicts.at:1030"
 ( $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/conflicts.at:1048"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1048: \$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' "conflicts.at:1048"
-( $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/conflicts.at:1048"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1048: \$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' "conflicts.at:1048"
-( $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/conflicts.at:1048"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/conflicts.at:1048: bison -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:1048"
-( $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/conflicts.at:1048"
-$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_169
-#AT_START_170
-at_fn_group_banner 170 'conflicts.at:1056' \
-  "Unreachable States After Conflict Resolution" "   " 10
-at_xfail=no
-(
-  $as_echo "170. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
-
-# If conflict resolution makes states unreachable, remove those states, report
-# rules that are then unused, and don't report conflicts in those states.  Test
-# what happens when a nonterminal becomes useless as a result of state removal
-# since that causes lalr.o's goto map to be rewritten.
-
-cat >input.y <<'_ATEOF'
-%output "input.c"
-%left 'a'
-
-%%
-
-start: resolved_conflict 'a' reported_conflicts 'a' ;
-
-/* S/R conflict resolved as reduce, so the state with item
- * (resolved_conflict: 'a' . unreachable1) and all it transition successors are
- * unreachable, and the associated production is useless.  */
-resolved_conflict:
-    'a' unreachable1
-  | %prec 'a'
-  ;
-
-/* S/R conflict that need not be reported since it is unreachable because of
- * the previous conflict resolution.  Nonterminal unreachable1 and all its
- * productions are useless.  */
-unreachable1:
-    'a' unreachable2
-  |
-  ;
-
-/* Likewise for a R/R conflict and nonterminal unreachable2.  */
-unreachable2: | ;
-
-/* Make sure remaining S/R and R/R conflicts are still reported correctly even
- * when their states are renumbered due to state removal.  */
-reported_conflicts:
-    'a'
-  | 'a'
-  |
-  ;
-
-_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/conflicts.at:1100: 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' "conflicts.at:1100"
-( $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>&-
-at_status=$? at_failed=false
-$at_check_filter
-echo stderr:; cat "$at_stderr"
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1100"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: 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" "conflicts.at:1100"
-( $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/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1030"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1030: \$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' "conflicts.at:1100"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1030"
 ( $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
@@ -49270,25 +56990,283 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1030"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1030: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1030"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1030"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:1030: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:1030"
+( $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/conflicts.at:1030"
+$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_194
+#AT_START_195
+at_fn_group_banner 195 'conflicts.at:1038' \
+  "%default-prec" "                                  " 10
+at_xfail=no
+(
+  $as_echo "195. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >input.y <<'_ATEOF'
+%left '+'
+%left '*'
+
+%%
+
+%default-prec;
+
+e:   e '+' e
+   | e '*' e
+   | '0'
+   ;
+_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/conflicts.at:1054: 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' "conflicts.at:1054"
+( $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/conflicts.at:1054"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1054: 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" "conflicts.at:1054"
+( $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/conflicts.at:1054"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1054: \$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' "conflicts.at:1100"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1054"
+( $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/conflicts.at:1054"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1054: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1054"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1054"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/conflicts.at:1054: bison -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:1054"
+( $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/conflicts.at:1054"
+$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_195
+#AT_START_196
+at_fn_group_banner 196 'conflicts.at:1062' \
+  "Unreachable States After Conflict Resolution" "   " 10
+at_xfail=no
+(
+  $as_echo "196. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+# If conflict resolution makes states unreachable, remove those states, report
+# rules that are then unused, and don't report conflicts in those states.  Test
+# what happens when a nonterminal becomes useless as a result of state removal
+# since that causes lalr.o's goto map to be rewritten.
+
+cat >input.y <<'_ATEOF'
+%output "input.c"
+%left 'a'
+
+%%
+
+start: resolved_conflict 'a' reported_conflicts 'a' ;
+
+/* S/R conflict resolved as reduce, so the state with item
+ * (resolved_conflict: 'a' . unreachable1) and all it transition successors are
+ * unreachable, and the associated production is useless.  */
+resolved_conflict:
+    'a' unreachable1
+  | %prec 'a'
+  ;
+
+/* S/R conflict that need not be reported since it is unreachable because of
+ * the previous conflict resolution.  Nonterminal unreachable1 and all its
+ * productions are useless.  */
+unreachable1:
+    'a' unreachable2
+  |
+  ;
+
+/* Likewise for a R/R conflict and nonterminal unreachable2.  */
+unreachable2: | ;
+
+/* Make sure remaining S/R and R/R conflicts are still reported correctly even
+ * when their states are renumbered due to state removal.  */
+reported_conflicts:
+    'a'
+  | 'a'
+  |
+  ;
+
+_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/conflicts.at:1106: 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' "conflicts.at:1106"
+( $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>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1106: 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" "conflicts.at:1106"
+( $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/conflicts.at:1106"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1106: \$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' "conflicts.at:1106"
+( $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/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/conflicts.at:1106: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1106"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49296,8 +57274,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: bison --report=all input.y"
-at_fn_check_prepare_trace "conflicts.at:1100"
+$as_echo "$at_srcdir/conflicts.at:1106: bison --report=all input.y"
+at_fn_check_prepare_trace "conflicts.at:1106"
 ( $at_check_trace; bison --report=all input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -49313,14 +57291,14 @@ input.y:32.4: warning: rule useless in parser due to conflicts: reported_conflic
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -49328,15 +57306,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Werror" "conflicts.at:1100"
+$as_echo "$at_srcdir/conflicts.at:1106: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Werror" "conflicts.at:1106"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all 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/conflicts.at:1100"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49379,9 +57357,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/conflicts.at:1106: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1100"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1106"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -49389,7 +57367,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/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49397,15 +57375,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=error" "conflicts.at:1100"
+$as_echo "$at_srcdir/conflicts.at:1106: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=error" "conflicts.at:1106"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all 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/conflicts.at:1100"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49414,28 +57392,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Wnone -Werror" "conflicts.at:1100"
+$as_echo "$at_srcdir/conflicts.at:1106: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y -Wnone -Werror" "conflicts.at:1106"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all 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/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1100: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=none -Werror" "conflicts.at:1100"
+$as_echo "$at_srcdir/conflicts.at:1106: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all input.y --warnings=none -Werror" "conflicts.at:1106"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all 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/conflicts.at:1100"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1106"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49444,8 +57422,8 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1111: cat input.output"
-at_fn_check_prepare_trace "conflicts.at:1111"
+$as_echo "$at_srcdir/conflicts.at:1117: cat input.output"
+at_fn_check_prepare_trace "conflicts.at:1117"
 ( $at_check_trace; cat input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -49512,7 +57490,7 @@ reported_conflicts (9)
     on left: 8 9 10, on right: 1
 
 
-state 0
+State 0
 
     0 \$accept: . start \$end
     1 start: . resolved_conflict 'a' reported_conflicts 'a'
@@ -49527,28 +57505,28 @@ state 0
     Conflict between rule 3 and token 'a' resolved as reduce (%left 'a').
 
 
-state 1
+State 1
 
     0 \$accept: start . \$end
 
     \$end  shift, and go to state 3
 
 
-state 2
+State 2
 
     1 start: resolved_conflict . 'a' reported_conflicts 'a'
 
     'a'  shift, and go to state 4
 
 
-state 3
+State 3
 
     0 \$accept: start \$end .
 
     \$default  accept
 
 
-state 4
+State 4
 
     1 start: resolved_conflict 'a' . reported_conflicts 'a'
     8 reported_conflicts: . 'a'
@@ -49562,7 +57540,7 @@ state 4
     reported_conflicts  go to state 6
 
 
-state 5
+State 5
 
     8 reported_conflicts: 'a' .  ['a']
     9                   | 'a' .  ['a']
@@ -49572,21 +57550,21 @@ state 5
     \$default  reduce using rule 8 (reported_conflicts)
 
 
-state 6
+State 6
 
     1 start: resolved_conflict 'a' reported_conflicts . 'a'
 
     'a'  shift, and go to state 7
 
 
-state 7
+State 7
 
     1 start: resolved_conflict 'a' reported_conflicts 'a' .
 
     \$default  reduce using rule 1 (start)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1111"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1117"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49596,15 +57574,15 @@ cat >input-keep.y <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1250: cat input.y >> input-keep.y"
-at_fn_check_prepare_trace "conflicts.at:1250"
+$as_echo "$at_srcdir/conflicts.at:1256: cat input.y >> input-keep.y"
+at_fn_check_prepare_trace "conflicts.at:1256"
 ( $at_check_trace; cat input.y >> input-keep.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/conflicts.at:1250"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1256"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49615,9 +57593,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/conflicts.at:1252: 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/conflicts.at:1258: 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-keep.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1252"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1258"
 ( $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 input-keep.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -49625,29 +57603,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/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input-keep.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-keep.y" "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input-keep.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-keep.y" "conflicts.at:1258"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml input-keep.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/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1258: \$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' "conflicts.at:1252"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1258"
 ( $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
@@ -49656,25 +57634,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1258: \$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' "conflicts.at:1252"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1258"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49682,8 +57660,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: bison input-keep.y"
-at_fn_check_prepare_trace "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: bison input-keep.y"
+at_fn_check_prepare_trace "conflicts.at:1258"
 ( $at_check_trace; bison input-keep.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -49696,14 +57674,14 @@ input-keep.y:33.4: warning: rule useless in parser due to conflicts: reported_co
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -49711,15 +57689,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Werror" "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Werror" "conflicts.at:1258"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-keep.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/conflicts.at:1252"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49759,9 +57737,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/conflicts.at:1258: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1252"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1258"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -49769,7 +57747,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/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49777,15 +57755,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=error"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=error" "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=error"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=error" "conflicts.at:1258"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-keep.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/conflicts.at:1252"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49794,28 +57772,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Wnone -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Wnone -Werror" "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Wnone -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y -Wnone -Werror" "conflicts.at:1258"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-keep.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/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1252: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=none -Werror"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=none -Werror" "conflicts.at:1252"
+$as_echo "$at_srcdir/conflicts.at:1258: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=none -Werror"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison input-keep.y --warnings=none -Werror" "conflicts.at:1258"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison input-keep.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/conflicts.at:1252"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   $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 'conflicts.at:1267' \
+#AT_STOP_196
+#AT_START_197
+at_fn_group_banner 197 'conflicts.at:1273' \
   "Solved conflicts report for multiple reductions in a state" "" 10
 at_xfail=no
 (
-  $as_echo "171. $at_setup_line: testing $at_desc ..."
+  $as_echo "197. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -49868,9 +57846,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/conflicts.at:1293: 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/conflicts.at:1299: 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 -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1293"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1299"
 ( $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 -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -49878,29 +57856,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/conflicts.at:1293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1293: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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 --report=all -o input.c input.y" "conflicts.at:1293"
+$as_echo "$at_srcdir/conflicts.at:1299: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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 --report=all -o input.c input.y" "conflicts.at:1299"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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/conflicts.at:1293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1293: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1299: \$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' "conflicts.at:1293"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1299"
 ( $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
@@ -49909,25 +57887,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1293: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1299: \$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' "conflicts.at:1293"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1299"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -49935,28 +57913,28 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1293: bison --report=all -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:1293"
+$as_echo "$at_srcdir/conflicts.at:1299: bison --report=all -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:1299"
 ( $at_check_trace; bison --report=all -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1293"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1299"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1294: cat input.output | sed -n '/^state 0\$/,/^state 1\$/p'"
-at_fn_check_prepare_notrace 'a shell pipeline' "conflicts.at:1294"
-( $at_check_trace; cat input.output | sed -n '/^state 0$/,/^state 1$/p'
+$as_echo "$at_srcdir/conflicts.at:1300: cat input.output | sed -n '/^State 0\$/,/^State 1\$/p'"
+at_fn_check_prepare_notrace 'a shell pipeline' "conflicts.at:1300"
+( $at_check_trace; cat input.output | sed -n '/^State 0$/,/^State 1$/p'
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . 'a'
@@ -49992,10 +57970,10 @@ echo >>"$at_stdout"; $as_echo "state 0
     Conflict between rule 13 and token 'c' resolved as reduce ('c' < 'd').
 
 
-state 1
+State 1
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1294"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1300"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50004,13 +57982,13 @@ $at_traceon; }
   $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 'conflicts.at:1347' \
+#AT_STOP_197
+#AT_START_198
+at_fn_group_banner 198 'conflicts.at:1353' \
   "%nonassoc error actions for multiple reductions in a state" "" 10
 at_xfail=no
 (
-  $as_echo "172. $at_setup_line: testing $at_desc ..."
+  $as_echo "198. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -50041,9 +58019,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/conflicts.at:1369: 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/conflicts.at:1375: 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 -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1369"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1375"
 ( $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 -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50051,29 +58029,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/conflicts.at:1369"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1375"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1369: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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 --report=all -o input.c input.y" "conflicts.at:1369"
+$as_echo "$at_srcdir/conflicts.at:1375: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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 --report=all -o input.c input.y" "conflicts.at:1375"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all -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/conflicts.at:1369"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1375"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1369: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1375: \$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' "conflicts.at:1369"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1375"
 ( $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
@@ -50082,25 +58060,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1369"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1375"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1369: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1375: \$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' "conflicts.at:1369"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1375"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1369"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1375"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50108,28 +58086,28 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1369: bison --report=all -o input.c input.y"
-at_fn_check_prepare_trace "conflicts.at:1369"
+$as_echo "$at_srcdir/conflicts.at:1375: bison --report=all -o input.c input.y"
+at_fn_check_prepare_trace "conflicts.at:1375"
 ( $at_check_trace; bison --report=all -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1369"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1375"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1370: cat input.output | sed -n '/^state 0\$/,/^state 1\$/p'"
-at_fn_check_prepare_notrace 'a shell pipeline' "conflicts.at:1370"
-( $at_check_trace; cat input.output | sed -n '/^state 0$/,/^state 1$/p'
+$as_echo "$at_srcdir/conflicts.at:1376: cat input.output | sed -n '/^State 0\$/,/^State 1\$/p'"
+at_fn_check_prepare_notrace 'a shell pipeline' "conflicts.at:1376"
+( $at_check_trace; cat input.output | sed -n '/^State 0$/,/^State 1$/p'
 ) >>"$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 "state 0
+echo >>"$at_stdout"; $as_echo "State 0
 
     0 \$accept: . start \$end
     1 start: . 'a'
@@ -50165,10 +58143,10 @@ echo >>"$at_stdout"; $as_echo "state 0
     Conflict between rule 11 and token 'c' resolved as an error (%nonassoc 'c').
 
 
-state 1
+State 1
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1370"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1376"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50176,13 +58154,13 @@ $at_traceon; }
   $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 'conflicts.at:1416' \
+#AT_STOP_198
+#AT_START_199
+at_fn_group_banner 199 'conflicts.at:1422' \
   "-W versus %expect and %expect-rr" "               " 10
 at_xfail=no
 (
-  $as_echo "173. $at_setup_line: testing $at_desc ..."
+  $as_echo "199. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -50216,9 +58194,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/conflicts.at:1439: 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/conflicts.at:1445: 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 sr-rr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1439"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1445"
 ( $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 sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50226,29 +58204,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/conflicts.at:1439"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1439: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml sr-rr.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 sr-rr.y" "conflicts.at:1439"
+$as_echo "$at_srcdir/conflicts.at:1445: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml sr-rr.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 sr-rr.y" "conflicts.at:1445"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml sr-rr.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/conflicts.at:1439"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1439: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1445: \$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' "conflicts.at:1439"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1445"
 ( $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
@@ -50257,25 +58235,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1439"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1439: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1445: \$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' "conflicts.at:1439"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1445"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1439"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50283,8 +58261,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1439: bison sr-rr.y"
-at_fn_check_prepare_trace "conflicts.at:1439"
+$as_echo "$at_srcdir/conflicts.at:1445: bison sr-rr.y"
+at_fn_check_prepare_trace "conflicts.at:1445"
 ( $at_check_trace; bison sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -50293,7 +58271,7 @@ echo >>"$at_stderr"; $as_echo "sr-rr.y: conflicts: 1 shift/reduce, 1 reduce/redu
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1439"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50304,9 +58282,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/conflicts.at:1442: 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/conflicts.at:1448: 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 -Wno-conflicts-sr sr-rr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1442"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1448"
 ( $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 -Wno-conflicts-sr sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50314,29 +58292,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/conflicts.at:1442"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1448"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1442: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-sr sr-rr.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 -Wno-conflicts-sr sr-rr.y" "conflicts.at:1442"
+$as_echo "$at_srcdir/conflicts.at:1448: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-sr sr-rr.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 -Wno-conflicts-sr sr-rr.y" "conflicts.at:1448"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-sr sr-rr.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/conflicts.at:1442"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1448"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1442: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1448: \$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' "conflicts.at:1442"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1448"
 ( $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
@@ -50345,25 +58323,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1442"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1448"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1442: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1448: \$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' "conflicts.at:1442"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1448"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1442"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1448"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50371,8 +58349,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1442: bison -Wno-conflicts-sr sr-rr.y"
-at_fn_check_prepare_trace "conflicts.at:1442"
+$as_echo "$at_srcdir/conflicts.at:1448: bison -Wno-conflicts-sr sr-rr.y"
+at_fn_check_prepare_trace "conflicts.at:1448"
 ( $at_check_trace; bison -Wno-conflicts-sr sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -50381,7 +58359,7 @@ echo >>"$at_stderr"; $as_echo "sr-rr.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1442"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1448"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50392,9 +58370,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/conflicts.at:1445: 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/conflicts.at:1451: 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 -Wno-conflicts-rr sr-rr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1445"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1451"
 ( $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 -Wno-conflicts-rr sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50402,29 +58380,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/conflicts.at:1445"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1451"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1445: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-rr sr-rr.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 -Wno-conflicts-rr sr-rr.y" "conflicts.at:1445"
+$as_echo "$at_srcdir/conflicts.at:1451: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-rr sr-rr.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 -Wno-conflicts-rr sr-rr.y" "conflicts.at:1451"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wno-conflicts-rr sr-rr.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/conflicts.at:1445"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1451"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1445: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1451: \$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' "conflicts.at:1445"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1451"
 ( $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
@@ -50433,25 +58411,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1451"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1445: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1451: \$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' "conflicts.at:1445"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1451"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1445"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1451"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50459,8 +58437,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1445: bison -Wno-conflicts-rr sr-rr.y"
-at_fn_check_prepare_trace "conflicts.at:1445"
+$as_echo "$at_srcdir/conflicts.at:1451: bison -Wno-conflicts-rr sr-rr.y"
+at_fn_check_prepare_trace "conflicts.at:1451"
 ( $at_check_trace; bison -Wno-conflicts-rr sr-rr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -50469,7 +58447,7 @@ echo >>"$at_stderr"; $as_echo "sr-rr.y: conflicts: 1 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/conflicts.at:1445"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1451"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50523,9 +58501,9 @@ for gram in sr-rr sr rr; do
     # 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/conflicts.at:1491: 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/conflicts.at:1497: 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 -Wnone \$file"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1491"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1497"
 ( $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 -Wnone $file
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50533,29 +58511,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/conflicts.at:1491"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1491: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wnone \$file"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wnone $file" "conflicts.at:1491"
+$as_echo "$at_srcdir/conflicts.at:1497: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wnone \$file"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wnone $file" "conflicts.at:1497"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Wnone $file
 ) >>"$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/conflicts.at:1491"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1491: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1497: \$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' "conflicts.at:1491"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1497"
 ( $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
@@ -50564,25 +58542,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1491"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1491: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1497: \$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' "conflicts.at:1491"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1497"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1491"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50590,15 +58568,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1491: bison -Wnone \$file"
-at_fn_check_prepare_dynamic "bison -Wnone $file" "conflicts.at:1491"
+$as_echo "$at_srcdir/conflicts.at:1497: bison -Wnone \$file"
+at_fn_check_prepare_dynamic "bison -Wnone $file" "conflicts.at:1497"
 ( $at_check_trace; bison -Wnone $file
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1491"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50609,9 +58587,9 @@ $at_traceon; }
     # 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/conflicts.at:1492: 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/conflicts.at:1498: 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 -Werror \$file"
-at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1492"
+at_fn_check_prepare_notrace 'an embedded newline' "conflicts.at:1498"
 ( $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 -Werror $file
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -50619,29 +58597,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/conflicts.at:1492"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1492: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Werror \$file"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Werror $file" "conflicts.at:1492"
+$as_echo "$at_srcdir/conflicts.at:1498: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Werror \$file"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Werror $file" "conflicts.at:1498"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -Werror $file
 ) >>"$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/conflicts.at:1492"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1492: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1498: \$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' "conflicts.at:1492"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1498"
 ( $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
@@ -50650,25 +58628,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1492"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/conflicts.at:1492: \$XSLTPROC \\
+$as_echo "$at_srcdir/conflicts.at:1498: \$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' "conflicts.at:1492"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "conflicts.at:1498"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1492"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50676,15 +58654,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1492: bison -Werror \$file"
-at_fn_check_prepare_dynamic "bison -Werror $file" "conflicts.at:1492"
+$as_echo "$at_srcdir/conflicts.at:1498: bison -Werror \$file"
+at_fn_check_prepare_dynamic "bison -Werror $file" "conflicts.at:1498"
 ( $at_check_trace; bison -Werror $file
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1492"
+at_fn_check_status 0 $at_status "$at_srcdir/conflicts.at:1498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50693,38 +58671,38 @@ $at_traceon; }
         echo "$file: conflicts: $conflicts" > experr
         if test $sr_count -ne $sr_exp; then
           if test $sr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $sr_exp shift/reduce conflict$s" >> experr
+          echo "$file: error: expected $sr_exp shift/reduce conflict$s" >> experr
         fi
         if test $rr_count -ne $rr_exp; then
           if test $rr_exp -ne 1; then s=s; else s= ; fi
-          echo "$file: expected $rr_exp reduce/reduce conflict$s" >> experr
+          echo "$file: error: expected $rr_exp reduce/reduce conflict$s" >> experr
         fi
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1503: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wnone \$file"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wnone $file" "conflicts.at:1503"
+$as_echo "$at_srcdir/conflicts.at:1509: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wnone \$file"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Wnone $file" "conflicts.at:1509"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Wnone $file
 ) >>"$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 1 $at_status "$at_srcdir/conflicts.at:1503"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/conflicts.at:1504: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror \$file"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror $file" "conflicts.at:1504"
+$as_echo "$at_srcdir/conflicts.at:1510: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror \$file"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -Werror $file" "conflicts.at:1510"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -Werror $file
 ) >>"$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 1 $at_status "$at_srcdir/conflicts.at:1504"
+at_fn_check_status 1 $at_status "$at_srcdir/conflicts.at:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -50738,13 +58716,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_173
-#AT_START_174
-at_fn_group_banner 174 'calc.at:630' \
+#AT_STOP_199
+#AT_START_200
+at_fn_group_banner 200 'calc.at:597' \
   "Calculator " "                                    " 11
 at_xfail=no
 (
-  $as_echo "174. $at_setup_line: testing $at_desc ..."
+  $as_echo "200. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -50780,6 +58758,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -50799,10 +58778,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -50862,15 +58838,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -50930,15 +58904,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -51022,9 +58988,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:597: 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:597"
 ( $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>&-
@@ -51032,29 +58998,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:597"
 $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:597: 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:597"
 ( $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:597"
 $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:597: \$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:597"
 ( $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
@@ -51063,25 +59029,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:630: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:597: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:597"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51089,66 +59055,77 @@ $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:597: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:597"
 ( $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:597"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:597: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:597"
+( $at_check_trace; $BISON_C_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:630"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:597"
 $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
+$as_echo "$at_srcdir/calc.at:597: \$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:597"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:597"
 $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
+$as_echo "$at_srcdir/calc.at:597: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:597"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -51167,28 +59144,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51197,32 +59174,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51260,15 +59237,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51278,28 +59255,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51337,15 +59314,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51355,28 +59332,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51414,15 +59391,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51432,28 +59409,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51491,15 +59468,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51510,28 +59487,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51569,43 +59546,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $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:597:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:597"
 ( $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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51643,15 +59620,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51678,28 +59655,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51741,15 +59718,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51758,32 +59735,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51822,46 +59799,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51901,15 +59878,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51922,28 +59899,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:597:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:597"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $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:597: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -51983,15 +59960,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:597: cat stderr"
+at_fn_check_prepare_trace "calc.at:597"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:597"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52003,13 +59980,13 @@ $at_traceon; }
   $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:632' \
+#AT_STOP_200
+#AT_START_201
+at_fn_group_banner 201 'calc.at:599' \
   "Calculator %defines" "                            " 11
 at_xfail=no
 (
-  $as_echo "175. $at_setup_line: testing $at_desc ..."
+  $as_echo "201. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -52045,6 +60022,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -52064,10 +60042,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -52127,15 +60102,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -52208,15 +60181,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -52310,9 +60275,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:632: 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:599: 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:632"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:599"
 ( $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>&-
@@ -52320,29 +60285,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:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: 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:599"
 ( $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:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:632: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:599: \$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:632"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:599"
 ( $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
@@ -52351,25 +60316,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:632: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:599: \$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:632"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:599"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52377,96 +60342,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:632: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:599"
 ( $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:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:599: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:599"
+( $at_check_trace; $BISON_C_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:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $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
+$as_echo "$at_srcdir/calc.at:599: \$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:599"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $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
+$as_echo "$at_srcdir/calc.at:599: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:599"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $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
+$as_echo "$at_srcdir/calc.at:599: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:599"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -52485,28 +60459,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52515,32 +60489,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52578,15 +60552,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52596,28 +60570,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52655,15 +60629,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52673,28 +60647,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52732,15 +60706,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52750,28 +60724,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52809,15 +60783,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52828,28 +60802,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52887,43 +60861,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $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:632:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:599"
 ( $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:632"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52961,15 +60935,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -52996,28 +60970,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53059,15 +61033,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53076,32 +61050,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53140,46 +61114,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53219,15 +61193,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53240,28 +61214,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:632:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:599"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:599: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53301,15 +61275,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:632: cat stderr"
-at_fn_check_prepare_trace "calc.at:632"
+$as_echo "$at_srcdir/calc.at:599: cat stderr"
+at_fn_check_prepare_trace "calc.at:599"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:632"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:599"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53321,13 +61295,13 @@ $at_traceon; }
   $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:633' \
+#AT_STOP_201
+#AT_START_202
+at_fn_group_banner 202 'calc.at:600' \
   "Calculator %locations" "                          " 11
 at_xfail=no
 (
-  $as_echo "176. $at_setup_line: testing $at_desc ..."
+  $as_echo "202. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -53363,6 +61337,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -53382,10 +61357,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -53445,24 +61417,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -53536,18 +61499,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (yylloc).last_column = 1;
-      (yylloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -53633,9 +61585,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:600: 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:600"
 ( $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>&-
@@ -53643,29 +61595,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:600"
 $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:600: 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:600"
 ( $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:600"
 $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:600: \$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:600"
 ( $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
@@ -53674,25 +61626,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:633: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:600: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:600"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53700,66 +61652,77 @@ $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:600: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:600"
 ( $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:600"
 $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"
-( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o calc calc.c $LIBS
+$as_echo "$at_srcdir/calc.at:600: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:600"
+( $at_check_trace; $BISON_C_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:633"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:600"
 $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
+$as_echo "$at_srcdir/calc.at:600: \$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:600"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:600"
 $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
+$as_echo "$at_srcdir/calc.at:600: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:600"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -53778,28 +61741,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53808,32 +61771,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53870,15 +61833,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53888,28 +61851,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53946,15 +61909,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -53964,28 +61927,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54022,15 +61985,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54040,28 +62003,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54098,15 +62061,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54117,28 +62080,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54175,43 +62138,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $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:600:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:600"
 ( $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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54248,15 +62211,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54283,28 +62246,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54345,15 +62308,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54362,32 +62325,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54425,46 +62388,46 @@ 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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54503,15 +62466,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54524,28 +62487,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:600:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:600"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $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:600: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54584,15 +62547,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:600: cat stderr"
+at_fn_check_prepare_trace "calc.at:600"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54604,13 +62567,13 @@ $at_traceon; }
   $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:635' \
+#AT_STOP_202
+#AT_START_203
+at_fn_group_banner 203 'calc.at:602' \
   "Calculator %name-prefix=\"calc\"" "                 " 11
 at_xfail=no
 (
-  $as_echo "177. $at_setup_line: testing $at_desc ..."
+  $as_echo "203. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -54646,6 +62609,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -54665,10 +62629,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -54728,15 +62689,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -54796,15 +62755,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -54888,9 +62839,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:602: 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:602"
 ( $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>&-
@@ -54898,29 +62849,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:602"
 $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:602: 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:602"
 ( $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:602"
 $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:602: \$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:602"
 ( $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
@@ -54929,25 +62880,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:635: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:602: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:602"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -54955,66 +62906,77 @@ $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:602: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:602"
 ( $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:602"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:602: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:602"
+( $at_check_trace; $BISON_C_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:635"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:602"
 $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
+$as_echo "$at_srcdir/calc.at:602: \$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:602"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:602"
 $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
+$as_echo "$at_srcdir/calc.at:602: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:602"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -55033,28 +62995,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55063,32 +63025,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55126,15 +63088,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55144,28 +63106,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55203,15 +63165,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55221,28 +63183,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55280,15 +63242,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55298,28 +63260,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55357,15 +63319,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55376,28 +63338,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55435,43 +63397,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $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:602:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:602"
 ( $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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55509,15 +63471,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55544,28 +63506,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55607,15 +63569,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55624,32 +63586,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55688,46 +63650,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55767,15 +63729,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55788,28 +63750,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:602:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:602"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $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:602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55849,15 +63811,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:602: cat stderr"
+at_fn_check_prepare_trace "calc.at:602"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:602"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -55869,13 +63831,13 @@ $at_traceon; }
   $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:636' \
+#AT_STOP_203
+#AT_START_204
+at_fn_group_banner 204 'calc.at:603' \
   "Calculator %verbose" "                            " 11
 at_xfail=no
 (
-  $as_echo "178. $at_setup_line: testing $at_desc ..."
+  $as_echo "204. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -55911,6 +63873,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -55930,10 +63893,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -55993,15 +63953,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -56061,15 +64019,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -56153,9 +64103,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:636: 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:603: 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:636"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:603"
 ( $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>&-
@@ -56163,29 +64113,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:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: 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:603"
 ( $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:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:636: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:603: \$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:636"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:603"
 ( $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
@@ -56194,25 +64144,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:636: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:603: \$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:636"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:603"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56220,66 +64170,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:636: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:603"
 ( $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:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:603: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:603"
+( $at_check_trace; $BISON_C_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:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $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
+$as_echo "$at_srcdir/calc.at:603: \$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:603"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $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
+$as_echo "$at_srcdir/calc.at:603: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:603"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -56298,28 +64259,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56328,32 +64289,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56391,15 +64352,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56409,28 +64370,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56468,15 +64429,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56486,28 +64447,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56545,15 +64506,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56563,28 +64524,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56622,15 +64583,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56641,28 +64602,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56700,43 +64661,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $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:636:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:603"
 ( $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:636"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56774,15 +64735,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56809,28 +64770,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56872,15 +64833,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56889,32 +64850,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -56953,46 +64914,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57032,15 +64993,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57053,28 +65014,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:636:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:603"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:603: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57114,15 +65075,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:636: cat stderr"
-at_fn_check_prepare_trace "calc.at:636"
+$as_echo "$at_srcdir/calc.at:603: cat stderr"
+at_fn_check_prepare_trace "calc.at:603"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:636"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:603"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57134,13 +65095,13 @@ $at_traceon; }
   $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:637' \
+#AT_STOP_204
+#AT_START_205
+at_fn_group_banner 205 'calc.at:604' \
   "Calculator %yacc" "                               " 11
 at_xfail=no
 (
-  $as_echo "179. $at_setup_line: testing $at_desc ..."
+  $as_echo "205. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -57176,6 +65137,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -57195,10 +65157,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -57258,15 +65217,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -57326,15 +65283,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -57418,9 +65367,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:604: 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:604"
 ( $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>&-
@@ -57428,29 +65377,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:604"
 $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:604: 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:604"
 ( $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:604"
 $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:604: \$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:604"
 ( $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
@@ -57459,25 +65408,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:637: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:604: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:604"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57485,66 +65434,77 @@ $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:604: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:604"
 ( $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:604"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:604: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:604"
+( $at_check_trace; $BISON_C_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:637"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:604"
 $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
+$as_echo "$at_srcdir/calc.at:604: \$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:604"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:604"
 $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
+$as_echo "$at_srcdir/calc.at:604: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:604"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -57563,28 +65523,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57593,32 +65553,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57656,15 +65616,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57674,28 +65634,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57733,15 +65693,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57751,28 +65711,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57810,15 +65770,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57828,28 +65788,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57887,15 +65847,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57906,28 +65866,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -57965,43 +65925,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $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:604:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:604"
 ( $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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58039,15 +65999,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58074,28 +66034,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58137,15 +66097,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58154,32 +66114,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58218,46 +66178,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58297,15 +66257,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58318,28 +66278,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:604:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:604"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $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:604: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58379,15 +66339,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 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:604: cat stderr"
+at_fn_check_prepare_trace "calc.at:604"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:604"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58399,13 +66359,13 @@ $at_traceon; }
   $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:638' \
+#AT_STOP_205
+#AT_START_206
+at_fn_group_banner 206 'calc.at:605' \
   "Calculator %error-verbose" "                      " 11
 at_xfail=no
 (
-  $as_echo "180. $at_setup_line: testing $at_desc ..."
+  $as_echo "206. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -58441,6 +66401,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -58460,10 +66421,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -58523,15 +66481,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -58591,15 +66547,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -58683,9 +66631,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:605: 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:605"
 ( $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>&-
@@ -58693,29 +66641,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:605"
 $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:605: 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:605"
 ( $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:605"
 $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:605: \$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:605"
 ( $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
@@ -58724,25 +66672,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:638: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:605: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:605"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58750,66 +66698,77 @@ $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:605: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:605"
 ( $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:605"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:605: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:605"
+( $at_check_trace; $BISON_C_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:638"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:605"
 $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
+$as_echo "$at_srcdir/calc.at:605: \$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:605"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:605"
 $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
+$as_echo "$at_srcdir/calc.at:605: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:605"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -58828,28 +66787,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58858,32 +66817,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58920,15 +66879,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58938,28 +66897,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -58996,15 +66955,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59014,28 +66973,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59072,15 +67031,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59090,28 +67049,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59148,15 +67107,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59167,28 +67126,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59225,43 +67184,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $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:605:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:605"
 ( $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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59298,15 +67257,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59333,28 +67292,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59395,15 +67354,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59412,32 +67371,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59475,46 +67434,46 @@ 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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59553,15 +67512,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59574,28 +67533,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:605:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:605"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $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:605: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59634,15 +67593,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:605: cat stderr"
+at_fn_check_prepare_trace "calc.at:605"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:605"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -59654,13 +67613,13 @@ $at_traceon; }
   $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:640' \
-  "Calculator %define api.pure %locations" "         " 11
+#AT_STOP_206
+#AT_START_207
+at_fn_group_banner 207 'calc.at:607' \
+  "Calculator %define api.pure full %locations" "    " 11
 at_xfail=no
 (
-  $as_echo "181. $at_setup_line: testing $at_desc ..."
+  $as_echo "207. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -59682,7 +67641,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%define api.pure %locations
+%define api.pure full %locations
 
 %code requires
 {
@@ -59696,6 +67655,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -59715,10 +67675,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -59778,15 +67735,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -59860,18 +67817,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -59957,9 +67903,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:607: 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:607"
 ( $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>&-
@@ -59967,29 +67913,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:607"
 $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:607: 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:607"
 ( $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:607"
 $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:607: \$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:607"
 ( $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
@@ -59998,25 +67944,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:640: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:607: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:607"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60024,66 +67970,77 @@ $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:607: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:607"
 ( $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:607"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:607: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:607"
+( $at_check_trace; $BISON_C_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:640"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:607"
 $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
+$as_echo "$at_srcdir/calc.at:607: \$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:607"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:607"
 $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
+$as_echo "$at_srcdir/calc.at:607: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:607"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -60102,28 +68059,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60132,32 +68089,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60188,22 +68145,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60213,28 +68169,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60265,22 +68221,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60290,28 +68245,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60342,22 +68297,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60367,28 +68321,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60419,22 +68373,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60445,28 +68398,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60497,50 +68450,49 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $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:607:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:607"
 ( $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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60571,22 +68523,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60613,28 +68564,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60669,22 +68620,21 @@ calc: error: 4444 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60693,32 +68643,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60750,53 +68700,52 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60829,22 +68778,21 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60857,28 +68805,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:607:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:607"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $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:607: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60911,22 +68859,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:607: cat stderr"
+at_fn_check_prepare_trace "calc.at:607"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -60938,13 +68885,13 @@ $at_traceon; }
   $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:641' \
-  "Calculator %define api.push-pull both %define api.pure %locations" "" 11
+#AT_STOP_207
+#AT_START_208
+at_fn_group_banner 208 'calc.at:608' \
+  "Calculator %define api.push-pull both %define api.pure full %locations" "" 11
 at_xfail=no
 (
-  $as_echo "182. $at_setup_line: testing $at_desc ..."
+  $as_echo "208. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -60966,7 +68913,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%define api.push-pull both %define api.pure %locations
+%define api.push-pull both %define api.pure full %locations
 
 %code requires
 {
@@ -60980,6 +68927,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -60999,10 +68947,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -61062,15 +69007,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -61144,18 +69089,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -61241,9 +69175,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:641: 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:608: 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:641"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:608"
 ( $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>&-
@@ -61251,29 +69185,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:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: 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:608"
 ( $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:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:641: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:608: \$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:641"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:608"
 ( $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
@@ -61282,25 +69216,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:641: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:608: \$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:641"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:608"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61308,66 +69242,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:641: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:608"
 ( $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:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:608: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:608"
+( $at_check_trace; $BISON_C_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:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $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
+$as_echo "$at_srcdir/calc.at:608: \$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:608"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $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
+$as_echo "$at_srcdir/calc.at:608: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:608"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -61386,28 +69331,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61416,32 +69361,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61472,22 +69417,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61497,28 +69441,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61549,22 +69493,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61574,28 +69517,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61626,22 +69569,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61651,28 +69593,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61703,22 +69645,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61729,28 +69670,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61781,50 +69722,49 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $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:641:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:608"
 ( $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:641"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61855,22 +69795,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61897,28 +69836,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61953,22 +69892,21 @@ calc: error: 4444 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -61977,32 +69915,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62034,53 +69972,52 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62113,22 +70050,21 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62141,28 +70077,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:641:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:608"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:608: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62195,22 +70131,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
+
 # 4. If error-verbose is not used, strip the`, unexpected....' part.
 sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:641: cat stderr"
-at_fn_check_prepare_trace "calc.at:641"
+$as_echo "$at_srcdir/calc.at:608: cat stderr"
+at_fn_check_prepare_trace "calc.at:608"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:608"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62222,13 +70157,13 @@ $at_traceon; }
   $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:642' \
+#AT_STOP_208
+#AT_START_209
+at_fn_group_banner 209 'calc.at:609' \
   "Calculator %error-verbose %locations" "           " 11
 at_xfail=no
 (
-  $as_echo "183. $at_setup_line: testing $at_desc ..."
+  $as_echo "209. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -62264,6 +70199,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -62283,10 +70219,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -62346,24 +70279,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -62437,18 +70361,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (yylloc).last_column = 1;
-      (yylloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -62534,9 +70447,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:642: 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:609: 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:642"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:609"
 ( $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>&-
@@ -62544,29 +70457,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:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: 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:609"
 ( $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:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:642: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:609: \$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:642"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:609"
 ( $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
@@ -62575,25 +70488,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:642: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:609: \$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:642"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:609"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62601,66 +70514,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:642: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:609"
 ( $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:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:609: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:609"
+( $at_check_trace; $BISON_C_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:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $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
+$as_echo "$at_srcdir/calc.at:609: \$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:609"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $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
+$as_echo "$at_srcdir/calc.at:609: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:609"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -62679,28 +70603,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62709,32 +70633,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62770,15 +70694,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62788,28 +70712,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62845,15 +70769,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62863,28 +70787,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62920,15 +70844,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62938,28 +70862,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -62995,15 +70919,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63014,28 +70938,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63071,43 +70995,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $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:642:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:609"
 ( $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:642"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63143,15 +71067,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63178,28 +71102,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63239,15 +71163,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63256,32 +71180,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63318,46 +71242,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63395,15 +71319,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63416,28 +71340,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:642:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:609"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:609: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63475,15 +71399,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:642: cat stderr"
-at_fn_check_prepare_trace "calc.at:642"
+$as_echo "$at_srcdir/calc.at:609: cat stderr"
+at_fn_check_prepare_trace "calc.at:609"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63495,13 +71419,13 @@ $at_traceon; }
   $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:644' \
+#AT_STOP_209
+#AT_START_210
+at_fn_group_banner 210 'calc.at:611' \
   "Calculator %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "184. $at_setup_line: testing $at_desc ..."
+  $as_echo "210. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -63537,6 +71461,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -63556,10 +71481,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -63619,24 +71541,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -63723,18 +71636,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -63830,9 +71732,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:644: 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:611: 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:644"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:611"
 ( $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>&-
@@ -63840,29 +71742,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:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: 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:611"
 ( $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:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:644: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:611: \$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:644"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:611"
 ( $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
@@ -63871,25 +71773,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:644: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:611: \$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:644"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:611"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -63897,96 +71799,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:644: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:611"
 ( $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:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:611: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:611"
+( $at_check_trace; $BISON_C_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: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_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $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
+$as_echo "$at_srcdir/calc.at:611: \$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:611"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $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
+$as_echo "$at_srcdir/calc.at:611: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:611"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $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
+$as_echo "$at_srcdir/calc.at:611: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:611"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -64005,28 +71916,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64035,32 +71946,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64096,15 +72007,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64114,28 +72025,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64171,15 +72082,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64189,28 +72100,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64246,15 +72157,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64264,28 +72175,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64321,15 +72232,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64340,28 +72251,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64397,43 +72308,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $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:644:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:611"
 ( $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:644"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64469,15 +72380,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64504,28 +72415,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64565,15 +72476,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64582,32 +72493,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64644,46 +72555,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64721,15 +72632,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64742,28 +72653,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:644:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:611"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:611: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64801,15 +72712,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:644: cat stderr"
-at_fn_check_prepare_trace "calc.at:644"
+$as_echo "$at_srcdir/calc.at:611: cat stderr"
+at_fn_check_prepare_trace "calc.at:611"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:611"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -64821,13 +72732,13 @@ $at_traceon; }
   $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:645' \
+#AT_STOP_210
+#AT_START_211
+at_fn_group_banner 211 'calc.at:612' \
   "Calculator %error-verbose %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "185. $at_setup_line: testing $at_desc ..."
+  $as_echo "211. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -64863,6 +72774,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -64882,10 +72794,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -64945,24 +72854,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -65049,18 +72949,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -65156,9 +73045,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:645: 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:612: 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:645"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:612"
 ( $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>&-
@@ -65166,29 +73055,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:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: 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:612"
 ( $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:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:645: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:612: \$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:645"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:612"
 ( $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
@@ -65197,25 +73086,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:645: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:612: \$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:645"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:612"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65223,96 +73112,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:645: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:612"
 ( $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:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:612: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:612"
+( $at_check_trace; $BISON_C_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:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $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
+$as_echo "$at_srcdir/calc.at:612: \$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:612"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $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
+$as_echo "$at_srcdir/calc.at:612: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:612"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $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
+$as_echo "$at_srcdir/calc.at:612: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:612"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -65331,28 +73229,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65361,32 +73259,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65422,15 +73320,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65440,28 +73338,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65497,15 +73395,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65515,28 +73413,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65572,15 +73470,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65590,28 +73488,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65647,15 +73545,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65666,28 +73564,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65723,43 +73621,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $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:645:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:612"
 ( $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:645"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65795,15 +73693,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65830,28 +73728,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65891,15 +73789,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65908,32 +73806,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -65970,46 +73868,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66047,15 +73945,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66068,28 +73966,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:645:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:612"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:612: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66127,15 +74025,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:645: cat stderr"
-at_fn_check_prepare_trace "calc.at:645"
+$as_echo "$at_srcdir/calc.at:612: cat stderr"
+at_fn_check_prepare_trace "calc.at:612"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66147,13 +74045,13 @@ $at_traceon; }
   $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:647' \
+#AT_STOP_211
+#AT_START_212
+at_fn_group_banner 212 'calc.at:614' \
   "Calculator %debug" "                              " 11
 at_xfail=no
 (
-  $as_echo "186. $at_setup_line: testing $at_desc ..."
+  $as_echo "212. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -66189,6 +74087,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -66208,10 +74107,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -66271,15 +74167,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -66339,15 +74233,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -66431,9 +74317,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:647: 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:614: 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:647"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:614"
 ( $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>&-
@@ -66441,29 +74327,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:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: 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:614"
 ( $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:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:647: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:614: \$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:647"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:614"
 ( $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
@@ -66472,25 +74358,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:647: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:614: \$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:647"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:614"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66498,66 +74384,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:647: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:614"
 ( $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:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:614: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:614"
+( $at_check_trace; $BISON_C_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:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $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
+$as_echo "$at_srcdir/calc.at:614: \$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:614"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $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
+$as_echo "$at_srcdir/calc.at:614: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:614"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -66576,28 +74473,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66606,32 +74503,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66669,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66687,28 +74584,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66746,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66764,28 +74661,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66823,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66841,28 +74738,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66900,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66919,28 +74816,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -66978,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $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:647:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:614"
 ( $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:647"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67052,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67087,28 +74984,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67150,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67167,32 +75064,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67231,46 +75128,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67310,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67331,28 +75228,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:647:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:614"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67392,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:647: cat stderr"
-at_fn_check_prepare_trace "calc.at:647"
+$as_echo "$at_srcdir/calc.at:614: cat stderr"
+at_fn_check_prepare_trace "calc.at:614"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:647"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67412,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:648' \
+#AT_STOP_212
+#AT_START_213
+at_fn_group_banner 213 'calc.at:615' \
   "Calculator %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "187. $at_setup_line: testing $at_desc ..."
+  $as_echo "213. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -67454,6 +75351,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -67473,10 +75371,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -67536,24 +75431,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -67640,18 +75526,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -67747,9 +75622,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:648: 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:615: 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:648"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:615"
 ( $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>&-
@@ -67757,29 +75632,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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: 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:615"
 ( $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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:648: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:615: \$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:648"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:615"
 ( $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
@@ -67788,25 +75663,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:648: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:615: \$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:648"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:615"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67814,96 +75689,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:648: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:615"
 ( $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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:615: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:615"
+( $at_check_trace; $BISON_C_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:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $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
+$as_echo "$at_srcdir/calc.at:615: \$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:615"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $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
+$as_echo "$at_srcdir/calc.at:615: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:615"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $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
+$as_echo "$at_srcdir/calc.at:615: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:615"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -67922,28 +75806,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -67952,32 +75836,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68013,15 +75897,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68031,28 +75915,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68088,15 +75972,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68106,28 +75990,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68163,15 +76047,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68181,28 +76065,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68238,15 +76122,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68257,28 +76141,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68314,43 +76198,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $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:648:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:615"
 ( $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:648"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68386,15 +76270,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68421,28 +76305,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68482,15 +76366,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68499,32 +76383,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68561,46 +76445,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68638,15 +76522,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68659,28 +76543,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:648:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:615"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:615: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68718,15 +76602,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:648: cat stderr"
-at_fn_check_prepare_trace "calc.at:648"
+$as_echo "$at_srcdir/calc.at:615: cat stderr"
+at_fn_check_prepare_trace "calc.at:615"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:615"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -68738,13 +76622,13 @@ $at_traceon; }
   $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:649' \
+#AT_STOP_213
+#AT_START_214
+at_fn_group_banner 214 'calc.at:616' \
   "Calculator %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "188. $at_setup_line: testing $at_desc ..."
+  $as_echo "214. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -68780,6 +76664,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -68799,10 +76684,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -68862,24 +76744,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -68966,18 +76839,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -69073,9 +76935,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:649: 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:616: 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:649"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:616"
 ( $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>&-
@@ -69083,29 +76945,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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:649: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:616: \$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:649"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:616"
 ( $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
@@ -69114,25 +76976,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:649: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:616: \$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:649"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:616"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69140,96 +77002,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:649: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:616"
 ( $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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:616: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:616"
+( $at_check_trace; $BISON_C_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:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $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
+$as_echo "$at_srcdir/calc.at:616: \$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:616"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $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
+$as_echo "$at_srcdir/calc.at:616: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:616"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $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
+$as_echo "$at_srcdir/calc.at:616: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:616"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -69248,28 +77119,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69278,32 +77149,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69339,15 +77210,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69357,28 +77228,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69414,15 +77285,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69432,28 +77303,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69489,15 +77360,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69507,28 +77378,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69564,15 +77435,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69583,28 +77454,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69640,43 +77511,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $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:649:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:616"
 ( $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:649"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69712,15 +77583,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69747,28 +77618,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69808,15 +77679,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69825,32 +77696,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69887,46 +77758,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69964,15 +77835,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -69985,28 +77856,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:649:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:616"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70044,15 +77915,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:649: cat stderr"
-at_fn_check_prepare_trace "calc.at:649"
+$as_echo "$at_srcdir/calc.at:616: cat stderr"
+at_fn_check_prepare_trace "calc.at:616"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:616"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70064,13 +77935,13 @@ $at_traceon; }
   $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:651' \
-  "Calculator %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
+#AT_STOP_214
+#AT_START_215
+at_fn_group_banner 215 'calc.at:618' \
+  "Calculator %define api.pure full %verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "189. $at_setup_line: testing $at_desc ..."
+  $as_echo "215. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -70092,7 +77963,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%define api.pure %error-verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc
+%define api.pure full %verbose %debug %locations %defines %name-prefix "calc" %verbose %yacc
 
 %code requires
 {
@@ -70106,6 +77977,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -70125,10 +77997,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror (YYLTYPE const * const llocp,  const char *msg);
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -70188,15 +78057,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -70283,18 +78152,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -70390,9 +78248,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:651: 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:618: 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:651"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:618"
 ( $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>&-
@@ -70400,29 +78258,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:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:651: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:618: \$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:651"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:618"
 ( $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
@@ -70431,25 +78289,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:651: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:618: \$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:651"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:618"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70457,96 +78315,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:651: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:618"
 ( $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:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:618: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:618"
+( $at_check_trace; $BISON_C_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: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_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $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
+$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"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $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
+$as_echo "$at_srcdir/calc.at:618: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:618"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $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
+$as_echo "$at_srcdir/calc.at:618: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:618"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -70565,28 +78432,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70595,32 +78462,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70651,21 +78518,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70675,28 +78542,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70727,21 +78594,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70751,28 +78618,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70803,21 +78670,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70827,28 +78694,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70879,21 +78746,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70904,28 +78771,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -70956,49 +78823,49 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $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:651:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:618"
 ( $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:651"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71029,21 +78896,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71070,28 +78937,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71126,21 +78993,21 @@ calc: error: 4444 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71149,32 +79016,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71206,52 +79073,52 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71284,21 +79151,21 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71311,28 +79178,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:651:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:618"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71365,21 +79232,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:651: cat stderr"
-at_fn_check_prepare_trace "calc.at:651"
+$as_echo "$at_srcdir/calc.at:618: cat stderr"
+at_fn_check_prepare_trace "calc.at:618"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:618"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71391,13 +79258,13 @@ $at_traceon; }
   $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:652' \
-  "Calculator %define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
+#AT_STOP_215
+#AT_START_216
+at_fn_group_banner 216 'calc.at:619' \
+  "Calculator %define api.push-pull both %define api.pure full %verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 11
 at_xfail=no
 (
-  $as_echo "190. $at_setup_line: testing $at_desc ..."
+  $as_echo "216. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -71419,7 +79286,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%define api.push-pull both %define api.pure %error-verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc
+%define api.push-pull both %define api.pure full %verbose %debug %locations %defines %define api.prefix "calc" %verbose %yacc
 
 %code requires
 {
@@ -71433,6 +79300,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -71452,10 +79320,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror (CALCLTYPE const * const llocp,  const char *msg);
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp);
 }
 
@@ -71515,15 +79380,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror (CALCLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  YY_LOCATION_PRINT (stderr, (*llocp));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -71610,18 +79475,7 @@ read_signed_integer (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -71717,9 +79571,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:652: 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:619: 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:652"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:619"
 ( $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>&-
@@ -71727,29 +79581,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:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:652: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:619: \$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:652"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:619"
 ( $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
@@ -71758,25 +79612,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:652: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:619: \$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:652"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:619"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71784,96 +79638,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:652: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:619"
 ( $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:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:619: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:619"
+( $at_check_trace; $BISON_C_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:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $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
+$as_echo "$at_srcdir/calc.at:619: \$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:619"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $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
+$as_echo "$at_srcdir/calc.at:619: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:619"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $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
+$as_echo "$at_srcdir/calc.at:619: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:619"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -71892,28 +79755,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71922,32 +79785,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -71978,21 +79841,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72002,28 +79865,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72054,21 +79917,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72078,28 +79941,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72130,21 +79993,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72154,28 +80017,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72206,21 +80069,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72231,28 +80094,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72283,49 +80146,49 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $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:652:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:619"
 ( $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:652"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72356,21 +80219,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72397,28 +80260,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72453,21 +80316,21 @@ calc: error: 4444 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72476,32 +80339,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72533,52 +80396,52 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72611,21 +80474,21 @@ calc: error: 2222 != 1
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72638,28 +80501,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:652:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:619"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72692,21 +80555,21 @@ cat >expout <<'_ATEOF'
 _ATEOF
 
 # 3. If locations are not used, remove them.
-sed 's/^[-0-9.]*: //' expout >at-expout
-mv at-expout expout
-# 4. If error-verbose is not used, strip the`, unexpected....' part.
 
+# 4. If error-verbose is not used, strip the`, unexpected....' part.
+sed 's/syntax error, .*$/syntax error/' expout >at-expout
+mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:652: cat stderr"
-at_fn_check_prepare_trace "calc.at:652"
+$as_echo "$at_srcdir/calc.at:619: cat stderr"
+at_fn_check_prepare_trace "calc.at:619"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:652"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:619"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -72718,13 +80581,13 @@ $at_traceon; }
   $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:654' \
+#AT_STOP_216
+#AT_START_217
+at_fn_group_banner 217 'calc.at:621' \
   "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 "191. $at_setup_line: testing $at_desc ..."
+  $as_echo "217. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -72760,6 +80623,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -72779,10 +80643,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (CALCLTYPE *llocp,
-                     semantic_value *result, int *count,
-                     const char *s
-                     );
+static void calcerror (CALCLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg);
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp);
 }
 
@@ -72842,24 +80703,17 @@ power (int base, int exponent)
   return res;
 }
 
+
+#include <stdio.h>
 /* A C error reporting function.  */
-static void
-yyerror (CALCLTYPE *llocp,
-         semantic_value *result, int *count,
-         const char *s)
-{
-(void) result; (void) count;
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+static
+void calcerror (CALCLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg)
+{
+  YYUSE(result);
+  YYUSE(count);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -72946,18 +80800,7 @@ read_signed_integer (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -73053,9 +80896,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:654: 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:621: 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:654"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:621"
 ( $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>&-
@@ -73063,29 +80906,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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:654: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:621: \$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:654"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:621"
 ( $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
@@ -73094,25 +80937,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:654: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:621: \$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:654"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:621"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73120,96 +80963,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:654: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:621"
 ( $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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:621: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:621"
+( $at_check_trace; $BISON_C_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:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $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
+$as_echo "$at_srcdir/calc.at:621: \$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:621"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $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
+$as_echo "$at_srcdir/calc.at:621: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:621"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $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
+$as_echo "$at_srcdir/calc.at:621: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:621"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -73228,28 +81080,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73258,32 +81110,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73319,15 +81171,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73337,28 +81189,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73394,15 +81246,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73412,28 +81264,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73469,15 +81321,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73487,28 +81339,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73544,15 +81396,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73563,28 +81415,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73620,43 +81472,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $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:654:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:621"
 ( $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:654"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73692,15 +81544,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73727,28 +81579,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73788,15 +81640,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73805,32 +81657,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73867,46 +81719,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73944,15 +81796,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -73965,28 +81817,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:654:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:621"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74024,15 +81876,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:654: cat stderr"
-at_fn_check_prepare_trace "calc.at:654"
+$as_echo "$at_srcdir/calc.at:621: cat stderr"
+at_fn_check_prepare_trace "calc.at:621"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:621"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74044,13 +81896,13 @@ $at_traceon; }
   $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:671' \
+#AT_STOP_217
+#AT_START_218
+at_fn_group_banner 218 'calc.at:638' \
   "Calculator %glr-parser " "                        " 12
 at_xfail=no
 (
-  $as_echo "192. $at_setup_line: testing $at_desc ..."
+  $as_echo "218. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -74086,6 +81938,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -74105,10 +81958,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -74168,15 +82018,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -74236,15 +82084,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -74328,9 +82168,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:671: 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:671"
+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>&-
@@ -74338,29 +82178,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:671"
+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: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"
+$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:671"
+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:671: \$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:671"
+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
@@ -74369,25 +82209,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:671: \$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:671"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74395,66 +82235,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:671: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+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: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
+$as_echo "$at_srcdir/calc.at:638: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:638"
+( $at_check_trace; $BISON_C_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:671"
+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:671: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:671"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:638: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:638"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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'
 1 + 2 * 3 = 7
@@ -74473,28 +82324,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74503,32 +82354,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74566,15 +82417,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74584,28 +82435,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74643,15 +82494,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74661,28 +82512,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74720,15 +82571,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74738,28 +82589,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74797,15 +82648,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74816,28 +82667,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74875,43 +82726,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+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:671:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74949,15 +82800,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -74984,28 +82835,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75047,15 +82898,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75064,32 +82915,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75128,46 +82979,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75207,15 +83058,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75228,28 +83079,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:671:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:671"
+$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:671"
+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:671: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75289,15 +83140,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:671: cat stderr"
-at_fn_check_prepare_trace "calc.at:671"
+$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:671"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:638"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75309,13 +83160,13 @@ $at_traceon; }
   $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:673' \
+#AT_STOP_218
+#AT_START_219
+at_fn_group_banner 219 'calc.at:640' \
   "Calculator %glr-parser %defines" "                " 12
 at_xfail=no
 (
-  $as_echo "193. $at_setup_line: testing $at_desc ..."
+  $as_echo "219. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -75351,6 +83202,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -75370,10 +83222,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -75433,15 +83282,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -75514,15 +83361,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -75616,9 +83455,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: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:673"
+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>&-
@@ -75626,29 +83465,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:640"
 $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: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:673"
+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:673: \$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:673"
+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
@@ -75657,25 +83496,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:673: \$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:673"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75683,96 +83522,105 @@ $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: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:673"
+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: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
+$as_echo "$at_srcdir/calc.at:640: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:640"
+( $at_check_trace; $BISON_C_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: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_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: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
+$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"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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:673: sed -ne '/./q;=;p;' calc.h"
-at_fn_check_prepare_trace "calc.at:673"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+$as_echo "$at_srcdir/calc.at:640: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:640"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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([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
+$as_echo "$at_srcdir/calc.at:640: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:640"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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
@@ -75791,28 +83639,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75821,32 +83669,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75884,15 +83732,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75902,28 +83750,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75961,15 +83809,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -75979,28 +83827,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76038,15 +83886,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76056,28 +83904,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76115,15 +83963,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76134,28 +83982,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76193,43 +84041,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+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:673:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:673"
+$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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76267,15 +84115,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76302,28 +84150,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76365,15 +84213,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76382,32 +84230,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76446,46 +84294,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76525,15 +84373,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76546,28 +84394,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: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:673"
+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: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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76607,15 +84455,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:673"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:640"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -76627,13 +84475,13 @@ $at_traceon; }
   $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:674' \
+#AT_STOP_219
+#AT_START_220
+at_fn_group_banner 220 'calc.at:641' \
   "Calculator %glr-parser %locations" "              " 12
 at_xfail=no
 (
-  $as_echo "194. $at_setup_line: testing $at_desc ..."
+  $as_echo "220. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -76669,6 +84517,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -76688,10 +84537,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -76751,24 +84597,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -76842,18 +84679,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (yylloc).last_column = 1;
-      (yylloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -76939,9 +84765,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: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:674"
+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>&-
@@ -76949,29 +84775,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:641"
 $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: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:674"
+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:674: \$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:674"
+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
@@ -76980,25 +84806,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:674: \$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:674"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77006,66 +84832,77 @@ $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: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:674"
+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: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
+$as_echo "$at_srcdir/calc.at:641: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:641"
+( $at_check_trace; $BISON_C_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:674"
+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:674: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:674"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:641: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:641"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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
@@ -77084,28 +84921,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77114,32 +84951,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77176,15 +85013,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77194,28 +85031,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77252,15 +85089,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77270,28 +85107,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77328,15 +85165,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77346,28 +85183,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77404,15 +85241,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77423,28 +85260,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77481,43 +85318,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+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:674:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:674"
+$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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77554,15 +85391,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77589,28 +85426,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77651,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:674: cat stderr"
-at_fn_check_prepare_trace "calc.at:674"
+$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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77668,32 +85505,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77731,46 +85568,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77809,15 +85646,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77830,28 +85667,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: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:674"
+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: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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77890,15 +85727,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:674"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:641"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -77910,13 +85747,13 @@ $at_traceon; }
   $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:675' \
+#AT_STOP_220
+#AT_START_221
+at_fn_group_banner 221 'calc.at:642' \
   "Calculator %glr-parser %name-prefix \"calc\"" "     " 12
 at_xfail=no
 (
-  $as_echo "195. $at_setup_line: testing $at_desc ..."
+  $as_echo "221. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -77952,6 +85789,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -77971,10 +85809,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -78034,15 +85869,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -78102,15 +85935,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -78194,9 +86019,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:675: 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:675"
+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>&-
@@ -78204,29 +86029,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:675"
+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: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"
+$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:675"
+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:675: \$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:675"
+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
@@ -78235,25 +86060,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:675: \$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:675"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78261,66 +86086,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:675: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+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: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
+$as_echo "$at_srcdir/calc.at:642: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:642"
+( $at_check_trace; $BISON_C_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:675"
+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:675: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:675"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:642: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:642"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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'
 1 + 2 * 3 = 7
@@ -78339,28 +86175,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78369,32 +86205,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78432,15 +86268,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78450,28 +86286,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78509,15 +86345,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78527,28 +86363,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78586,15 +86422,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78604,28 +86440,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78663,15 +86499,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78682,28 +86518,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78741,43 +86577,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+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:675:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78815,15 +86651,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78850,28 +86686,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78913,15 +86749,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78930,32 +86766,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -78994,46 +86830,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79073,15 +86909,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79094,28 +86930,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:675:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:675"
+$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:675"
+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:675: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79155,15 +86991,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:675: cat stderr"
-at_fn_check_prepare_trace "calc.at:675"
+$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:675"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79175,13 +87011,13 @@ $at_traceon; }
   $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:676' \
+#AT_STOP_221
+#AT_START_222
+at_fn_group_banner 222 'calc.at:643' \
   "Calculator %glr-parser %define api.prefix \"calc\"" "" 12
 at_xfail=no
 (
-  $as_echo "196. $at_setup_line: testing $at_desc ..."
+  $as_echo "222. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -79217,6 +87053,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -79236,10 +87073,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -79299,15 +87133,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -79367,15 +87199,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -79459,9 +87283,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:643: 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:643"
 ( $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>&-
@@ -79469,29 +87293,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:643"
 $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:643: 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:643"
 ( $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:643"
 $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:643: \$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:643"
 ( $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
@@ -79500,25 +87324,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:676: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:643: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:643"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79526,66 +87350,77 @@ $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:643: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:643"
 ( $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:643"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:643: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:643"
+( $at_check_trace; $BISON_C_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:676"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:643"
 $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
+$as_echo "$at_srcdir/calc.at:643: \$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:643"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:643"
 $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
+$as_echo "$at_srcdir/calc.at:643: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:643"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -79604,28 +87439,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79634,32 +87469,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79697,15 +87532,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79715,28 +87550,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79774,15 +87609,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79792,28 +87627,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79851,15 +87686,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79869,28 +87704,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79928,15 +87763,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -79947,28 +87782,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80006,43 +87841,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $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:643:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:643"
 ( $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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80080,15 +87915,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80115,28 +87950,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80178,15 +88013,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80195,32 +88030,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80259,46 +88094,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80338,15 +88173,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80359,28 +88194,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:643:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:643"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $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:643: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80420,15 +88255,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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:643: cat stderr"
+at_fn_check_prepare_trace "calc.at:643"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:643"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80440,13 +88275,13 @@ $at_traceon; }
   $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:677' \
+#AT_STOP_222
+#AT_START_223
+at_fn_group_banner 223 'calc.at:644' \
   "Calculator %glr-parser %verbose" "                " 12
 at_xfail=no
 (
-  $as_echo "197. $at_setup_line: testing $at_desc ..."
+  $as_echo "223. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -80482,6 +88317,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -80501,10 +88337,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -80564,15 +88397,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -80632,15 +88463,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -80724,9 +88547,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:677: 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:677"
+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>&-
@@ -80734,29 +88557,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:677"
+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: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"
+$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:677"
+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:677: \$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:677"
+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
@@ -80765,25 +88588,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:677: \$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:677"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80791,66 +88614,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:677: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+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: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
+$as_echo "$at_srcdir/calc.at:644: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:644"
+( $at_check_trace; $BISON_C_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:677"
+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:677: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:677"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$as_echo "$at_srcdir/calc.at:644: \$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:644"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:644: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:644"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -80869,28 +88703,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80899,32 +88733,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80962,15 +88796,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -80980,28 +88814,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81039,15 +88873,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81057,28 +88891,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81116,15 +88950,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81134,28 +88968,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81193,15 +89027,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81212,28 +89046,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81271,43 +89105,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+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:677:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81345,15 +89179,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81380,28 +89214,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81443,15 +89277,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81460,32 +89294,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81524,46 +89358,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81603,15 +89437,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81624,28 +89458,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:677:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:677"
+$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:677"
+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:677: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81685,15 +89519,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:677: cat stderr"
-at_fn_check_prepare_trace "calc.at:677"
+$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:677"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -81705,13 +89539,13 @@ $at_traceon; }
   $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:678' \
+#AT_STOP_223
+#AT_START_224
+at_fn_group_banner 224 'calc.at:645' \
   "Calculator %glr-parser %yacc" "                   " 12
 at_xfail=no
 (
-  $as_echo "198. $at_setup_line: testing $at_desc ..."
+  $as_echo "224. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -81747,6 +89581,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -81766,10 +89601,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -81829,15 +89661,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -81897,15 +89727,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -81989,9 +89811,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: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:678"
+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>&-
@@ -81999,29 +89821,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:645"
 $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: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:678"
+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:678: \$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:678"
+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
@@ -82030,25 +89852,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:678: \$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:678"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82056,66 +89878,77 @@ $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: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:678"
+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: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
+$as_echo "$at_srcdir/calc.at:645: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:645"
+( $at_check_trace; $BISON_C_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:678"
+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:678: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:678"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$as_echo "$at_srcdir/calc.at:645: \$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:645"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:645: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:645"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -82134,28 +89967,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82164,32 +89997,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82227,15 +90060,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82245,28 +90078,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82304,15 +90137,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82322,28 +90155,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82381,15 +90214,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82399,28 +90232,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82458,15 +90291,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82477,28 +90310,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82536,43 +90369,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+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:678:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:678"
+$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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82610,15 +90443,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82645,28 +90478,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82708,15 +90541,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82725,32 +90558,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82789,46 +90622,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82868,15 +90701,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82889,28 +90722,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: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:678"
+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: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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82950,15 +90783,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 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: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:678"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:645"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -82970,13 +90803,13 @@ $at_traceon; }
   $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:679' \
+#AT_STOP_224
+#AT_START_225
+at_fn_group_banner 225 'calc.at:646' \
   "Calculator %glr-parser %error-verbose" "          " 12
 at_xfail=no
 (
-  $as_echo "199. $at_setup_line: testing $at_desc ..."
+  $as_echo "225. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -83012,6 +90845,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -83031,10 +90865,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -83094,15 +90925,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -83162,15 +90991,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -83254,9 +91075,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:646: 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:646"
 ( $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>&-
@@ -83264,29 +91085,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:646"
 $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:646: 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:646"
 ( $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:646"
 $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:646: \$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:646"
 ( $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
@@ -83295,25 +91116,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:679: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:646: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:646"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83321,66 +91142,77 @@ $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:646: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:646"
 ( $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:646"
 $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 \$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
+$as_echo "$at_srcdir/calc.at:646: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:646"
+( $at_check_trace; $BISON_C_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:679"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:646"
 $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
+$as_echo "$at_srcdir/calc.at:646: \$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:646"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:646"
 $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
+$as_echo "$at_srcdir/calc.at:646: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:646"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -83399,28 +91231,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83429,32 +91261,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83491,15 +91323,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83509,28 +91341,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83567,15 +91399,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83585,28 +91417,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83643,15 +91475,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83661,28 +91493,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83719,15 +91551,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83738,28 +91570,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83796,43 +91628,43 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $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:646:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:646"
 ( $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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83869,15 +91701,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83904,28 +91736,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83966,15 +91798,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -83983,32 +91815,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84046,46 +91878,46 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84124,15 +91956,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84145,28 +91977,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:646:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:646"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $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:646: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84205,15 +92037,15 @@ mv at-expout expout
 
 # 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:646: cat stderr"
+at_fn_check_prepare_trace "calc.at:646"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:646"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84225,13 +92057,13 @@ $at_traceon; }
   $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:681' \
+#AT_STOP_225
+#AT_START_226
+at_fn_group_banner 226 'calc.at:648' \
   "Calculator %glr-parser %define api.pure %locations" "" 12
 at_xfail=no
 (
-  $as_echo "200. $at_setup_line: testing $at_desc ..."
+  $as_echo "226. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -84267,6 +92099,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -84286,10 +92119,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (YYLTYPE *llocp,
-
-                     const char *s
-                     );
+static void yyerror (YYLTYPE const * const llocp,  const char *msg);
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -84349,24 +92179,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (YYLTYPE *llocp,
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -84440,18 +92261,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int yylex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -84537,9 +92347,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:681: 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:681"
+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>&-
@@ -84547,29 +92357,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:681"
+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: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"
+$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:681"
+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:681: \$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:681"
+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
@@ -84578,25 +92388,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:681: \$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:681"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84604,66 +92414,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:681: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+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: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
+$as_echo "$at_srcdir/calc.at:648: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:648"
+( $at_check_trace; $BISON_C_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:681"
+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:681: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:681"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$as_echo "$at_srcdir/calc.at:648: \$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:648"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:648: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:648"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -84682,28 +92503,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84712,32 +92533,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84774,15 +92595,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84792,28 +92613,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84850,15 +92671,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84868,28 +92689,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84926,15 +92747,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -84944,28 +92765,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85002,15 +92823,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85021,28 +92842,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85079,43 +92900,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+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:681:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85152,15 +92973,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85187,28 +93008,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85249,15 +93070,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85266,32 +93087,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85329,46 +93150,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85407,15 +93228,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85428,28 +93249,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:681:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:681"
+$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:681"
+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:681: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85488,15 +93309,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:681: cat stderr"
-at_fn_check_prepare_trace "calc.at:681"
+$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:681"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:648"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85508,13 +93329,13 @@ $at_traceon; }
   $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:682' \
+#AT_STOP_226
+#AT_START_227
+at_fn_group_banner 227 'calc.at:649' \
   "Calculator %glr-parser %error-verbose %locations" "" 12
 at_xfail=no
 (
-  $as_echo "201. $at_setup_line: testing $at_desc ..."
+  $as_echo "227. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -85550,6 +93371,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -85569,10 +93391,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -85632,24 +93451,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -85723,18 +93533,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (yylloc).last_column = 1;
-      (yylloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -85820,9 +93619,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:682: 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:682"
+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>&-
@@ -85830,29 +93629,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:682"
+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: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"
+$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:682"
+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:682: \$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:682"
+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
@@ -85861,25 +93660,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:682: \$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:682"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85887,66 +93686,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:682: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+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: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
+$as_echo "$at_srcdir/calc.at:649: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:649"
+( $at_check_trace; $BISON_C_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:682"
+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:682: sed -ne '/./q;=;p;' calc.c"
-at_fn_check_prepare_trace "calc.at:682"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.c
+$as_echo "$at_srcdir/calc.at:649: \$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:649"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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: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
+$as_echo "$at_srcdir/calc.at:649: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:649"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -85965,28 +93775,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -85995,32 +93805,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86056,15 +93866,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86074,28 +93884,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86131,15 +93941,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86149,28 +93959,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86206,15 +94016,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86224,28 +94034,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86281,15 +94091,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86300,28 +94110,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86357,43 +94167,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+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:682:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86429,15 +94239,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86464,28 +94274,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86525,15 +94335,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86542,32 +94352,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86604,46 +94414,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86681,15 +94491,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86702,28 +94512,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:682:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:682"
+$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:682"
+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:682: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86761,15 +94571,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:682: cat stderr"
-at_fn_check_prepare_trace "calc.at:682"
+$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:682"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:649"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -86781,13 +94591,13 @@ $at_traceon; }
   $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:684' \
+#AT_STOP_227
+#AT_START_228
+at_fn_group_banner 228 'calc.at:651' \
   "Calculator %glr-parser %error-verbose %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "202. $at_setup_line: testing $at_desc ..."
+  $as_echo "228. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -86823,6 +94633,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -86842,10 +94653,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -86905,24 +94713,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -87009,18 +94808,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -87116,9 +94904,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:684: 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:684"
+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>&-
@@ -87126,29 +94914,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:684"
+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: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"
+$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:684"
+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:684: \$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:684"
+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
@@ -87157,25 +94945,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:684: \$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:684"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87183,96 +94971,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:684: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+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: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
+$as_echo "$at_srcdir/calc.at:651: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:651"
+( $at_check_trace; $BISON_C_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: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_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: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
+$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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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:684: sed -ne '/./q;=;p;' calc.h"
-at_fn_check_prepare_trace "calc.at:684"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+$as_echo "$at_srcdir/calc.at:651: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:651"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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: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
+$as_echo "$at_srcdir/calc.at:651: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:651"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -87291,28 +95088,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87321,32 +95118,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87382,15 +95179,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87400,28 +95197,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87457,15 +95254,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87475,28 +95272,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87532,15 +95329,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87550,28 +95347,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87607,15 +95404,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87626,28 +95423,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87683,43 +95480,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+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:684:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87755,15 +95552,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87790,28 +95587,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87851,15 +95648,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87868,32 +95665,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -87930,46 +95727,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88007,15 +95804,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88028,28 +95825,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:684:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:684"
+$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:684"
+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:684: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88087,15 +95884,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:684: cat stderr"
-at_fn_check_prepare_trace "calc.at:684"
+$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:684"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:651"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88107,13 +95904,13 @@ $at_traceon; }
   $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:686' \
+#AT_STOP_228
+#AT_START_229
+at_fn_group_banner 229 'calc.at:653' \
   "Calculator %glr-parser %debug" "                  " 12
 at_xfail=no
 (
-  $as_echo "203. $at_setup_line: testing $at_desc ..."
+  $as_echo "229. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -88149,6 +95946,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -88168,10 +95966,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void yyerror ( const char *msg);
 int yylex (void);
 }
 
@@ -88231,15 +96026,13 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 #include <ctype.h>
 
@@ -88299,15 +96092,7 @@ read_signed_integer (void)
 
 int yylex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -88391,9 +96176,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:686: 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:653: 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:686"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:653"
 ( $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>&-
@@ -88401,29 +96186,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:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: 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:653"
 ( $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:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:686: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:653: \$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:686"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:653"
 ( $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
@@ -88432,25 +96217,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:686: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:653: \$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:686"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:653"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88458,66 +96243,77 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:686: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:653"
 ( $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:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:653: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:653"
+( $at_check_trace; $BISON_C_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:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $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
+$as_echo "$at_srcdir/calc.at:653: \$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:653"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $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
+$as_echo "$at_srcdir/calc.at:653: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:653"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -88536,28 +96332,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88566,32 +96362,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88629,15 +96425,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88647,28 +96443,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88706,15 +96502,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88724,28 +96520,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88783,15 +96579,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88801,28 +96597,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88860,15 +96656,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88879,28 +96675,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -88938,43 +96734,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $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:686:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:653"
 ( $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:686"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89012,15 +96808,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89047,28 +96843,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89110,15 +96906,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89127,32 +96923,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89191,46 +96987,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89270,15 +97066,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89291,28 +97087,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:686:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:653"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:653: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89352,15 +97148,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:686: cat stderr"
-at_fn_check_prepare_trace "calc.at:686"
+$as_echo "$at_srcdir/calc.at:653: cat stderr"
+at_fn_check_prepare_trace "calc.at:653"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:686"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:653"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89372,13 +97168,13 @@ $at_traceon; }
   $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:687' \
+#AT_STOP_229
+#AT_START_230
+at_fn_group_banner 230 'calc.at:654' \
   "Calculator %glr-parser %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "204. $at_setup_line: testing $at_desc ..."
+  $as_echo "230. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -89414,6 +97210,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -89433,10 +97230,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -89496,24 +97290,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -89600,18 +97385,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -89707,9 +97481,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:687: 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:687"
+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>&-
@@ -89717,29 +97491,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:687"
+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: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"
+$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:687"
+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:687: \$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:687"
+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
@@ -89748,25 +97522,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:687: \$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:687"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89774,96 +97548,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:687: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+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: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
+$as_echo "$at_srcdir/calc.at:654: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:654"
+( $at_check_trace; $BISON_C_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: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_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: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
+$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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+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:687: sed -ne '/./q;=;p;' calc.h"
-at_fn_check_prepare_trace "calc.at:687"
-( $at_check_trace; sed -ne '/./q;=;p;' calc.h
+$as_echo "$at_srcdir/calc.at:654: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:654"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_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: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
+$as_echo "$at_srcdir/calc.at:654: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:654"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -89882,28 +97665,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89912,32 +97695,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89973,15 +97756,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -89991,28 +97774,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90048,15 +97831,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90066,28 +97849,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90123,15 +97906,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90141,28 +97924,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90198,15 +97981,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90217,28 +98000,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90274,43 +98057,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+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:687:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90346,15 +98129,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90381,28 +98164,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90442,15 +98225,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90459,32 +98242,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90521,46 +98304,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90598,15 +98381,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90619,28 +98402,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:687:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:687"
+$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:687"
+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:687: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90678,15 +98461,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:687: cat stderr"
-at_fn_check_prepare_trace "calc.at:687"
+$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:687"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:654"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -90698,13 +98481,13 @@ $at_traceon; }
   $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:688' \
+#AT_STOP_230
+#AT_START_231
+at_fn_group_banner 231 'calc.at:655' \
   "Calculator %glr-parser %error-verbose %debug %locations %defines %define api.prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "205. $at_setup_line: testing $at_desc ..."
+  $as_echo "231. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -90740,6 +98523,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -90759,10 +98543,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (
-
-                     const char *s
-                     );
+static void calcerror ( const char *msg);
 int calclex (void);
 }
 
@@ -90822,24 +98603,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror ( const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (calclloc).first_line, (calclloc).first_column);
-  if ((calclloc).first_line != (calclloc).last_line)
-    fprintf (stderr, "-%d.%d",
-             (calclloc).last_line,  (calclloc).last_column - 1);
-  else if ((calclloc).first_column != (calclloc).last_column - 1)
-    fprintf (stderr, "-%d",
-             (calclloc).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (calclloc));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -90926,18 +98698,7 @@ read_signed_integer (void)
 
 int calclex (void)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (calclloc).last_column = 1;
-      (calclloc).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -91033,9 +98794,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:688: 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:655: 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:688"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:655"
 ( $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>&-
@@ -91043,29 +98804,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:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: 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:655"
 ( $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:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:688: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:655: \$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:688"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:655"
 ( $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
@@ -91074,25 +98835,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:688: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:655: \$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:688"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:655"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91100,96 +98861,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:688: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:655"
 ( $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:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:655: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:655"
+( $at_check_trace; $BISON_C_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: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_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $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
+$as_echo "$at_srcdir/calc.at:655: \$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:655"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $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
+$as_echo "$at_srcdir/calc.at:655: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:655"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $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
+$as_echo "$at_srcdir/calc.at:655: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:655"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -91208,28 +98978,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91238,32 +99008,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91299,15 +99069,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91317,28 +99087,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91374,15 +99144,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91392,28 +99162,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91449,15 +99219,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91467,28 +99237,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91524,15 +99294,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91543,28 +99313,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91600,43 +99370,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $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:688:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:655"
 ( $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:688"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91672,15 +99442,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91707,28 +99477,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91768,15 +99538,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91785,32 +99555,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91847,46 +99617,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91924,15 +99694,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -91945,28 +99715,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:688:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:655"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:655: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92004,15 +99774,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:688: cat stderr"
-at_fn_check_prepare_trace "calc.at:688"
+$as_echo "$at_srcdir/calc.at:655: cat stderr"
+at_fn_check_prepare_trace "calc.at:655"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:655"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92024,13 +99794,13 @@ $at_traceon; }
   $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:690' \
+#AT_STOP_231
+#AT_START_232
+at_fn_group_banner 232 'calc.at:657' \
   "Calculator %glr-parser %define api.pure %error-verbose %debug %locations %defines %name-prefix \"calc\" %verbose %yacc" "" 12
 at_xfail=no
 (
-  $as_echo "206. $at_setup_line: testing $at_desc ..."
+  $as_echo "232. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -92066,6 +99836,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -92085,10 +99856,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (YYLTYPE *llocp,
-
-                     const char *s
-                     );
+static void calcerror (YYLTYPE const * const llocp,  const char *msg);
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -92148,24 +99916,15 @@ power (int base, int exponent)
   return res;
 }
 
-/* A C error reporting function.  */
-static void
-yyerror (YYLTYPE *llocp,
 
-         const char *s)
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void calcerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -92252,18 +100011,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -92359,9 +100107,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:690: 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:657: 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:690"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:657"
 ( $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>&-
@@ -92369,29 +100117,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:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:690: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:657: \$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:690"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:657"
 ( $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
@@ -92400,25 +100148,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:690: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:657: \$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:690"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:657"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92426,96 +100174,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:690: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:657"
 ( $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:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:657: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:657"
+( $at_check_trace; $BISON_C_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:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $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
+$as_echo "$at_srcdir/calc.at:657: \$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:657"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $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
+$as_echo "$at_srcdir/calc.at:657: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:657"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $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
+$as_echo "$at_srcdir/calc.at:657: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:657"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -92534,28 +100291,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92564,32 +100321,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92625,15 +100382,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92643,28 +100400,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92700,15 +100457,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92718,28 +100475,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92775,15 +100532,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92793,28 +100550,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92850,15 +100607,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92869,28 +100626,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92926,43 +100683,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $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:690:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:657"
 ( $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:690"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -92998,15 +100755,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93033,28 +100790,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93094,15 +100851,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93111,32 +100868,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93173,46 +100930,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93250,15 +101007,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93271,28 +101028,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:690:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:657"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93330,15 +101087,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:690: cat stderr"
-at_fn_check_prepare_trace "calc.at:690"
+$as_echo "$at_srcdir/calc.at:657: cat stderr"
+at_fn_check_prepare_trace "calc.at:657"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:690"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:657"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93350,13 +101107,13 @@ $at_traceon; }
   $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:692' \
+#AT_STOP_232
+#AT_START_233
+at_fn_group_banner 233 'calc.at:659' \
   "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 "207. $at_setup_line: testing $at_desc ..."
+  $as_echo "233. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -93392,6 +101149,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -93411,10 +101169,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (YYLTYPE *llocp,
-                     semantic_value *result, int *count,
-                     const char *s
-                     );
+static void calcerror (YYLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg);
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -93474,24 +101229,17 @@ power (int base, int exponent)
   return res;
 }
 
+
+#include <stdio.h>
 /* A C error reporting function.  */
-static void
-yyerror (YYLTYPE *llocp,
-         semantic_value *result, int *count,
-         const char *s)
-{
-(void) result; (void) count;
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+static
+void calcerror (YYLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg)
+{
+  YYUSE(result);
+  YYUSE(count);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -93578,18 +101326,7 @@ read_signed_integer (YYSTYPE *lvalp, YYLTYPE *llocp)
 
 int calclex (YYSTYPE *lvalp, YYLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -93685,9 +101422,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:692: 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:659: 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:692"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:659"
 ( $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>&-
@@ -93695,29 +101432,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:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:692: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:659: \$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:692"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:659"
 ( $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
@@ -93726,25 +101463,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:692: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:659: \$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:692"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:659"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93752,96 +101489,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:692: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:659"
 ( $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:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:659: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:659"
+( $at_check_trace; $BISON_C_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: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_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $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
+$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"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $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
+$as_echo "$at_srcdir/calc.at:659: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:659"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $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
+$as_echo "$at_srcdir/calc.at:659: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:659"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -93860,28 +101606,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93890,32 +101636,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93951,15 +101697,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -93969,28 +101715,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94026,15 +101772,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94044,28 +101790,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94101,15 +101847,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94119,28 +101865,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94176,15 +101922,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94195,28 +101941,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94252,43 +101998,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $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:692:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:659"
 ( $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:692"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94324,15 +102070,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94359,28 +102105,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94420,15 +102166,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94437,32 +102183,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94499,46 +102245,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94576,15 +102322,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94597,28 +102343,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:692:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:659"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94656,15 +102402,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:692: cat stderr"
-at_fn_check_prepare_trace "calc.at:692"
+$as_echo "$at_srcdir/calc.at:659: cat stderr"
+at_fn_check_prepare_trace "calc.at:659"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:692"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:659"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -94676,13 +102422,13 @@ $at_traceon; }
   $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:693' \
+#AT_STOP_233
+#AT_START_234
+at_fn_group_banner 234 'calc.at:660' \
   "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 "208. $at_setup_line: testing $at_desc ..."
+  $as_echo "234. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -94718,6 +102464,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { fprintf (yyoutput, "%d", $$); } <ival>;
 
 %code provides
 {
@@ -94737,10 +102484,7 @@ cat >calc.y <<'_ATEOF'
 FILE *input;
 static int power (int base, int exponent);
 
-static void yyerror (CALCLTYPE *llocp,
-                     semantic_value *result, int *count,
-                     const char *s
-                     );
+static void calcerror (CALCLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg);
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp);
 }
 
@@ -94800,24 +102544,17 @@ power (int base, int exponent)
   return res;
 }
 
+
+#include <stdio.h>
 /* A C error reporting function.  */
-static void
-yyerror (CALCLTYPE *llocp,
-         semantic_value *result, int *count,
-         const char *s)
-{
-(void) result; (void) count;
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+static
+void calcerror (CALCLTYPE const * const llocp, semantic_value *result, int *count,  const char *msg)
+{
+  YYUSE(result);
+  YYUSE(count);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
-  fprintf (stderr, "%s\n", s);
+  fprintf (stderr, "%s\n", msg);
 }
 _ATEOF
 
@@ -94904,18 +102641,7 @@ read_signed_integer (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 
 int calclex (CALCSTYPE *lvalp, CALCLTYPE *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last_column = 1;
-      (*llocp).last_line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -95011,9 +102737,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:693: 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:660: 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:693"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:660"
 ( $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>&-
@@ -95021,29 +102747,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:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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"
 ( $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:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:693: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:660: \$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:693"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:660"
 ( $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
@@ -95052,25 +102778,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:693: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:660: \$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:693"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:660"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95078,96 +102804,105 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:693: bison -o calc.c calc.y"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: bison -o calc.c calc.y"
+at_fn_check_prepare_trace "calc.at:660"
 ( $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:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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
+$as_echo "$at_srcdir/calc.at:660: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "calc.at:660"
+( $at_check_trace; $BISON_C_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: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_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $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
+$as_echo "$at_srcdir/calc.at:660: \$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:660"
+( $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
-at_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"
+echo stderr:; cat "$at_stderr"
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $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
+$as_echo "$at_srcdir/calc.at:660: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.c
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:660"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $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
+$as_echo "$at_srcdir/calc.at:660: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.h
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:660"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -95186,28 +102921,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95216,32 +102951,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95277,15 +103012,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95295,28 +103030,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95352,15 +103087,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95370,28 +103105,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95427,15 +103162,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95445,28 +103180,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95502,15 +103237,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95521,28 +103256,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95578,43 +103313,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $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:693:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:660"
 ( $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:693"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95650,15 +103385,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95685,28 +103420,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95746,15 +103481,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95763,32 +103498,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95825,46 +103560,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95902,15 +103637,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95923,28 +103658,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:693:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:660"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -95982,15 +103717,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:693: cat stderr"
-at_fn_check_prepare_trace "calc.at:693"
+$as_echo "$at_srcdir/calc.at:660: cat stderr"
+at_fn_check_prepare_trace "calc.at:660"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:693"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:660"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96002,13 +103737,13 @@ $at_traceon; }
   $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:703' \
+#AT_STOP_234
+#AT_START_235
+at_fn_group_banner 235 'calc.at:670' \
   "Calculator %skeleton \"lalr1.cc\" %defines %locations" "" 13
 at_xfail=no
 (
-  $as_echo "209. $at_setup_line: testing $at_desc ..."
+  $as_echo "235. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -96044,6 +103779,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -96068,15 +103804,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -96225,18 +103952,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -96343,9 +104059,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:703: 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:670: 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:703"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:670"
 ( $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>&-
@@ -96353,29 +104069,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:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$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.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:670"
 ( $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:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:703: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:670: \$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:703"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:670"
 ( $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
@@ -96384,25 +104100,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:703: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:670: \$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:703"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:670"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96410,110 +104126,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:703: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:670"
 ( $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:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:670"
 ( $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:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:670: \$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:670"
 ( $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:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $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; }
+$as_echo "$at_srcdir/calc.at:670: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:670"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $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; }
+$as_echo "$at_srcdir/calc.at:670: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:670"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -96532,28 +104244,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96562,32 +104274,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96624,15 +104336,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96642,28 +104354,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96700,15 +104412,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96718,28 +104430,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96776,15 +104488,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96794,28 +104506,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96852,15 +104564,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96871,28 +104583,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -96929,43 +104641,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $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:703:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:670"
 ( $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:703"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97002,15 +104714,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97037,28 +104749,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97099,15 +104811,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97116,32 +104828,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97179,46 +104891,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97257,15 +104969,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97278,28 +104990,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:703:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:670"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$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"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97338,15 +105050,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:703: cat stderr"
-at_fn_check_prepare_trace "calc.at:703"
+$as_echo "$at_srcdir/calc.at:670: cat stderr"
+at_fn_check_prepare_trace "calc.at:670"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:703"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:670"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97358,13 +105070,13 @@ $at_traceon; }
   $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:712' \
+#AT_STOP_235
+#AT_START_236
+at_fn_group_banner 236 'calc.at:679' \
   "Calculator %language \"C++\" %defines %locations " "" 13
 at_xfail=no
 (
-  $as_echo "210. $at_setup_line: testing $at_desc ..."
+  $as_echo "236. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -97400,6 +105112,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -97424,15 +105137,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -97581,18 +105285,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -97699,9 +105392,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:712: 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.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:712"
+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.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -97709,29 +105402,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:712"
+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: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"
+$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.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: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.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:712"
+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:712: \$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:712"
+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
@@ -97740,25 +105433,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:712: \$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:712"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97766,110 +105459,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:712: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:712"
+$as_echo "$at_srcdir/calc.at:679: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:679"
 ( $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:712"
+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:712: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:712"
+$as_echo "$at_srcdir/calc.at:679: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:679"
 ( $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:712"
+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: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"
+$as_echo "$at_srcdir/calc.at:679: \$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:679"
 ( $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:712"
+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: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; }
+$as_echo "$at_srcdir/calc.at:679: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:679"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:679: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:679"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_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'
 1 + 2 * 3 = 7
@@ -97888,28 +105577,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97918,32 +105607,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97980,15 +105669,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -97998,28 +105687,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98056,15 +105745,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98074,28 +105763,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98132,15 +105821,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98150,28 +105839,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98208,15 +105897,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98227,28 +105916,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98285,43 +105974,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+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:712:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98358,15 +106047,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98393,28 +106082,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98455,15 +106144,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98472,32 +106161,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98535,46 +106224,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98613,15 +106302,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98634,28 +106323,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:712:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:712"
+$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:712"
+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:712: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98694,15 +106383,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:712: cat stderr"
-at_fn_check_prepare_trace "calc.at:712"
+$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:712"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:679"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -98714,13 +106403,13 @@ $at_traceon; }
   $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:713' \
-  "Calculator %language \"C++\" %defines %locations %define location_type Span" "" 13
+#AT_STOP_236
+#AT_START_237
+at_fn_group_banner 237 'calc.at:680' \
+  "Calculator %language \"C++\" %defines %locations %define api.location.type Span" "" 13
 at_xfail=no
 (
-  $as_echo "211. $at_setup_line: testing $at_desc ..."
+  $as_echo "237. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -98742,7 +106431,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%language "C++" %defines %locations %define location_type Span
+%language "C++" %defines %locations %define api.location.type Span
 %define global_tokens_and_yystype
 %code requires
 {
@@ -98783,6 +106472,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -98807,6 +106497,11 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
+%initial-action
+{
+  @$.first.l = @$.first.c = 1;
+  @$.last = @$.first;
+}
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -98966,18 +106661,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last.c = 1;
-      (*llocp).last.l = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -99084,9 +106768,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:713: 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:680: 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:713"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:680"
 ( $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>&-
@@ -99094,29 +106778,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:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: 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:680"
 ( $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:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:713: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:680: \$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:713"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:680"
 ( $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
@@ -99125,25 +106809,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:713: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:680: \$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:713"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:680"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99151,110 +106835,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:713: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:680"
 ( $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:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:680"
 ( $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:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: \$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:680"
 ( $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:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $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; }
+$as_echo "$at_srcdir/calc.at:680: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:680"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $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; }
+$as_echo "$at_srcdir/calc.at:680: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:680"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -99273,28 +106953,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99303,32 +106983,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99365,15 +107045,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99383,28 +107063,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99441,15 +107121,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99459,28 +107139,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99517,15 +107197,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99535,28 +107215,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99593,15 +107273,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99612,28 +107292,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99670,43 +107350,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $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:713:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:680"
 ( $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:713"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99743,15 +107423,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99778,28 +107458,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99840,15 +107520,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99857,32 +107537,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99920,46 +107600,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -99998,15 +107678,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100019,28 +107699,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:713:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:680"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:680: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100079,15 +107759,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:713: cat stderr"
-at_fn_check_prepare_trace "calc.at:713"
+$as_echo "$at_srcdir/calc.at:680: cat stderr"
+at_fn_check_prepare_trace "calc.at:680"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:680"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100099,13 +107779,13 @@ $at_traceon; }
   $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:714' \
+#AT_STOP_237
+#AT_START_238
+at_fn_group_banner 238 'calc.at:681' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "212. $at_setup_line: testing $at_desc ..."
+  $as_echo "238. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -100141,6 +107821,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -100165,15 +107846,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -100322,18 +107994,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -100440,9 +108101,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:714: 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.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:714"
+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.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -100450,29 +108111,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:714"
+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: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"
+$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.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: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.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:714"
+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:714: \$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:714"
+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
@@ -100481,25 +108142,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:714: \$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:714"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100507,110 +108168,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:714: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:714"
+$as_echo "$at_srcdir/calc.at:681: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:681"
 ( $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:714"
+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:714: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:714"
+$as_echo "$at_srcdir/calc.at:681: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:681"
 ( $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:714"
+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: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"
+$as_echo "$at_srcdir/calc.at:681: \$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:681"
 ( $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:714"
+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: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; }
+$as_echo "$at_srcdir/calc.at:681: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:681"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:681: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:681"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_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
@@ -100629,28 +108286,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100659,32 +108316,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100720,15 +108377,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100738,28 +108395,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100795,15 +108452,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100813,28 +108470,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100870,15 +108527,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100888,28 +108545,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100945,15 +108602,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -100964,28 +108621,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101021,43 +108678,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+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:714:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101093,15 +108750,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101128,28 +108785,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101189,15 +108846,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101206,32 +108863,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101268,46 +108925,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101345,15 +109002,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101366,28 +109023,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:714:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:714"
+$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:714"
+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:714: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101425,15 +109082,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:714: cat stderr"
-at_fn_check_prepare_trace "calc.at:714"
+$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:714"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:681"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101445,13 +109102,13 @@ $at_traceon; }
   $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:715' \
+#AT_STOP_238
+#AT_START_239
+at_fn_group_banner 239 'calc.at:682' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "213. $at_setup_line: testing $at_desc ..."
+  $as_echo "239. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -101487,6 +109144,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -101511,15 +109169,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -101668,18 +109317,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -101786,9 +109424,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:715: 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.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:715"
+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.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -101796,29 +109434,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:715"
+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: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"
+$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.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: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.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:715"
+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:715: \$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:715"
+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
@@ -101827,25 +109465,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:715: \$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:715"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -101853,110 +109491,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:715: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:715"
+$as_echo "$at_srcdir/calc.at:682: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:682"
 ( $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:715"
+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:715: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:715"
+$as_echo "$at_srcdir/calc.at:682: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:682"
 ( $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:715"
+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: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"
+$as_echo "$at_srcdir/calc.at:682: \$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:682"
 ( $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:715"
+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: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; }
+$as_echo "$at_srcdir/calc.at:682: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:682"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:682: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:682"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_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'
 1 + 2 * 3 = 7
@@ -101975,28 +109609,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102005,32 +109639,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102066,15 +109700,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102084,28 +109718,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102141,15 +109775,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102159,28 +109793,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102216,15 +109850,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102234,28 +109868,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102291,15 +109925,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102310,28 +109944,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102367,43 +110001,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+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:715:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102439,15 +110073,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102474,28 +110108,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102535,15 +110169,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102552,32 +110186,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102614,46 +110248,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102691,15 +110325,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102712,28 +110346,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:715:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:715"
+$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:715"
+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:715: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102771,15 +110405,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:715: cat stderr"
-at_fn_check_prepare_trace "calc.at:715"
+$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:715"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:682"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -102791,13 +110425,13 @@ $at_traceon; }
   $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:716' \
+#AT_STOP_239
+#AT_START_240
+at_fn_group_banner 240 'calc.at:683' \
   "Calculator %language \"C++\" %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "214. $at_setup_line: testing $at_desc ..."
+  $as_echo "240. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -102833,6 +110467,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -102857,15 +110492,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -103014,18 +110640,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -103132,9 +110747,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:716: 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:683: 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:716"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:683"
 ( $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>&-
@@ -103142,29 +110757,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:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: 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:683"
 ( $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:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:716: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:683: \$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:716"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:683"
 ( $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
@@ -103173,25 +110788,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:716: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:683: \$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:716"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:683"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103199,110 +110814,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:716: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:683"
 ( $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:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:683"
 ( $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:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: \$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:683"
 ( $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:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $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; }
+$as_echo "$at_srcdir/calc.at:683: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:683"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $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; }
+$as_echo "$at_srcdir/calc.at:683: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:683"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -103321,28 +110932,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103351,32 +110962,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103412,15 +111023,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103430,28 +111041,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103487,15 +111098,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103505,28 +111116,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103562,15 +111173,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103580,28 +111191,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103637,15 +111248,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103656,28 +111267,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103713,43 +111324,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $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:716:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:683"
 ( $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:716"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103785,15 +111396,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103820,28 +111431,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103881,15 +111492,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103898,32 +111509,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -103960,46 +111571,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104037,15 +111648,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104058,28 +111669,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:716:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:683"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:683: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104117,15 +111728,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:716: cat stderr"
-at_fn_check_prepare_trace "calc.at:716"
+$as_echo "$at_srcdir/calc.at:683: cat stderr"
+at_fn_check_prepare_trace "calc.at:683"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:683"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104137,13 +111748,13 @@ $at_traceon; }
   $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:718' \
+#AT_STOP_240
+#AT_START_241
+at_fn_group_banner 241 'calc.at:685' \
   "Calculator %language \"C++\" %defines %locations %pure-parser %error-verbose %debug %define api.prefix \"calc\" %verbose %yacc" "" 13
 at_xfail=no
 (
-  $as_echo "215. $at_setup_line: testing $at_desc ..."
+  $as_echo "241. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -104179,6 +111790,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -104203,15 +111815,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -104360,18 +111963,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -104478,9 +112070,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:685: 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:685"
 ( $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>&-
@@ -104488,29 +112080,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:685"
 $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:685: 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:685"
 ( $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:685"
 $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:685: \$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:685"
 ( $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
@@ -104519,25 +112111,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:718: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:685: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:685"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104545,110 +112137,106 @@ $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:685: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:685"
 ( $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:685"
 $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:685: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:685"
 ( $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:685"
 $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:685: \$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:685"
 ( $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:685"
 $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; }
+$as_echo "$at_srcdir/calc.at:685: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:685"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:685"
 $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; }
+$as_echo "$at_srcdir/calc.at:685: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:685"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -104667,28 +112255,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104697,32 +112285,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104758,15 +112346,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104776,28 +112364,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104833,15 +112421,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104851,28 +112439,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104908,15 +112496,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104926,28 +112514,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -104983,15 +112571,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105002,28 +112590,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105059,43 +112647,43 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $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:685:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:685"
 ( $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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105131,15 +112719,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105166,28 +112754,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105227,15 +112815,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105244,32 +112832,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105306,46 +112894,46 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105383,15 +112971,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105404,28 +112992,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:685:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:685"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $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:685: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105463,15 +113051,15 @@ _ATEOF
 
 # 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:685: cat stderr"
+at_fn_check_prepare_trace "calc.at:685"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:685"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105483,13 +113071,13 @@ $at_traceon; }
   $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:720' \
+#AT_STOP_241
+#AT_START_242
+at_fn_group_banner 242 'calc.at:687' \
   "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 "216. $at_setup_line: testing $at_desc ..."
+  $as_echo "242. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -105525,6 +113113,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -105549,15 +113138,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -105706,18 +113286,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -105824,9 +113393,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:720: 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.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:720"
+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.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -105834,29 +113403,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:720"
+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: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"
+$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.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: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.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:720"
+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:720: \$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:720"
+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
@@ -105865,25 +113434,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:720: \$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:720"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -105891,110 +113460,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:720: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:720"
+$as_echo "$at_srcdir/calc.at:687: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:687"
 ( $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:720"
+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:720: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:720"
+$as_echo "$at_srcdir/calc.at:687: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:687"
 ( $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:720"
+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: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"
+$as_echo "$at_srcdir/calc.at:687: \$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:687"
 ( $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:720"
+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: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; }
+$as_echo "$at_srcdir/calc.at:687: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:687"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:687: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:687"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -106013,28 +113578,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106043,32 +113608,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106104,15 +113669,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106122,28 +113687,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106179,15 +113744,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106197,28 +113762,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106254,15 +113819,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106272,28 +113837,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106329,15 +113894,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106348,28 +113913,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106405,43 +113970,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+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:720:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106477,15 +114042,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106512,28 +114077,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106573,15 +114138,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106590,32 +114155,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106652,46 +114217,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106729,15 +114294,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106750,28 +114315,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:720:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:720"
+$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:720"
+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:720: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106809,15 +114374,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:720: cat stderr"
-at_fn_check_prepare_trace "calc.at:720"
+$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:720"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:687"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -106829,13 +114394,13 @@ $at_traceon; }
   $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:721' \
+#AT_STOP_242
+#AT_START_243
+at_fn_group_banner 243 'calc.at:688' \
   "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 "217. $at_setup_line: testing $at_desc ..."
+  $as_echo "243. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -106871,6 +114436,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -106895,15 +114461,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -107052,18 +114609,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -107170,9 +114716,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:721: 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.cc calc.y"
-at_fn_check_prepare_notrace 'an embedded newline' "calc.at:721"
+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.cc calc.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -107180,29 +114726,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:721"
+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: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"
+$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.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: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.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:721"
+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:721: \$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:721"
+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
@@ -107211,25 +114757,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:721: \$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:721"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107237,110 +114783,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:721: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:721"
+$as_echo "$at_srcdir/calc.at:688: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:688"
 ( $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:721"
+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:721: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:721"
+$as_echo "$at_srcdir/calc.at:688: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:688"
 ( $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:721"
+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: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"
+$as_echo "$at_srcdir/calc.at:688: \$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:688"
 ( $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:721"
+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: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; }
+$as_echo "$at_srcdir/calc.at:688: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:688"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:688: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:688"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -107359,28 +114901,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107389,32 +114931,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107450,15 +114992,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107468,28 +115010,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107525,15 +115067,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107543,28 +115085,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107600,15 +115142,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107618,28 +115160,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107675,15 +115217,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107694,28 +115236,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107751,43 +115293,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+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:721:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107823,15 +115365,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107858,28 +115400,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107919,15 +115461,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107936,32 +115478,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -107998,46 +115540,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108075,15 +115617,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108096,28 +115638,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:721:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:721"
+$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:721"
+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:721: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108155,15 +115697,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:721: cat stderr"
-at_fn_check_prepare_trace "calc.at:721"
+$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:721"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108175,13 +115717,13 @@ $at_traceon; }
   $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:732' \
+#AT_STOP_243
+#AT_START_244
+at_fn_group_banner 244 'calc.at:699' \
   "Calculator %skeleton \"glr.cc\" %defines %locations" "" 14
 at_xfail=no
 (
-  $as_echo "218. $at_setup_line: testing $at_desc ..."
+  $as_echo "244. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -108217,6 +115759,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -108241,15 +115784,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -108398,18 +115932,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -108516,9 +116039,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:699: 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:699"
 ( $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>&-
@@ -108526,29 +116049,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:699"
 $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: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"
 ( $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:699"
 $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:699: \$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:699"
 ( $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
@@ -108557,25 +116080,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:732: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:699: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:699"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108583,110 +116106,106 @@ $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:699: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:699"
 ( $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:699"
 $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:699: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:699"
 ( $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:699"
 $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: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"
 ( $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:699"
 $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; }
+$as_echo "$at_srcdir/calc.at:699: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:699"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
 $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; }
+$as_echo "$at_srcdir/calc.at:699: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:699"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -108705,28 +116224,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108735,32 +116254,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108797,15 +116316,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108815,28 +116334,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108873,15 +116392,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108891,28 +116410,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108949,15 +116468,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -108967,28 +116486,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109025,15 +116544,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109044,28 +116563,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109102,43 +116621,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $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:699:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:699"
 ( $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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109175,15 +116694,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109210,28 +116729,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109272,15 +116791,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109289,32 +116808,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109352,46 +116871,46 @@ 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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109430,15 +116949,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109451,28 +116970,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:699:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:699"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $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:699: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo 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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109511,15 +117030,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:699: cat stderr"
+at_fn_check_prepare_trace "calc.at:699"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_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:699"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109531,13 +117050,13 @@ $at_traceon; }
   $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:741' \
+#AT_STOP_244
+#AT_START_245
+at_fn_group_banner 245 'calc.at:708' \
   "Calculator %language \"C++\" %glr-parser %defines %locations " "" 14
 at_xfail=no
 (
-  $as_echo "219. $at_setup_line: testing $at_desc ..."
+  $as_echo "245. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -109573,6 +117092,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -109597,15 +117117,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -109754,18 +117265,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -109872,9 +117372,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:741: 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:708: 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:741"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:708"
 ( $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>&-
@@ -109882,29 +117382,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:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: 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:708"
 ( $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:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:741: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:708: \$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:741"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:708"
 ( $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
@@ -109913,25 +117413,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:741: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:708: \$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:741"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:708"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -109939,110 +117439,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:741: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:708"
 ( $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:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:708"
 ( $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:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: \$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:708"
 ( $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:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $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; }
+$as_echo "$at_srcdir/calc.at:708: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:708"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $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; }
+$as_echo "$at_srcdir/calc.at:708: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:708"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -110061,28 +117557,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110091,32 +117587,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110153,15 +117649,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110171,28 +117667,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110229,15 +117725,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110247,28 +117743,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110305,15 +117801,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110323,28 +117819,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110381,15 +117877,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110400,28 +117896,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110458,43 +117954,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $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:741:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:708"
 ( $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:741"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110531,15 +118027,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110566,28 +118062,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110628,15 +118124,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110645,32 +118141,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110708,46 +118204,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110786,15 +118282,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110807,28 +118303,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:741:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:708"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:708: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110867,15 +118363,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:741: cat stderr"
-at_fn_check_prepare_trace "calc.at:741"
+$as_echo "$at_srcdir/calc.at:708: cat stderr"
+at_fn_check_prepare_trace "calc.at:708"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:741"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:708"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -110887,13 +118383,13 @@ $at_traceon; }
   $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:742' \
-  "Calculator %language \"C++\" %glr-parser %defines %locations %define location_type Span" "" 14
+#AT_STOP_245
+#AT_START_246
+at_fn_group_banner 246 'calc.at:709' \
+  "Calculator %language \"C++\" %glr-parser %defines %locations %define api.location.type Span" "" 14
 at_xfail=no
 (
-  $as_echo "220. $at_setup_line: testing $at_desc ..."
+  $as_echo "246. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -110915,7 +118411,7 @@ cat >calc.y <<'_ATEOF'
 }
 
 /* Infix notation calculator--calc */
-%language "C++" %glr-parser %defines %locations %define location_type Span
+%language "C++" %glr-parser %defines %locations %define api.location.type Span
 %define global_tokens_and_yystype
 %code requires
 {
@@ -110956,6 +118452,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -110980,6 +118477,11 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
+%initial-action
+{
+  @$.first.l = @$.first.c = 1;
+  @$.last = @$.first;
+}
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -111139,18 +118641,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).last.c = 1;
-      (*llocp).last.l = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -111257,9 +118748,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:742: 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:709: 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:742"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:709"
 ( $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>&-
@@ -111267,29 +118758,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:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: 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:709"
 ( $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:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:742: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:709: \$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:742"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:709"
 ( $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
@@ -111298,25 +118789,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:742: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:709: \$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:742"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:709"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111324,110 +118815,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:742: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:709"
 ( $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:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:709"
 ( $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:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: \$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:709"
 ( $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:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $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; }
+$as_echo "$at_srcdir/calc.at:709: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:709"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $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; }
+$as_echo "$at_srcdir/calc.at:709: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:709"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -111446,28 +118933,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111476,32 +118963,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111538,15 +119025,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111556,28 +119043,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111614,15 +119101,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111632,28 +119119,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111690,15 +119177,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111708,28 +119195,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111766,15 +119253,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111785,28 +119272,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111843,43 +119330,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $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:742:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:709"
 ( $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:742"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111916,15 +119403,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -111951,28 +119438,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112013,15 +119500,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112030,32 +119517,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112093,46 +119580,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112171,15 +119658,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112192,28 +119679,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:742:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:709"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:709: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112252,15 +119739,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:742: cat stderr"
-at_fn_check_prepare_trace "calc.at:742"
+$as_echo "$at_srcdir/calc.at:709: cat stderr"
+at_fn_check_prepare_trace "calc.at:709"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:742"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:709"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112272,13 +119759,13 @@ $at_traceon; }
   $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:743' \
+#AT_STOP_246
+#AT_START_247
+at_fn_group_banner 247 'calc.at:710' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "221. $at_setup_line: testing $at_desc ..."
+  $as_echo "247. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -112314,6 +119801,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -112338,15 +119826,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -112495,18 +119974,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -112613,9 +120081,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:743: 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:710: 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:743"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:710"
 ( $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>&-
@@ -112623,29 +120091,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:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: 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:710"
 ( $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:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:743: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:710: \$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:743"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:710"
 ( $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
@@ -112654,25 +120122,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:743: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:710: \$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:743"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:710"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112680,110 +120148,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:743: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:710"
 ( $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:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:710"
 ( $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:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: \$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:710"
 ( $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:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $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; }
+$as_echo "$at_srcdir/calc.at:710: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:710"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $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; }
+$as_echo "$at_srcdir/calc.at:710: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:710"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -112802,28 +120266,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112832,32 +120296,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112893,15 +120357,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112911,28 +120375,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112968,15 +120432,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -112986,28 +120450,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113043,15 +120507,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113061,28 +120525,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113118,15 +120582,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113137,28 +120601,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113194,43 +120658,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $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:743:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:710"
 ( $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:743"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113266,15 +120730,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113301,28 +120765,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113362,15 +120826,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113379,32 +120843,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113441,46 +120905,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113518,15 +120982,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113539,28 +121003,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:743:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:710"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:710: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113598,15 +121062,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:743: cat stderr"
-at_fn_check_prepare_trace "calc.at:743"
+$as_echo "$at_srcdir/calc.at:710: cat stderr"
+at_fn_check_prepare_trace "calc.at:710"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:743"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:710"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -113618,13 +121082,13 @@ $at_traceon; }
   $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 'calc.at:744' \
+#AT_STOP_247
+#AT_START_248
+at_fn_group_banner 248 'calc.at:711' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %define api.prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "222. $at_setup_line: testing $at_desc ..."
+  $as_echo "248. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -113660,6 +121124,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -113684,15 +121149,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -113841,18 +121297,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -113959,9 +121404,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:744: 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:711: 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:744"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:711"
 ( $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>&-
@@ -113969,29 +121414,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:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: 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:711"
 ( $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:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:744: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:711: \$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:744"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:711"
 ( $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
@@ -114000,25 +121445,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:744: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:711: \$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:744"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:711"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114026,110 +121471,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:744: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:711"
 ( $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:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:711"
 ( $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:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: \$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:711"
 ( $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:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $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; }
+$as_echo "$at_srcdir/calc.at:711: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:711"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $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; }
+$as_echo "$at_srcdir/calc.at:711: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:711"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -114148,28 +121589,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114178,32 +121619,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114239,15 +121680,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114257,28 +121698,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114314,15 +121755,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114332,28 +121773,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114389,15 +121830,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114407,28 +121848,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114464,15 +121905,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114483,28 +121924,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114540,43 +121981,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $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:744:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:711"
 ( $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:744"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114612,15 +122053,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114647,28 +122088,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114708,15 +122149,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114725,32 +122166,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114787,46 +122228,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114864,15 +122305,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114885,28 +122326,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:744:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:711"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:711: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114944,15 +122385,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:744: cat stderr"
-at_fn_check_prepare_trace "calc.at:744"
+$as_echo "$at_srcdir/calc.at:711: cat stderr"
+at_fn_check_prepare_trace "calc.at:711"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:744"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:711"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -114964,13 +122405,13 @@ $at_traceon; }
   $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 'calc.at:746' \
+#AT_STOP_248
+#AT_START_249
+at_fn_group_banner 249 'calc.at:713' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %debug" "" 14
 at_xfail=no
 (
-  $as_echo "223. $at_setup_line: testing $at_desc ..."
+  $as_echo "249. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -115006,6 +122447,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -115030,15 +122472,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -115187,18 +122620,7 @@ read_signed_integer (yy::parser::semantic_type *lvalp, yy::parser::location_type
 
 int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -115305,9 +122727,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:746: 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:746"
+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>&-
@@ -115315,29 +122737,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:746"
+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: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"
+$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:746"
+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:746: \$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:746"
+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
@@ -115346,25 +122768,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:746: \$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:746"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115372,110 +122794,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:746: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+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:746: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:746"
+$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:746"
+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: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"
+$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:746"
+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: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; }
+$as_echo "$at_srcdir/calc.at:713: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:713"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:713: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:713"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -115494,28 +122912,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115524,32 +122942,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115586,15 +123004,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115604,28 +123022,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115662,15 +123080,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115680,28 +123098,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115738,15 +123156,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115756,28 +123174,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115814,15 +123232,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115833,28 +123251,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115891,43 +123309,43 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+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:746:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115964,15 +123382,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -115999,28 +123417,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116061,15 +123479,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116078,32 +123496,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116141,46 +123559,46 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116219,15 +123637,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116240,28 +123658,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:746:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:746"
+$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:746"
+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:746: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116300,15 +123718,15 @@ sed 's/syntax error, .*$/syntax error/' expout >at-expout
 mv at-expout expout
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:746: cat stderr"
-at_fn_check_prepare_trace "calc.at:746"
+$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:746"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:713"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116320,13 +123738,13 @@ $at_traceon; }
   $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 'calc.at:747' \
+#AT_STOP_249
+#AT_START_250
+at_fn_group_banner 250 'calc.at:714' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "224. $at_setup_line: testing $at_desc ..."
+  $as_echo "250. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -116362,6 +123780,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -116386,15 +123805,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -116543,18 +123953,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -116661,9 +124060,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:747: 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:747"
+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>&-
@@ -116671,29 +124070,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:747"
+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: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"
+$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:747"
+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:747: \$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:747"
+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
@@ -116702,25 +124101,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:747: \$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:747"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116728,110 +124127,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:747: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+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:747: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:747"
+$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:747"
+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: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"
+$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:747"
+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: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; }
+$as_echo "$at_srcdir/calc.at:714: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:714"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:714: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:714"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -116850,28 +124245,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116880,32 +124275,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116941,15 +124336,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -116959,28 +124354,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117016,15 +124411,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117034,28 +124429,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117091,15 +124486,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117109,28 +124504,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117166,15 +124561,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117185,28 +124580,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117242,43 +124637,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+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:747:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117314,15 +124709,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117349,28 +124744,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117410,15 +124805,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117427,32 +124822,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117489,46 +124884,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117566,15 +124961,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117587,28 +124982,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:747:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:747"
+$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:747"
+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:747: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117646,15 +125041,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:747: cat stderr"
-at_fn_check_prepare_trace "calc.at:747"
+$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:747"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:714"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -117666,13 +125061,13 @@ $at_traceon; }
   $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 'calc.at:749' \
+#AT_STOP_250
+#AT_START_251
+at_fn_group_banner 251 'calc.at:716' \
   "Calculator %language \"C++\" %glr-parser %defines %locations %pure-parser %error-verbose %debug %name-prefix \"calc\" %verbose %yacc" "" 14
 at_xfail=no
 (
-  $as_echo "225. $at_setup_line: testing $at_desc ..."
+  $as_echo "251. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -117708,6 +125103,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -117732,15 +125128,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -117889,18 +125276,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -118007,9 +125383,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:749: 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:749"
+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>&-
@@ -118017,29 +125393,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:749"
+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: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"
+$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:749"
+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:749: \$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:749"
+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
@@ -118048,25 +125424,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:749: \$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:749"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118074,110 +125450,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:749: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+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:749: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:749"
+$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:749"
+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: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"
+$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:749"
+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: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; }
+$as_echo "$at_srcdir/calc.at:716: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:716"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:716: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:716"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -118196,28 +125568,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118226,32 +125598,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118287,15 +125659,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118305,28 +125677,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118362,15 +125734,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118380,28 +125752,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118437,15 +125809,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118455,28 +125827,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118512,15 +125884,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118531,28 +125903,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118588,43 +125960,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+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:749:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118660,15 +126032,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118695,28 +126067,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118756,15 +126128,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118773,32 +126145,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118835,46 +126207,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118912,15 +126284,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118933,28 +126305,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:749:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:749"
+$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:749"
+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:749: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -118992,15 +126364,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:749: cat stderr"
-at_fn_check_prepare_trace "calc.at:749"
+$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:749"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:716"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119012,13 +126384,13 @@ $at_traceon; }
   $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 'calc.at:751' \
+#AT_STOP_251
+#AT_START_252
+at_fn_group_banner 252 'calc.at:718' \
   "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 "226. $at_setup_line: testing $at_desc ..."
+  $as_echo "252. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -119054,6 +126426,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -119078,15 +126451,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -119235,18 +126599,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -119353,9 +126706,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:751: 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:751"
+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>&-
@@ -119363,29 +126716,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:751"
+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: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"
+$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:751"
+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:751: \$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:751"
+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
@@ -119394,25 +126747,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+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
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:751: \$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:751"
+             xml-tests/test.xml | sort"
+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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119420,110 +126773,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:751: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+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:751: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:751"
+$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:751"
+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: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"
+$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:751"
+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: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; }
+$as_echo "$at_srcdir/calc.at:718: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:718"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_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: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; }
+$as_echo "$at_srcdir/calc.at:718: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:718"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -119542,28 +126891,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119572,32 +126921,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119633,15 +126982,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119651,28 +127000,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119708,15 +127057,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119726,28 +127075,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119783,15 +127132,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119801,28 +127150,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119858,15 +127207,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119877,28 +127226,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -119934,43 +127283,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+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:751:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120006,15 +127355,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120041,28 +127390,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120102,15 +127451,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120119,32 +127468,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120181,46 +127530,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120258,15 +127607,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120279,28 +127628,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:751:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:751"
+$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:751"
+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:751: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120338,15 +127687,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:751: cat stderr"
-at_fn_check_prepare_trace "calc.at:751"
+$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:751"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:718"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120358,13 +127707,13 @@ $at_traceon; }
   $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 'calc.at:752' \
+#AT_STOP_252
+#AT_START_253
+at_fn_group_banner 253 'calc.at:719' \
   "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 "227. $at_setup_line: testing $at_desc ..."
+  $as_echo "253. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -120400,6 +127749,7 @@ cat >calc.y <<'_ATEOF'
 {
   semantic_value ival;
 };
+%printer { yyoutput << $$; } <ival>;
 
 %code provides
 {
@@ -120424,15 +127774,6 @@ int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *ll
 }
 
 
-/* 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 ();
-}
-
 
 /* Bison Declarations */
 %token CALC_EOF 0 "end of input"
@@ -120581,18 +127922,7 @@ read_signed_integer (calc::parser::semantic_type *lvalp, calc::parser::location_
 
 int calclex (calc::parser::semantic_type *lvalp, calc::parser::location_type *llocp)
 {
-  static int init = 1;
   int c;
-
-  if (init)
-    {
-      init = 0;
-
-      (*llocp).end.column = 1;
-      (*llocp).end.line = 1;
-
-    }
-
   /* Skip current token, then white spaces.  */
   do
     {
@@ -120699,9 +128029,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:752: 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:719: 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:752"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:719"
 ( $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>&-
@@ -120709,29 +128039,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:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: 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:719"
 ( $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:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/calc.at:752: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:719: \$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:752"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:719"
 ( $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
@@ -120740,25 +128070,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/calc.at:752: \$XSLTPROC \\
+$as_echo "$at_srcdir/calc.at:719: \$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:752"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "calc.at:719"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120766,110 +128096,106 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/calc.at:752: bison -o calc.cc calc.y"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: bison -o calc.cc calc.y"
+at_fn_check_prepare_trace "calc.at:719"
 ( $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:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "calc.at:719"
 ( $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:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: \$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:719"
 ( $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:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $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; }
+$as_echo "$at_srcdir/calc.at:719: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.cc
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:719"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.cc
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $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; }
+$as_echo "$at_srcdir/calc.at:719: \$PERL -ne '
+  chomp;
+  print \"\$.: {\$_}\\n\"
+    if (# No starting/ending empty lines.
+        (eof || \$. == 1) && /^\\s*\$/
+        # No trailing space.  FIXME: not ready for \"maint\".
+        # || /\\s\$/
+        )' calc.hh
+"
+at_fn_check_prepare_notrace 'an embedded newline' "calc.at:719"
+( $at_check_trace; $PERL -ne '
+  chomp;
+  print "$.: {$_}\n"
+    if (# No starting/ending empty lines.
+        (eof || $. == 1) && /^\s*$/
+        # No trailing space.  FIXME: not ready for "maint".
+        # || /\s$/
+        )' calc.hh
 
-# 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_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
-
 # Test the priorities.
 cat >input <<'_ATEOF'
 1 + 2 * 3 = 7
@@ -120888,28 +128214,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120918,32 +128244,32 @@ $at_traceon; }
 
 # Some syntax errors.
 cat >input <<'_ATEOF'
-0 0
+1 2
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120979,15 +128305,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -120997,28 +128323,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121054,15 +128380,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121072,28 +128398,28 @@ error
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121129,15 +128455,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121147,28 +128473,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121204,15 +128530,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121223,28 +128549,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121280,43 +128606,43 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $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:752:  \$PREPARSER ./calc /dev/null"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc /dev/null"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc /dev/null" "calc.at:719"
 ( $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:752"
+at_fn_check_status 1 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121352,15 +128678,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121387,28 +128713,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121448,15 +128774,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121465,32 +128791,32 @@ $at_traceon; }
 # The same, but this time exercising explicitly triggered syntax errors.
 # POSIX says the lookahead causing the error should not be discarded.
 cat >input <<'_ATEOF'
-(!) + (0 0) = 1
+(!) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121527,46 +128853,46 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 cat >input <<'_ATEOF'
-(- *) + (0 0) = 1
+(- *) + (1 2) = 1
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121604,15 +128930,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121625,28 +128951,28 @@ cat >input <<'_ATEOF'
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/calc.at:752:  \$PREPARSER ./calc input"
-at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719:  \$PREPARSER ./calc input"
+at_fn_check_prepare_dynamic " $PREPARSER ./calc input" "calc.at:719"
 ( $at_check_trace;  $PREPARSER ./calc input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/calc.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121684,15 +129010,15 @@ _ATEOF
 
 # 5. Check
 { set +x
-$as_echo "$at_srcdir/calc.at:752: cat stderr"
-at_fn_check_prepare_trace "calc.at:752"
+$as_echo "$at_srcdir/calc.at:719: cat stderr"
+at_fn_check_prepare_trace "calc.at:719"
 ( $at_check_trace; cat stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/calc.at:752"
+at_fn_check_status 0 $at_status "$at_srcdir/calc.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -121704,13 +129030,13 @@ $at_traceon; }
   $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 'torture.at:137' \
+#AT_STOP_253
+#AT_START_254
+at_fn_group_banner 254 'torture.at:137' \
   "Big triangle" "                                   " 15
 at_xfail=no
 (
-  $as_echo "228. $at_setup_line: testing $at_desc ..."
+  $as_echo "254. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -121742,7 +129068,7 @@ print <<EOF;
 #include <assert.h>
 #define MAX $max
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 %}
 %union
 {
@@ -121785,9 +129111,8 @@ print <<\EOF;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -121817,9 +129142,9 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:143: perl -w ./gengram.pl 200 || exit 77"
-at_fn_check_prepare_trace "torture.at:143"
-( $at_check_trace; perl -w ./gengram.pl 200 || exit 77
+$as_echo "$at_srcdir/torture.at:143: \$PERL -w ./gengram.pl 200 || exit 77"
+at_fn_check_prepare_dynamic "$PERL -w ./gengram.pl 200 || exit 77" "torture.at:143"
+( $at_check_trace; $PERL -w ./gengram.pl 200 || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -121846,6 +129171,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/torture.at:145: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:145"
+( $at_check_trace; $BISON_C_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/torture.at:145"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/torture.at:145: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:145"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -121890,13 +129228,13 @@ $at_traceon; }
   $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 'torture.at:227' \
+#AT_STOP_254
+#AT_START_255
+at_fn_group_banner 255 'torture.at:227' \
   "Big horizontal" "                                 " 15
 at_xfail=no
 (
-  $as_echo "229. $at_setup_line: testing $at_desc ..."
+  $as_echo "255. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -121935,7 +129273,7 @@ print <<EOF;
 #include <stdlib.h>
 #define MAX $max
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 %}
 
 %token
@@ -121962,9 +129300,8 @@ print <<\EOF;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -121988,9 +129325,9 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:241: perl -w ./gengram.pl 1000 || exit 77"
-at_fn_check_prepare_trace "torture.at:241"
-( $at_check_trace; perl -w ./gengram.pl 1000 || exit 77
+$as_echo "$at_srcdir/torture.at:241: \$PERL -w ./gengram.pl 1000 || exit 77"
+at_fn_check_prepare_dynamic "$PERL -w ./gengram.pl 1000 || exit 77" "torture.at:241"
+( $at_check_trace; $PERL -w ./gengram.pl 1000 || exit 77
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -122042,6 +129379,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/torture.at:248: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:248"
+( $at_check_trace; $BISON_C_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/torture.at:248"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/torture.at:248: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:248"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -122086,13 +129436,13 @@ $at_traceon; }
   $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 'torture.at:363' \
+#AT_STOP_255
+#AT_START_256
+at_fn_group_banner 256 'torture.at:364' \
   "Many lookahead tokens" "                          " 15
 at_xfail=no
 (
-  $as_echo "230. $at_setup_line: testing $at_desc ..."
+  $as_echo "256. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -122108,12 +129458,18 @@ print <<EOF;
 %error-verbose
 %debug
 %{
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+
 # include <stdio.h>
 # include <stdlib.h>
 # include <assert.h>
 # define MAX $max
 static int yylex (void);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 %}
 %union
 {
@@ -122163,9 +129519,8 @@ print <<\EOF;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -122198,15 +129553,15 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:365: perl -w ./gengram.pl 1000 || exit 77"
-at_fn_check_prepare_trace "torture.at:365"
-( $at_check_trace; perl -w ./gengram.pl 1000 || exit 77
+$as_echo "$at_srcdir/torture.at:366: \$PERL -w ./gengram.pl 1000 || exit 77"
+at_fn_check_prepare_dynamic "$PERL -w ./gengram.pl 1000 || exit 77" "torture.at:366"
+( $at_check_trace; $PERL -w ./gengram.pl 1000 || 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 stdout:; tee stdout <"$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:365"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:366"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122221,15 +129576,15 @@ case $data_limit in
 [0-9]*)
   if test "$data_limit" -lt 204000; then
     { set +x
-$as_echo "$at_srcdir/torture.at:369: ulimit -S -d 204000 || exit 77"
-at_fn_check_prepare_trace "torture.at:369"
+$as_echo "$at_srcdir/torture.at:370: ulimit -S -d 204000 || exit 77"
+at_fn_check_prepare_trace "torture.at:370"
 ( $at_check_trace; ulimit -S -d 204000 || 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/torture.at:369"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:370"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122243,9 +129598,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/torture.at:371: 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/torture.at:372: 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 -v -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "torture.at:371"
+at_fn_check_prepare_notrace 'an embedded newline' "torture.at:372"
 ( $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 -v -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -122253,29 +129608,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/torture.at:371"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:372"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/torture.at:371: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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 -v -o input.c input.y" "torture.at:371"
+$as_echo "$at_srcdir/torture.at:372: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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 -v -o input.c input.y" "torture.at:372"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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/torture.at:371"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:372"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/torture.at:371: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:372: \$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' "torture.at:371"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:372"
 ( $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
@@ -122284,25 +129639,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:371"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:372"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/torture.at:371: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:372: \$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' "torture.at:371"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:372"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:371"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:372"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122310,55 +129665,68 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/torture.at:371: bison -v -o input.c input.y"
-at_fn_check_prepare_trace "torture.at:371"
+$as_echo "$at_srcdir/torture.at:372: bison -v -o input.c input.y"
+at_fn_check_prepare_trace "torture.at:372"
 ( $at_check_trace; bison -v -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/torture.at:371"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:372"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:372: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:372"
+$as_echo "$at_srcdir/torture.at:373: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:373"
+( $at_check_trace; $BISON_C_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/torture.at:373"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/torture.at:373: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:373"
 ( $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/torture.at:372"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:373"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:373:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "torture.at:373"
+$as_echo "$at_srcdir/torture.at:374:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "torture.at:374"
 ( $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/torture.at:373"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:374"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:373: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:373"
+$as_echo "$at_srcdir/torture.at:374: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:374"
 ( $at_check_trace; 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/torture.at:373"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:374"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122368,13 +129736,13 @@ $at_traceon; }
   $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 'torture.at:459' \
+#AT_STOP_256
+#AT_START_257
+at_fn_group_banner 257 'torture.at:466' \
   "Exploding the Stack Size with Alloca" "           " 15
 at_xfail=no
 (
-  $as_echo "231. $at_setup_line: testing $at_desc ..."
+  $as_echo "257. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -122384,6 +129752,14 @@ at_xfail=no
 # A grammar of parens growing the stack thanks to right recursion.
 # exp:
 cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %{
 #include <errno.h>
 #include <limits.h>
@@ -122396,7 +129772,7 @@ cat >input.y <<'_ATEOF'
 #endif
 
   static int yylex (void);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
 %}
 
 %error-verbose
@@ -122408,9 +129784,8 @@ exp: WAIT_FOR_EOF exp | ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -122424,44 +129799,53 @@ yylex (void)
     return EOF;
 }
 
-int
-main (int argc, const char **argv)
+/* Return argv[1] as an int. */
+static int
+get_args (int argc, const char **argv)
 {
+  int res;
   char *endp;
-  YYSTYPE yylval_init;
   assert (argc == 2);
-  yylval_init = strtol (argv[1], &endp, 10);
+  res = strtol (argv[1], &endp, 10);
   assert (argv[1] != endp);
-  assert (0 <= yylval_init);
-  assert (yylval_init <= INT_MAX);
+  assert (0 <= res);
+  assert (res <= INT_MAX);
   assert (errno != ERANGE);
+  return res;
+}
+
+int
+main (int argc, const char **argv)
+{
+  YYSTYPE yylval_init = get_args (argc, argv);
+  int status = 0;
+  int count;
   yydebug = 1;
-  {
-    int count;
-    int status;
-    for (count = 0; count < 2; ++count)
-      {
-        int new_status;
-        yylval = yylval_init;
-        new_status = yyparse ();
-        assert (0 <= count || new_status == status);
+  for (count = 0; count < 2; ++count)
+    {
+      int new_status;
+      yylval = yylval_init;
+      new_status = yyparse ();
+      if (count == 0)
         status = new_status;
-      }
-    return status;
-  }
+      else
+        assert (new_status == status);
+    }
+  return status;
 }
 _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/torture.at:468: 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/torture.at:475: 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' "torture.at:468"
+at_fn_check_prepare_notrace 'an embedded newline' "torture.at:475"
 ( $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>&-
@@ -122469,29 +129853,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/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/torture.at:468: 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" "torture.at:468"
+$as_echo "$at_srcdir/torture.at:475: 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" "torture.at:475"
 ( $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/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/torture.at:468: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:475: \$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' "torture.at:468"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:475"
 ( $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
@@ -122500,25 +129884,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/torture.at:468: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:475: \$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' "torture.at:468"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:475"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122526,29 +129910,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/torture.at:468: bison -o input.c input.y"
-at_fn_check_prepare_trace "torture.at:468"
+$as_echo "$at_srcdir/torture.at:475: bison -o input.c input.y"
+at_fn_check_prepare_trace "torture.at:475"
 ( $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/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:468: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:468"
+$as_echo "$at_srcdir/torture.at:475: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:475"
+( $at_check_trace; $BISON_C_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/torture.at:475"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/torture.at:475: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:475"
 ( $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/torture.at:468"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:475"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122556,56 +129953,56 @@ $at_traceon; }
 
 # Below the limit of 200.
 { set +x
-$as_echo "$at_srcdir/torture.at:471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:471"
+$as_echo "$at_srcdir/torture.at:478: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:478"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 20
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:471"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:478"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:471: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:471"
+$as_echo "$at_srcdir/torture.at:478: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:478"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:471"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:478"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Two enlargements: 2 * 2 * 200.
 { set +x
-$as_echo "$at_srcdir/torture.at:474: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:474"
+$as_echo "$at_srcdir/torture.at:481: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:481"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 900
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:474"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:481"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:474: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:474"
+$as_echo "$at_srcdir/torture.at:481: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:481"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:474"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:481"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122613,28 +130010,28 @@ $at_traceon; }
 # Fails: beyond the limit of 10,000 (which we don't reach anyway since we
 # multiply by two starting at 200 => 5120 is the last possible).
 { set +x
-$as_echo "$at_srcdir/torture.at:478: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:478"
+$as_echo "$at_srcdir/torture.at:485: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:485"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 10000
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/torture.at:478"
+at_fn_check_status 2 $at_status "$at_srcdir/torture.at:485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:478: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:478"
+$as_echo "$at_srcdir/torture.at:485: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:485"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:478"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:485"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122647,6 +130044,14 @@ $at_traceon; }
 # A grammar of parens growing the stack thanks to right recursion.
 # exp:
 cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %{
 #include <errno.h>
 #include <limits.h>
@@ -122659,7 +130064,7 @@ cat >input.y <<'_ATEOF'
 #endif
 
   static int yylex (void);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
 %}
 %define api.push-pull both
 
@@ -122672,9 +130077,8 @@ exp: WAIT_FOR_EOF exp | ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -122688,44 +130092,55 @@ yylex (void)
     return EOF;
 }
 
-int
-main (int argc, const char **argv)
+/* Return argv[1] as an int. */
+static int
+get_args (int argc, const char **argv)
 {
+  int res;
   char *endp;
-  YYSTYPE yylval_init;
   assert (argc == 2);
-  yylval_init = strtol (argv[1], &endp, 10);
+  res = strtol (argv[1], &endp, 10);
   assert (argv[1] != endp);
-  assert (0 <= yylval_init);
-  assert (yylval_init <= INT_MAX);
+  assert (0 <= res);
+  assert (res <= INT_MAX);
   assert (errno != ERANGE);
+  return res;
+}
+
+int
+main (int argc, const char **argv)
+{
+  YYSTYPE yylval_init = get_args (argc, argv);
+  int status = 0;
+  int count;
+  yypstate *ps = yypstate_new ();
   yydebug = 1;
-  {
-    int count;
-    int status;
-    for (count = 0; count < 2; ++count)
-      {
-        int new_status;
-        yylval = yylval_init;
-        new_status = yyparse ();
-        assert (0 <= count || new_status == status);
+  for (count = 0; count < 2; ++count)
+    {
+      int new_status;
+      yylval = yylval_init;
+      new_status = yypull_parse (ps);
+      if (count == 0)
         status = new_status;
-      }
-    return status;
-  }
+      else
+        assert (new_status == status);
+    }
+  yypstate_delete (ps);
+  return status;
 }
 _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/torture.at:484: 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/torture.at:491: 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' "torture.at:484"
+at_fn_check_prepare_notrace 'an embedded newline' "torture.at:491"
 ( $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>&-
@@ -122733,29 +130148,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/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/torture.at:484: 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" "torture.at:484"
+$as_echo "$at_srcdir/torture.at:491: 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" "torture.at:491"
 ( $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/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/torture.at:484: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:491: \$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' "torture.at:484"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:491"
 ( $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
@@ -122764,25 +130179,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/torture.at:484: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:491: \$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' "torture.at:484"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:491"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122790,110 +130205,123 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/torture.at:484: bison -o input.c input.y"
-at_fn_check_prepare_trace "torture.at:484"
+$as_echo "$at_srcdir/torture.at:491: bison -o input.c input.y"
+at_fn_check_prepare_trace "torture.at:491"
 ( $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/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:484: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:484"
+$as_echo "$at_srcdir/torture.at:491: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:491"
+( $at_check_trace; $BISON_C_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/torture.at:491"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/torture.at:491: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:491"
 ( $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/torture.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:487: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:487"
+$as_echo "$at_srcdir/torture.at:494: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:494"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 20
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:487"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:494"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:487: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:487"
+$as_echo "$at_srcdir/torture.at:494: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:494"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:487"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:494"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:489: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:489"
+$as_echo "$at_srcdir/torture.at:496: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:496"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 900
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:489"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:496"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:489: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:489"
+$as_echo "$at_srcdir/torture.at:496: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:496"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:489"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:496"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:491: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:491"
+$as_echo "$at_srcdir/torture.at:498: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:498"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 10000
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/torture.at:491"
+at_fn_check_status 2 $at_status "$at_srcdir/torture.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:491: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:491"
+$as_echo "$at_srcdir/torture.at:498: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:498"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:491"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -122905,13 +130333,13 @@ $at_traceon; }
   $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 'torture.at:505' \
+#AT_STOP_257
+#AT_START_258
+at_fn_group_banner 258 'torture.at:512' \
   "Exploding the Stack Size with Malloc" "           " 15
 at_xfail=no
 (
-  $as_echo "232. $at_setup_line: testing $at_desc ..."
+  $as_echo "258. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -122921,6 +130349,14 @@ at_xfail=no
 # A grammar of parens growing the stack thanks to right recursion.
 # exp:
 cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %{
 #include <errno.h>
 #include <limits.h>
@@ -122928,7 +130364,7 @@ cat >input.y <<'_ATEOF'
 #include <stdlib.h>
 #define YYSTACK_USE_ALLOCA 0
   static int yylex (void);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
 %}
 
 %error-verbose
@@ -122940,9 +130376,8 @@ exp: WAIT_FOR_EOF exp | ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -122956,44 +130391,53 @@ yylex (void)
     return EOF;
 }
 
-int
-main (int argc, const char **argv)
+/* Return argv[1] as an int. */
+static int
+get_args (int argc, const char **argv)
 {
+  int res;
   char *endp;
-  YYSTYPE yylval_init;
   assert (argc == 2);
-  yylval_init = strtol (argv[1], &endp, 10);
+  res = strtol (argv[1], &endp, 10);
   assert (argv[1] != endp);
-  assert (0 <= yylval_init);
-  assert (yylval_init <= INT_MAX);
+  assert (0 <= res);
+  assert (res <= INT_MAX);
   assert (errno != ERANGE);
+  return res;
+}
+
+int
+main (int argc, const char **argv)
+{
+  YYSTYPE yylval_init = get_args (argc, argv);
+  int status = 0;
+  int count;
   yydebug = 1;
-  {
-    int count;
-    int status;
-    for (count = 0; count < 2; ++count)
-      {
-        int new_status;
-        yylval = yylval_init;
-        new_status = yyparse ();
-        assert (0 <= count || new_status == status);
+  for (count = 0; count < 2; ++count)
+    {
+      int new_status;
+      yylval = yylval_init;
+      new_status = yyparse ();
+      if (count == 0)
         status = new_status;
-      }
-    return status;
-  }
+      else
+        assert (new_status == status);
+    }
+  return status;
 }
 _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/torture.at:509: 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/torture.at:516: 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' "torture.at:509"
+at_fn_check_prepare_notrace 'an embedded newline' "torture.at:516"
 ( $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>&-
@@ -123001,29 +130445,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/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/torture.at:509: 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" "torture.at:509"
+$as_echo "$at_srcdir/torture.at:516: 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" "torture.at:516"
 ( $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/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/torture.at:509: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:516: \$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' "torture.at:509"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:516"
 ( $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
@@ -123032,25 +130476,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/torture.at:509: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:516: \$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' "torture.at:509"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:516"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123058,29 +130502,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/torture.at:509: bison -o input.c input.y"
-at_fn_check_prepare_trace "torture.at:509"
+$as_echo "$at_srcdir/torture.at:516: bison -o input.c input.y"
+at_fn_check_prepare_trace "torture.at:516"
 ( $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/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:509: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:509"
+$as_echo "$at_srcdir/torture.at:516: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:516"
+( $at_check_trace; $BISON_C_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/torture.at:516"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/torture.at:516: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:516"
 ( $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/torture.at:509"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:516"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123088,56 +130545,56 @@ $at_traceon; }
 
 # Below the limit of 200.
 { set +x
-$as_echo "$at_srcdir/torture.at:512: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:512"
+$as_echo "$at_srcdir/torture.at:519: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:519"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 20
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:512"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:519"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:512: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:512"
+$as_echo "$at_srcdir/torture.at:519: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:519"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:512"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:519"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 # Two enlargements: 2 * 2 * 200.
 { set +x
-$as_echo "$at_srcdir/torture.at:515: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:515"
+$as_echo "$at_srcdir/torture.at:522: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:522"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 900
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:522"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:515: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:515"
+$as_echo "$at_srcdir/torture.at:522: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:522"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:515"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:522"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123145,28 +130602,28 @@ $at_traceon; }
 # Fails: beyond the limit of 10,000 (which we don't reach anyway since we
 # multiply by two starting at 200 => 5120 is the possible).
 { set +x
-$as_echo "$at_srcdir/torture.at:519: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:519"
+$as_echo "$at_srcdir/torture.at:526: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:526"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 10000
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/torture.at:519"
+at_fn_check_status 2 $at_status "$at_srcdir/torture.at:526"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:519: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:519"
+$as_echo "$at_srcdir/torture.at:526: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:526"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:519"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:526"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123176,6 +130633,14 @@ $at_traceon; }
 # A grammar of parens growing the stack thanks to right recursion.
 # exp:
 cat >input.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
 %{
 #include <errno.h>
 #include <limits.h>
@@ -123183,7 +130648,7 @@ cat >input.y <<'_ATEOF'
 #include <stdlib.h>
 #define YYSTACK_USE_ALLOCA 0
   static int yylex (void);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
 %}
 %define api.push-pull both
 
@@ -123196,9 +130661,8 @@ exp: WAIT_FOR_EOF exp | ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -123212,44 +130676,55 @@ yylex (void)
     return EOF;
 }
 
-int
-main (int argc, const char **argv)
+/* Return argv[1] as an int. */
+static int
+get_args (int argc, const char **argv)
 {
+  int res;
   char *endp;
-  YYSTYPE yylval_init;
   assert (argc == 2);
-  yylval_init = strtol (argv[1], &endp, 10);
+  res = strtol (argv[1], &endp, 10);
   assert (argv[1] != endp);
-  assert (0 <= yylval_init);
-  assert (yylval_init <= INT_MAX);
+  assert (0 <= res);
+  assert (res <= INT_MAX);
   assert (errno != ERANGE);
+  return res;
+}
+
+int
+main (int argc, const char **argv)
+{
+  YYSTYPE yylval_init = get_args (argc, argv);
+  int status = 0;
+  int count;
+  yypstate *ps = yypstate_new ();
   yydebug = 1;
-  {
-    int count;
-    int status;
-    for (count = 0; count < 2; ++count)
-      {
-        int new_status;
-        yylval = yylval_init;
-        new_status = yyparse ();
-        assert (0 <= count || new_status == status);
+  for (count = 0; count < 2; ++count)
+    {
+      int new_status;
+      yylval = yylval_init;
+      new_status = yypull_parse (ps);
+      if (count == 0)
         status = new_status;
-      }
-    return status;
-  }
+      else
+        assert (new_status == status);
+    }
+  yypstate_delete (ps);
+  return status;
 }
 _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/torture.at:522: 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/torture.at:529: 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' "torture.at:522"
+at_fn_check_prepare_notrace 'an embedded newline' "torture.at:529"
 ( $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>&-
@@ -123257,29 +130732,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/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/torture.at:522: 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" "torture.at:522"
+$as_echo "$at_srcdir/torture.at:529: 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" "torture.at:529"
 ( $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/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/torture.at:522: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:529: \$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' "torture.at:522"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:529"
 ( $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
@@ -123288,25 +130763,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/torture.at:522: \$XSLTPROC \\
+$as_echo "$at_srcdir/torture.at:529: \$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' "torture.at:522"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "torture.at:529"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123314,110 +130789,123 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/torture.at:522: bison -o input.c input.y"
-at_fn_check_prepare_trace "torture.at:522"
+$as_echo "$at_srcdir/torture.at:529: bison -o input.c input.y"
+at_fn_check_prepare_trace "torture.at:529"
 ( $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/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:522: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:522"
+$as_echo "$at_srcdir/torture.at:529: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "torture.at:529"
+( $at_check_trace; $BISON_C_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/torture.at:529"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/torture.at:529: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "torture.at:529"
 ( $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/torture.at:522"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:525: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:525"
+$as_echo "$at_srcdir/torture.at:532: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 20"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 20" "torture.at:532"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 20
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:525: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:525"
+$as_echo "$at_srcdir/torture.at:532: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:532"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:525"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:532"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:527: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:527"
+$as_echo "$at_srcdir/torture.at:534: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 900"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 900" "torture.at:534"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 900
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:527"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:534"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:527: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:527"
+$as_echo "$at_srcdir/torture.at:534: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:534"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:527"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:534"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/torture.at:529: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:529"
+$as_echo "$at_srcdir/torture.at:536: VALGRIND_OPTS=\"\$VALGRIND_OPTS --log-fd=1\" \$PREPARSER ./input 10000"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --log-fd=1\" $PREPARSER ./input 10000" "torture.at:536"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --log-fd=1" $PREPARSER ./input 10000
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/torture.at:529"
+at_fn_check_status 2 $at_status "$at_srcdir/torture.at:536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/torture.at:529: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "torture.at:529"
+$as_echo "$at_srcdir/torture.at:536: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "torture.at:536"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/torture.at:529"
+at_fn_check_status 0 $at_status "$at_srcdir/torture.at:536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123429,13 +130917,13 @@ $at_traceon; }
   $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:76' \
+#AT_STOP_258
+#AT_START_259
+at_fn_group_banner 259 'existing.at:79' \
   "GNU AWK 3.1.0 Grammar: LALR(1)" "                 " 16
 at_xfail=no
 (
-  $as_echo "233. $at_setup_line: testing $at_desc ..."
+  $as_echo "259. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -123450,7 +130938,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -123777,9 +131265,8 @@ comma : ',' opt_nls
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -123813,9 +131300,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/existing.at:76: 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/existing.at:79: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -123823,29 +131310,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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:76: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:79"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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
@@ -123854,25 +131341,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123880,8 +131367,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:76: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -123890,16 +131377,16 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 65 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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:76"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:79: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:79"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -123907,21 +131394,35 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "319
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:79"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:79"
 ( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123931,9 +131432,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/existing.at:76: 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/existing.at:79: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
 ( $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-lalr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -123941,29 +131442,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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:76: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:79"
 ( $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-lalr.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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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
@@ -123972,25 +131473,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -123998,23 +131499,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:76: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:79: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -124022,7 +131523,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -124035,35 +131536,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:79"
+( $at_check_trace; $BISON_C_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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -124072,7 +131586,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected '*', expecting NEWLINE o
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -124083,13 +131597,13 @@ $at_traceon; }
   $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:76' \
+#AT_STOP_259
+#AT_START_260
+at_fn_group_banner 260 'existing.at:79' \
   "GNU AWK 3.1.0 Grammar: IELR(1)" "                 " 16
 at_xfail=no
 (
-  $as_echo "234. $at_setup_line: testing $at_desc ..."
+  $as_echo "260. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -124104,7 +131618,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -124431,9 +131945,8 @@ comma : ',' opt_nls
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -124467,9 +131980,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/existing.at:76: 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/existing.at:79: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -124477,147 +131990,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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:76: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:79"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/existing.at:76: \$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' "existing.at:76"
-( $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/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/existing.at:76: \$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' "existing.at:76"
-( $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/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/existing.at:76: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:76"
-( $at_check_trace; bison --report=all --defines -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: 65 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/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-{ set +x
-$as_echo "$at_srcdir/existing.at:76: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:76"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
-) >>"$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 "328
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/existing.at:76: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:76"
-( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:76"
-$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/existing.at:76: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
-( $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-lalr.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/existing.at:76"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/existing.at:76: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:76"
-( $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-lalr.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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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
@@ -124626,25 +132021,157 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:76: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:76"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:79"
+( $at_check_trace; bison --report=all --defines -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: 65 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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:79"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
+) >>"$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 "328
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:79"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:79"
+( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:79"
+$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/existing.at:79: 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-lalr.y"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
+( $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-lalr.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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/existing.at:79: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:79"
+( $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-lalr.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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/existing.at:79: \$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' "existing.at:79"
+( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/existing.at:79: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:79"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -124652,23 +132179,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:76: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:79: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:76"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:79"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -124717,7 +132244,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
      \$default  reduce using rule 45 (statement)
 +
 +
-+state 320
++State 320
 +
 +  139 non_post_simp_exp: . '!' simp_exp
 +  140                  | . '(' exp r_paren
@@ -124755,7 +132282,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable           go to state 63
 +
 +
-+state 321
++State 321
 +
 +  146 non_post_simp_exp: INCREMENT . variable
 +  154 variable: . NAME
@@ -124768,7 +132295,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable  go to state 50
 +
 +
-+state 322
++State 322
 +
 +  147 non_post_simp_exp: DECREMENT . variable
 +  154 variable: . NAME
@@ -124781,7 +132308,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable  go to state 51
 +
 +
-+state 323
++State 323
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -124829,7 +132356,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable           go to state 57
 +
 +
-+state 324
++State 324
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -124877,7 +132404,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable           go to state 57
 +
 +
-+state 325
++State 325
 +
 +  130 simp_exp: . non_post_simp_exp
 +  131         | . simp_exp '^' simp_exp
@@ -124925,7 +132452,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    variable           go to state 57
 +
 +
-+state 326
++State 326
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -124946,7 +132473,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    Conflict between rule 151 and token '-' resolved as reduce ('-' < UNARY).
 +
 +
-+state 327
++State 327
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -124967,7 +132494,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    Conflict between rule 150 and token '-' resolved as reduce ('-' < UNARY).
 +
 +
-+state 328
++State 328
 +
 +  131 simp_exp: simp_exp . '^' simp_exp
 +  132         | simp_exp . '*' simp_exp
@@ -124988,7 +132515,7 @@ echo >>"$at_stdout"; $as_echo "@@ -712,7 +712,7 @@
 +    Conflict between rule 139 and token '-' resolved as reduce ('-' < UNARY).
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -125001,42 +132528,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:79"
+( $at_check_trace; $BISON_C_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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; 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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -125047,13 +132587,13 @@ $at_traceon; }
   $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:76' \
+#AT_STOP_260
+#AT_START_261
+at_fn_group_banner 261 'existing.at:79' \
   "GNU AWK 3.1.0 Grammar: Canonical LR(1)" "         " 16
 at_xfail=no
 (
-  $as_echo "235. $at_setup_line: testing $at_desc ..."
+  $as_echo "261. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -125068,7 +132608,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -125395,9 +132935,8 @@ comma : ',' opt_nls
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -125426,8 +132965,8 @@ _ATEOF
 # strings.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -125436,16 +132975,16 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 265 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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:76"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:79: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:79"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -125453,7 +132992,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "2358
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -125467,46 +133006,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:76: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:79"
+( $at_check_trace; $BISON_C_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/existing.at:79"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:79: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:79"
 ( $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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:76: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:76"
+$as_echo "$at_srcdir/existing.at:79: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:79"
 ( $at_check_trace; 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/existing.at:76"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:79"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -125517,13 +133069,13 @@ $at_traceon; }
   $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 'existing.at:780' \
+#AT_STOP_261
+#AT_START_262
+at_fn_group_banner 262 'existing.at:783' \
   "GNU Cim Grammar: LALR(1)" "                       " 16
 at_xfail=no
 (
-  $as_echo "236. $at_setup_line: testing $at_desc ..."
+  $as_echo "262. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -125538,7 +133090,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -126132,9 +133684,8 @@ ARGUMENT_LIST   :       EXPRESSION
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -126168,9 +133719,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/existing.at:780: 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/existing.at:783: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -126178,29 +133729,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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:783"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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
@@ -126209,25 +133760,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -126235,8 +133786,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:780: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -126245,16 +133796,16 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 78 shift/reduce, 10 reduce/re
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:780"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:783: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:783"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -126262,21 +133813,35 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "442
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:783"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:783"
 ( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -126286,9 +133851,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/existing.at:780: 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/existing.at:783: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
 ( $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-lalr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -126296,29 +133861,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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:783"
 ( $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-lalr.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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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
@@ -126327,25 +133892,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -126353,23 +133918,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:780: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:783: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -126377,12 +133942,12 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 { set +x
-$as_echo "$at_srcdir/existing.at:780: grep '^State.*conflicts:' input.output"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: grep '^State.*conflicts:' input.output"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; grep '^State.*conflicts:' input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -126399,7 +133964,7 @@ State 360 conflicts: 9 shift/reduce, 2 reduce/reduce
 State 427 conflicts: 9 shift/reduce, 2 reduce/reduce
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -126412,42 +133977,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:783"
+( $at_check_trace; $BISON_C_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/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; 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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -126458,13 +134036,13 @@ $at_traceon; }
   $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 'existing.at:780' \
+#AT_STOP_262
+#AT_START_263
+at_fn_group_banner 263 'existing.at:783' \
   "GNU Cim Grammar: IELR(1)" "                       " 16
 at_xfail=no
 (
-  $as_echo "237. $at_setup_line: testing $at_desc ..."
+  $as_echo "263. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -126479,7 +134057,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -127073,9 +134651,8 @@ ARGUMENT_LIST   :       EXPRESSION
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -127109,9 +134686,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/existing.at:780: 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/existing.at:783: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -127119,147 +134696,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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:783"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/existing.at:780: \$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' "existing.at:780"
-( $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/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/existing.at:780: \$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' "existing.at:780"
-( $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/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/existing.at:780: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:780"
-( $at_check_trace; bison --report=all --defines -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: 78 shift/reduce, 10 reduce/reduce
-" | \
-  $at_diff - "$at_stderr" || at_failed=:
-at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-{ set +x
-$as_echo "$at_srcdir/existing.at:780: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:780"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
-) >>"$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 "442
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/existing.at:780: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:780"
-( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:780"
-$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/existing.at:780: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
-( $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-lalr.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/existing.at:780"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/existing.at:780: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:780"
-( $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-lalr.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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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
@@ -127268,25 +134727,157 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:780: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:780"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:783"
+( $at_check_trace; bison --report=all --defines -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: 78 shift/reduce, 10 reduce/reduce
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:783"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
+) >>"$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 "442
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:783"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:783"
+( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:783"
+$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/existing.at:783: 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-lalr.y"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
+( $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-lalr.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/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/existing.at:783: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:783"
+( $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-lalr.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/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/existing.at:783: \$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' "existing.at:783"
+( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/existing.at:783: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:783"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -127294,23 +134885,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:780: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:783: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:780"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:783"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -127318,12 +134909,12 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 { set +x
-$as_echo "$at_srcdir/existing.at:780: grep '^State.*conflicts:' input.output"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: grep '^State.*conflicts:' input.output"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; grep '^State.*conflicts:' input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -127340,7 +134931,7 @@ State 360 conflicts: 9 shift/reduce, 2 reduce/reduce
 State 427 conflicts: 9 shift/reduce, 2 reduce/reduce
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -127353,42 +134944,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:783"
+( $at_check_trace; $BISON_C_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/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; 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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -127399,13 +135003,13 @@ $at_traceon; }
   $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 'existing.at:780' \
+#AT_STOP_263
+#AT_START_264
+at_fn_group_banner 264 'existing.at:783' \
   "GNU Cim Grammar: Canonical LR(1)" "               " 16
 at_xfail=no
 (
-  $as_echo "238. $at_setup_line: testing $at_desc ..."
+  $as_echo "264. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -127420,7 +135024,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -128014,9 +135618,8 @@ ARGUMENT_LIST   :       EXPRESSION
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -128045,8 +135648,8 @@ _ATEOF
 # strings.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -128055,16 +135658,16 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 1876 shift/reduce, 144 reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:780"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:783: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:783"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -128072,7 +135675,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "10425
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128086,46 +135689,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:780: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:783"
+( $at_check_trace; $BISON_C_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/existing.at:783"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:783: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:783"
 ( $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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:780: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:780"
+$as_echo "$at_srcdir/existing.at:783: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:783"
 ( $at_check_trace; 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/existing.at:780"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:783"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128136,13 +135752,13 @@ $at_traceon; }
   $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 'existing.at:1400' \
+#AT_STOP_264
+#AT_START_265
+at_fn_group_banner 265 'existing.at:1403' \
   "GNU pic (Groff 1.18.1) Grammar: LALR(1)" "        " 16
 at_xfail=no
 (
-  $as_echo "239. $at_setup_line: testing $at_desc ..."
+  $as_echo "265. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -128157,7 +135773,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -128701,9 +136317,8 @@ expr:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -128737,9 +136352,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/existing.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/existing.at:1403: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -128747,29 +136362,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
@@ -128778,25 +136393,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128804,8 +136419,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -128814,14 +136429,14 @@ echo >>"$at_stderr"; $as_echo "input.y:470.11-48: warning: rule useless in parse
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -128829,15 +136444,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128873,9 +136488,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/existing.at:1403: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -128883,7 +136498,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128891,15 +136506,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128908,28 +136523,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128938,9 +136553,9 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1400"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:1403: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1403"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -128948,21 +136563,35 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "422
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:1403"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:1403: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:1403"
 ( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -128972,9 +136601,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/existing.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/existing.at:1403: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $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-lalr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -128982,29 +136611,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:1403"
 ( $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-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
@@ -129013,25 +136642,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129039,23 +136668,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:1403: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129063,7 +136692,7 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129076,35 +136705,48 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:1403"
+( $at_check_trace; $BISON_C_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/existing.at:1403"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:1403: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -129113,7 +136755,7 @@ echo >>"$at_stderr"; $as_echo "syntax error, unexpected LEFT
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129124,13 +136766,13 @@ $at_traceon; }
   $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 'existing.at:1400' \
+#AT_STOP_265
+#AT_START_266
+at_fn_group_banner 266 'existing.at:1403' \
   "GNU pic (Groff 1.18.1) Grammar: IELR(1)" "        " 16
 at_xfail=no
 (
-  $as_echo "240. $at_setup_line: testing $at_desc ..."
+  $as_echo "266. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -129145,7 +136787,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -129689,9 +137331,8 @@ expr:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -129725,9 +137366,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/existing.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/existing.at:1403: 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 --defines -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $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 --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129735,29 +137376,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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 --report=all --defines -o input.c input.y" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
@@ -129766,25 +137407,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129792,8 +137433,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -129802,14 +137443,14 @@ echo >>"$at_stderr"; $as_echo "input.y:470.11-48: warning: rule useless in parse
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -129817,15 +137458,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129861,9 +137502,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/existing.at:1403: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129871,7 +137512,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129879,15 +137520,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129896,28 +137537,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129926,9 +137567,9 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1400"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:1403: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1403"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -129936,21 +137577,35 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "427
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:1403: diff -u /dev/null /dev/null || exit 77"
+at_fn_check_prepare_trace "existing.at:1403"
+( $at_check_trace; diff -u /dev/null /dev/null || 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 stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
-at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: sed 's/^%define lr.type .*\$//' input.y > input-lalr.y"
+at_fn_check_prepare_dynamic "sed 's/^%define lr.type .*$//' input.y > input-lalr.y" "existing.at:1403"
 ( $at_check_trace; sed 's/^%define lr.type .*$//' input.y > input-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -129960,9 +137615,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/existing.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/existing.at:1403: 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-lalr.y"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $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-lalr.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -129970,29 +137625,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml --report=all input-lalr.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-lalr.y" "existing.at:1403"
 ( $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-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
@@ -130001,25 +137656,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$XSLTPROC \\
+$as_echo "$at_srcdir/existing.at:1403: \$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' "existing.at:1400"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "existing.at:1403"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -130027,23 +137682,23 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: bison --report=all input-lalr.y"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: bison --report=all input-lalr.y"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; bison --report=all input-lalr.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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: diff -u input-lalr.output input.output \\
+$as_echo "$at_srcdir/existing.at:1403: diff -u input-lalr.output input.output \\
            | sed -n '/^@@/,\$p' | sed 's/^ \$//'"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $at_check_trace; diff -u input-lalr.output input.output \
            | sed -n '/^@@/,$p' | sed 's/^ $//'
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -130124,7 +137779,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
      nth_primitive          go to state 105
 @@ -3256,7 +3256,7 @@
 
state 102
State 102
 
 -  146 place: label .  [\$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, AND, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '\`', ',', '>', '+', '-', '!', ';', '}', ']', ')']
 +  146 place: label .  [\$end, LABEL, VARIABLE, NUMBER, TEXT, ORDINAL, LEFT_ARROW_HEAD, RIGHT_ARROW_HEAD, DOUBLE_ARROW_HEAD, LAST, UP, DOWN, LEFT, RIGHT, HEIGHT, RADIUS, WIDTH, DIAMETER, FROM, TO, AT, WITH, BY, THEN, SOLID, DOTTED, DASHED, CHOP, SAME, INVISIBLE, LJUST, RJUST, ABOVE, BELOW, HERE, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, SIN, COS, ATAN2, LOG, EXP, SQRT, K_MAX, K_MIN, INT, RAND, SRAND, CW, CCW, THICKNESS, FILL, COLORED, OUTLINED, SHADED, ALIGNED, SPRINTF, '(', '\`', '+', '-', '!', ';', '}', ']']
@@ -130289,7 +137944,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 
 
state 165
State 165
 @@ -7987,7 +7987,7 @@
      text_expr              go to state 112
      text                   go to state 113
@@ -130406,7 +138061,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    between  go to state 425
 
 
state 193
State 193
 @@ -10152,7 +10152,7 @@
 
      expr_pair              go to state 317
@@ -130574,7 +138229,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 
 
state 238
State 238
 @@ -12937,7 +12937,7 @@
      '!'           shift, and go to state 94
 
@@ -130661,7 +138316,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 
 
state 315
State 315
 @@ -16124,7 +16124,7 @@
 
      \$default  reduce using rule 239 (expr)
@@ -130712,7 +138367,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 
 
state 383
State 383
 @@ -18071,7 +18071,7 @@
      '!'           shift, and go to state 94
 
@@ -130755,7 +138410,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
      \$default  reduce using rule 29 (placeless_element)
 +
 +
-+state 423
++State 423
 +
 +  146 place: label .  [\$end, AND, DOT_X, DOT_Y, DOT_HT, DOT_WID, DOT_RAD, ',', '>', '+', '-', ';', '}', ']', ')']
 +  147      | label . corner
@@ -130826,7 +138481,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    corner  go to state 205
 +
 +
-+state 424
++State 424
 +
 +  140 position_not_place: expr . between position AND position
 +  141                   | expr . '<' position ',' position '>'
@@ -130869,7 +138524,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    between  go to state 425
 +
 +
-+state 425
++State 425
 +
 +  134 position: . position_not_place
 +  135         | . place
@@ -131025,7 +138680,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 +
 +
-+state 426
++State 426
 +
 +  137 position_not_place: position . '+' expr_pair
 +  138                   | position . '-' expr_pair
@@ -131036,7 +138691,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    '-'  shift, and go to state 198
 +
 +
-+state 427
++State 427
 +
 +  134 position: . position_not_place
 +  135         | . place
@@ -131192,7 +138847,7 @@ echo >>"$at_stdout"; $as_echo "@@ -1223,7 +1223,7 @@
 +    expr                   go to state 424
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131205,42 +138860,55 @@ $at_traceon; }
 # There is no "" around `wc` since some indent the result.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:1403"
+( $at_check_trace; $BISON_C_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/existing.at:1403"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:1403: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; 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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131251,13 +138919,13 @@ $at_traceon; }
   $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 'existing.at:1400' \
+#AT_STOP_266
+#AT_START_267
+at_fn_group_banner 267 'existing.at:1403' \
   "GNU pic (Groff 1.18.1) Grammar: Canonical LR(1)" "" 16
 at_xfail=no
 (
-  $as_echo "241. $at_setup_line: testing $at_desc ..."
+  $as_echo "267. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -131272,7 +138940,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -131816,9 +139484,8 @@ expr:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -131847,8 +139514,8 @@ _ATEOF
 # strings.
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: bison --report=all --defines -o input.c input.y"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: bison --report=all --defines -o input.c input.y"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; bison --report=all --defines -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -131857,14 +139524,14 @@ echo >>"$at_stderr"; $as_echo "input.y:470.11-48: warning: rule useless in parse
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -131872,15 +139539,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131916,9 +139583,9 @@ _ATEOF
   sed -n "$at_bison_check_first,$at_bison_check_last"p \
     at-bison-check-warnings >> experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/existing.at:1403: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1400"
+at_fn_check_prepare_notrace 'an embedded newline' "existing.at:1403"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -131926,7 +139593,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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131934,15 +139601,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=error" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 1 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131951,28 +139618,28 @@ $at_traceon; }
   # -Werror doesn't change the exit status when -Wnone or
   # --warnings=none is specified.
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y -Wnone -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/existing.at:1400: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --report=all --defines -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 --report=all --defines -o input.c input.y --warnings=none -Werror" "existing.at:1403"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --report=all --defines -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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -131981,9 +139648,9 @@ $at_traceon; }
 fi
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed -n 's/^state //p' input.output | tail -1"
-at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1400"
-( $at_check_trace; sed -n 's/^state //p' input.output | tail -1
+$as_echo "$at_srcdir/existing.at:1403: sed -n 's/^State //p' input.output | tail -1"
+at_fn_check_prepare_notrace 'a shell pipeline' "existing.at:1403"
+( $at_check_trace; sed -n 's/^State //p' input.output | tail -1
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -131991,7 +139658,7 @@ at_fn_diff_devnull "$at_stderr" || at_failed=:
 echo >>"$at_stdout"; $as_echo "4833
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132005,46 +139672,59 @@ $at_traceon; }
 #
 # There is no "" around `wc` since some indent the result.
 if test 32767 -lt `wc -l < input.c`; then
-  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic //'`
-  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic //'`
+  CFLAGS=`echo " $CFLAGS " | sed -e 's/ -pedantic / /'`
+  CXXFLAGS=`echo " $CXXFLAGS " | sed -e 's/ -pedantic / /'`
 fi
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "existing.at:1403"
+( $at_check_trace; $BISON_C_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/existing.at:1403"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/existing.at:1403: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "existing.at:1403"
 ( $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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/existing.at:1400: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "existing.at:1400"
+$as_echo "$at_srcdir/existing.at:1403: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "existing.at:1403"
 ( $at_check_trace; 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/existing.at:1400"
+at_fn_check_status 0 $at_status "$at_srcdir/existing.at:1403"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -132055,13 +139735,13 @@ $at_traceon; }
   $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:25' \
+#AT_STOP_267
+#AT_START_268
+at_fn_group_banner 268 'regression.at:25' \
   "Trivial grammars" "                               " 17
 at_xfail=no
 (
-  $as_echo "242. $at_setup_line: testing $at_desc ..."
+  $as_echo "268. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132076,7 +139756,7 @@ cat >input.y <<'_ATEOF'
 }
 
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 #define YYSTYPE int *
 %}
@@ -132142,15 +139822,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:43"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:43: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:43"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132178,6 +139858,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/regression.at:44: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:44"
+( $at_check_trace; $BISON_C_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:44"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/regression.at:44: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:44"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
@@ -132191,6 +139884,19 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
+$as_echo "$at_srcdir/regression.at:45: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:45"
+( $at_check_trace; $BISON_C_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:45"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/regression.at:45: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o -DYYDEBUG -c input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o -DYYDEBUG -c input.c " "regression.at:45"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o -DYYDEBUG -c input.c
@@ -132208,13 +139914,13 @@ $at_traceon; }
   $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:55' \
+#AT_STOP_268
+#AT_START_269
+at_fn_group_banner 269 'regression.at:55' \
   "YYSTYPE typedef" "                                " 17
 at_xfail=no
 (
-  $as_echo "243. $at_setup_line: testing $at_desc ..."
+  $as_echo "269. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132229,7 +139935,7 @@ cat >input.y <<'_ATEOF'
 }
 
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 typedef union { char const *val; } YYSTYPE;
 %}
@@ -132295,15 +140001,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:73"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:73: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:73"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132331,6 +140037,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/regression.at:74: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:74"
+( $at_check_trace; $BISON_C_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:74"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/regression.at:74: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:74"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
@@ -132348,13 +140067,13 @@ $at_traceon; }
   $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:85' \
+#AT_STOP_269
+#AT_START_270
+at_fn_group_banner 270 'regression.at:85' \
   "Early token definitions with --yacc" "            " 17
 at_xfail=no
 (
-  $as_echo "244. $at_setup_line: testing $at_desc ..."
+  $as_echo "270. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132372,7 +140091,7 @@ cat >input.y <<'_ATEOF'
 }
 
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 
@@ -132445,15 +140164,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:113"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:113: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:113"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132481,6 +140200,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/regression.at:114: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:114"
+( $at_check_trace; $BISON_C_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:114"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/regression.at:114: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:114"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
@@ -132498,13 +140230,13 @@ $at_traceon; }
   $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:125' \
+#AT_STOP_270
+#AT_START_271
+at_fn_group_banner 271 'regression.at:125' \
   "Early token definitions without --yacc" "         " 17
 at_xfail=no
 (
-  $as_echo "245. $at_setup_line: testing $at_desc ..."
+  $as_echo "271. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132523,7 +140255,7 @@ cat >input.y <<'_ATEOF'
 
 %{
 #include <stdio.h>
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 void print_my_token (void);
 %}
@@ -132600,15 +140332,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:158"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:158: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:158"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132636,6 +140368,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/regression.at:159: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:159"
+( $at_check_trace; $BISON_C_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:159"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/regression.at:159: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:159"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
@@ -132653,13 +140398,13 @@ $at_traceon; }
   $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:170' \
+#AT_STOP_271
+#AT_START_272
+at_fn_group_banner 272 'regression.at:170' \
   "Braces parsing" "                                 " 17
 at_xfail=no
 (
-  $as_echo "246. $at_setup_line: testing $at_desc ..."
+  $as_echo "272. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132725,15 +140470,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:182"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:182: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:182"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132779,13 +140524,13 @@ $at_traceon; }
   $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:194' \
+#AT_STOP_272
+#AT_START_273
+at_fn_group_banner 273 'regression.at:194' \
   "Duplicate string" "                               " 17
 at_xfail=no
 (
-  $as_echo "247. $at_setup_line: testing $at_desc ..."
+  $as_echo "273. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -132856,15 +140601,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:211"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:211: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:211"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -132892,10 +140637,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:211"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
   $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:222' \
+#AT_STOP_273
+#AT_START_274
+at_fn_group_banner 274 'regression.at:222' \
   "Rule Line Numbers" "                              " 17
 at_xfail=no
 (
-  $as_echo "248. $at_setup_line: testing $at_desc ..."
+  $as_echo "274. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133111,15 +140856,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:258"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:258: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:258"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -133190,7 +140935,7 @@ expr (7)
     on left: 3, on right: 4
 
 
-state 0
+State 0
 
     0 \$accept: . expr \$end
 
@@ -133202,7 +140947,7 @@ state 0
     \$@2   go to state 3
 
 
-state 1
+State 1
 
     2 expr: 'a' . \$@1 'b'
 
@@ -133211,42 +140956,42 @@ state 1
     \$@1  go to state 4
 
 
-state 2
+State 2
 
     0 \$accept: expr . \$end
 
     \$end  shift, and go to state 5
 
 
-state 3
+State 3
 
     4 expr: \$@2 . 'c'
 
     'c'  shift, and go to state 6
 
 
-state 4
+State 4
 
     2 expr: 'a' \$@1 . 'b'
 
     'b'  shift, and go to state 7
 
 
-state 5
+State 5
 
     0 \$accept: expr \$end .
 
     \$default  accept
 
 
-state 6
+State 6
 
     4 expr: \$@2 'c' .
 
     \$default  reduce using rule 4 (expr)
 
 
-state 7
+State 7
 
     2 expr: 'a' \$@1 'b' .
 
@@ -133262,13 +141007,13 @@ $at_traceon; }
   $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:368' \
+#AT_STOP_274
+#AT_START_275
+at_fn_group_banner 275 'regression.at:368' \
   "Mixing %token styles" "                           " 17
 at_xfail=no
 (
-  $as_echo "249. $at_setup_line: testing $at_desc ..."
+  $as_echo "275. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133334,15 +141079,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:380"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:380: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:380"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -133374,13 +141119,13 @@ $at_traceon; }
   $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:391' \
+#AT_STOP_275
+#AT_START_276
+at_fn_group_banner 276 'regression.at:391' \
   "Invalid inputs" "                                 " 17
 at_xfail=no
 (
-  $as_echo "250. $at_setup_line: testing $at_desc ..."
+  $as_echo "276. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133403,15 +141148,15 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:2.1: invalid character: '?'
-input.y:3.14: invalid character: '}'
-input.y:4.1: invalid character: '%'
-input.y:4.2: invalid character: '&'
-input.y:5.1-17: invalid directive: '%a-does-not-exist'
-input.y:6.1: invalid character: '%'
-input.y:6.2: invalid character: '-'
-input.y:7.1-8.0: missing '%}' at end of file
-input.y:7.1-8.0: syntax error, unexpected %{...%}
+echo >>"$at_stderr"; $as_echo "input.y:2.1: error: invalid character: '?'
+input.y:3.14: error: invalid character: '}'
+input.y:4.1: error: invalid character: '%'
+input.y:4.2: error: invalid character: '&'
+input.y:5.1-17: error: invalid directive: '%a-does-not-exist'
+input.y:6.1: error: invalid character: '%'
+input.y:6.2: error: invalid character: '-'
+input.y:7.1-8.0: error: missing '%}' at end of file
+input.y:7.1-8.0: error: syntax error, unexpected %{...%}
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -133425,13 +141170,13 @@ $at_traceon; }
   $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:418' \
+#AT_STOP_276
+#AT_START_277
+at_fn_group_banner 277 'regression.at:418' \
   "Invalid inputs with {}" "                         " 17
 at_xfail=no
 (
-  $as_echo "251. $at_setup_line: testing $at_desc ..."
+  $as_echo "277. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133454,7 +141199,7 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:3.1-15: syntax error, unexpected %initial-action, expecting {...}
+echo >>"$at_stderr"; $as_echo "input.y:3.1-15: error: syntax error, unexpected %initial-action, expecting {...}
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -133468,13 +141213,13 @@ $at_traceon; }
   $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:443' \
+#AT_STOP_277
+#AT_START_278
+at_fn_group_banner 278 'regression.at:443' \
   "Token definitions" "                              " 17
 at_xfail=no
 (
-  $as_echo "252. $at_setup_line: testing $at_desc ..."
+  $as_echo "278. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133492,7 +141237,7 @@ cat >input.y <<'_ATEOF'
 %{
 #include <stdlib.h>
 #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 %error-verbose
@@ -133509,9 +141254,8 @@ exp: "a" "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!";
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -133593,15 +141337,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:480"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/regression.at:480: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:480"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -133630,10 +141374,10 @@ at_fn_check_status 0 $at_status "$at_srcdir/regression.at:480"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -133749,16 +141493,244 @@ $at_traceon; }
 
   at_restore_special_files
 fi
+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:484: 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 -fcaret -o input.c input.y"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:484"
+( $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 -fcaret -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:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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 -fcaret -o input.c input.y" "regression.at:484"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -fcaret -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:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: \$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:484"
+( $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:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:484"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:484"
+$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:484: \$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:484"
+$as_echo "$at_srcdir/regression.at:484: bison -fcaret -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:484"
+( $at_check_trace; bison -fcaret -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:22.8-14: warning: symbol SPECIAL redeclared
+ %token SPECIAL \"\\\\\\'\\?\\\"\\a\\b\\f\\n\\r\\t\\v\\001\\201\\x001\\x000081??!\"
+        ^^^^^^^
+input.y:22.8-63: warning: symbol \"\\\\'?\\\"\\a\\b\\f\\n\\r\\t\\v\\001\\201\\001\\201??!\" used more than once as a literal string
+ %token SPECIAL \"\\\\\\'\\?\\\"\\a\\b\\f\\n\\r\\t\\v\\001\\201\\x001\\x000081??!\"
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+" | \
+  $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:484"
+$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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
+  at_save_special_files
+
+  # To avoid expanding it repeatedly, store specified stdout.
+  : >expout
+
+  # Run with -Werror.
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Werror" "regression.at:484"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:484"
+$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'
+input.y:22.8-14: warning: symbol SPECIAL redeclared
+ %token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
+        ^^^^^^^
+input.y:22.8-63: warning: symbol "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!" used more than once as a literal string
+ %token SPECIAL "\\\'\?\"\a\b\f\n\r\t\v\001\201\x001\x000081??!"
+        ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
+_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/regression.at:484: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+              stderr 1>&2"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:484"
+( $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/regression.at:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  # Now check --warnings=error.
+  cp stderr experr
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=error" "regression.at:484"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:484"
+$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/regression.at:484: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y -Wnone -Werror" "regression.at:484"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:484: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -fcaret -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 -fcaret -o input.c input.y --warnings=none -Werror" "regression.at:484"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -fcaret -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:484"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/regression.at:492: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:492"
+( $at_check_trace; $BISON_C_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:492"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:492: \$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:492"
 ( $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:484"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:492"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133772,28 +141744,28 @@ syntax error, unexpected "\\'?\"\a\b\f\n\r\t\v\001\201\001\201??!", expecting a
 _ATEOF
 
 { set +x
-$as_echo "$at_srcdir/regression.at:493:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:493"
+$as_echo "$at_srcdir/regression.at:501:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:501"
 ( $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:493"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:493: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "regression.at:493"
+$as_echo "$at_srcdir/regression.at:501: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:501"
 ( $at_check_trace; 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_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:493"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133802,13 +141774,13 @@ $at_traceon; }
   $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:503' \
+#AT_STOP_278
+#AT_START_279
+at_fn_group_banner 279 'regression.at:511' \
   "Characters Escapes" "                             " 17
 at_xfail=no
 (
-  $as_echo "253. $at_setup_line: testing $at_desc ..."
+  $as_echo "279. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133823,7 +141795,7 @@ cat >input.y <<'_ATEOF'
 }
 
 %{
-void yyerror (const char *msg);
+void yyerror ( const char *msg);
 int yylex (void);
 %}
 %%
@@ -133844,9 +141816,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:521: 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:529: 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:521"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:529"
 ( $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>&-
@@ -133854,29 +141826,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:521"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:521: 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:521"
+$as_echo "$at_srcdir/regression.at:529: 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:529"
 ( $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:521"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:521: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:529: \$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:521"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:529"
 ( $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
@@ -133885,25 +141857,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:521"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:521: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:529: \$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:521"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:529"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:521"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133911,29 +141883,42 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:521: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:521"
+$as_echo "$at_srcdir/regression.at:529: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:529"
 ( $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:521"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:529"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:522: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:522"
+$as_echo "$at_srcdir/regression.at:530: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:530"
+( $at_check_trace; $BISON_C_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:530"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:530: \$CC \$CFLAGS \$CPPFLAGS -c -o input.o input.c "
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS -c -o input.o input.c " "regression.at:530"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS -c -o input.o input.c
 ) >>"$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:522"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:530"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -133941,13 +141926,13 @@ $at_traceon; }
   $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:536' \
+#AT_STOP_279
+#AT_START_280
+at_fn_group_banner 280 'regression.at:544' \
   "Web2c Report" "                                   " 17
 at_xfail=no
 (
-  $as_echo "254. $at_setup_line: testing $at_desc ..."
+  $as_echo "280. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -133981,9 +141966,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:561: 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:569: 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 -v input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:561"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:569"
 ( $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 -v input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -133991,29 +141976,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:561"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:569"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:561: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v 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 -v input.y" "regression.at:561"
+$as_echo "$at_srcdir/regression.at:569: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v 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 -v input.y" "regression.at:569"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v 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:561"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:569"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:561: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:569: \$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:561"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:569"
 ( $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
@@ -134022,25 +142007,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:561"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:569"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:561: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:569: \$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:561"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:569"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:561"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:569"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134048,22 +142033,22 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:561: bison -v input.y"
-at_fn_check_prepare_trace "regression.at:561"
+$as_echo "$at_srcdir/regression.at:569: bison -v input.y"
+at_fn_check_prepare_trace "regression.at:569"
 ( $at_check_trace; bison -v 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:561"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:569"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:562: cat input.output"
-at_fn_check_prepare_trace "regression.at:562"
+$as_echo "$at_srcdir/regression.at:570: cat input.output"
+at_fn_check_prepare_trace "regression.at:570"
 ( $at_check_trace; cat input.output
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -134107,7 +142092,7 @@ CONST_DEC (10)
     on left: 4, on right: 5
 
 
-state 0
+State 0
 
     0 \$accept: . CONST_DEC_PART \$end
 
@@ -134119,14 +142104,14 @@ state 0
     \$@1             go to state 4
 
 
-state 1
+State 1
 
     0 \$accept: CONST_DEC_PART . \$end
 
     \$end  shift, and go to state 5
 
 
-state 2
+State 2
 
     1 CONST_DEC_PART: CONST_DEC_LIST .
     3 CONST_DEC_LIST: CONST_DEC_LIST . CONST_DEC
@@ -134138,63 +142123,63 @@ state 2
     \$@1        go to state 4
 
 
-state 3
+State 3
 
     2 CONST_DEC_LIST: CONST_DEC .
 
     \$default  reduce using rule 2 (CONST_DEC_LIST)
 
 
-state 4
+State 4
 
     5 CONST_DEC: \$@1 . undef_id_tok '=' const_id_tok ';'
 
     undef_id_tok  shift, and go to state 7
 
 
-state 5
+State 5
 
     0 \$accept: CONST_DEC_PART \$end .
 
     \$default  accept
 
 
-state 6
+State 6
 
     3 CONST_DEC_LIST: CONST_DEC_LIST CONST_DEC .
 
     \$default  reduce using rule 3 (CONST_DEC_LIST)
 
 
-state 7
+State 7
 
     5 CONST_DEC: \$@1 undef_id_tok . '=' const_id_tok ';'
 
     '='  shift, and go to state 8
 
 
-state 8
+State 8
 
     5 CONST_DEC: \$@1 undef_id_tok '=' . const_id_tok ';'
 
     const_id_tok  shift, and go to state 9
 
 
-state 9
+State 9
 
     5 CONST_DEC: \$@1 undef_id_tok '=' const_id_tok . ';'
 
     ';'  shift, and go to state 10
 
 
-state 10
+State 10
 
     5 CONST_DEC: \$@1 undef_id_tok '=' const_id_tok ';' .
 
     \$default  reduce using rule 5 (CONST_DEC)
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:562"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:570"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134203,13 +142188,13 @@ $at_traceon; }
   $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:713' \
+#AT_STOP_280
+#AT_START_281
+at_fn_group_banner 281 'regression.at:721' \
   "Web2c Actions" "                                  " 17
 at_xfail=no
 (
-  $as_echo "255. $at_setup_line: testing $at_desc ..."
+  $as_echo "281. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -134231,9 +142216,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:726: 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:734: 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 -v -o input.c input.y"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:726"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:734"
 ( $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 -v -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -134241,29 +142226,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:726"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:734"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/regression.at:726: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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 -v -o input.c input.y" "regression.at:726"
+$as_echo "$at_srcdir/regression.at:734: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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 -v -o input.c input.y" "regression.at:734"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -v -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:726"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:734"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:726: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:734: \$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:726"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:734"
 ( $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
@@ -134272,25 +142257,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:726"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:734"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:726: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:734: \$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:726"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:734"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:726"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:734"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134298,15 +142283,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:726: bison -v -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:726"
+$as_echo "$at_srcdir/regression.at:734: bison -v -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:734"
 ( $at_check_trace; bison -v -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:726"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:734"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134316,8 +142301,8 @@ $at_traceon; }
 sed -n 's/  *$//;/^static const.*\[\] =/,/^}/p' input.c >tables.c
 
 { set +x
-$as_echo "$at_srcdir/regression.at:731: cat tables.c"
-at_fn_check_prepare_trace "regression.at:731"
+$as_echo "$at_srcdir/regression.at:739: cat tables.c"
+at_fn_check_prepare_trace "regression.at:739"
 ( $at_check_trace; cat tables.c
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -134416,7 +142401,7 @@ static const yytype_uint8 yystos[] =
 };
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:731"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:739"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134425,13 +142410,13 @@ $at_traceon; }
   $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:928' \
+#AT_STOP_281
+#AT_START_282
+at_fn_group_banner 282 'regression.at:936' \
   "Dancer " "                                        " 17
 at_xfail=no
 (
-  $as_echo "256. $at_setup_line: testing $at_desc ..."
+  $as_echo "282. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -134446,7 +142431,7 @@ cat >dancer.y <<'_ATEOF'
 
 %code provides
 {
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -134496,9 +142481,8 @@ member: STRING
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -134531,9 +142515,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:928: 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:936: 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:928"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:936"
 ( $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>&-
@@ -134541,29 +142525,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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:936: 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:936"
 ( $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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:928: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:936: \$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:928"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:936"
 ( $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
@@ -134572,25 +142556,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:928: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:936: \$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:928"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:936"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134598,49 +142582,62 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:928: bison -o dancer.c dancer.y"
-at_fn_check_prepare_trace "regression.at:928"
+$as_echo "$at_srcdir/regression.at:936: bison -o dancer.c dancer.y"
+at_fn_check_prepare_trace "regression.at:936"
 ( $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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:936: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:936"
+( $at_check_trace; $BISON_C_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:936"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:936: \$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:936"
 ( $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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:928:  \$PREPARSER ./dancer"
-at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:928"
+$as_echo "$at_srcdir/regression.at:936:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:936"
 ( $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:928"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:936: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:936"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -134649,7 +142646,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:928"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:936"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134659,13 +142656,13 @@ $at_traceon; }
   $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:929' \
+#AT_STOP_282
+#AT_START_283
+at_fn_group_banner 283 'regression.at:937' \
   "Dancer %glr-parser" "                             " 17
 at_xfail=no
 (
-  $as_echo "257. $at_setup_line: testing $at_desc ..."
+  $as_echo "283. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -134680,7 +142677,7 @@ cat >dancer.y <<'_ATEOF'
 
 %code provides
 {
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 %glr-parser
@@ -134730,9 +142727,8 @@ member: STRING
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -134765,9 +142761,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:937: 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:937"
 ( $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>&-
@@ -134775,29 +142771,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:937"
 $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:937: 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:937"
 ( $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:937"
 $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:937: \$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:937"
 ( $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
@@ -134806,25 +142802,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:937"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:929: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:937: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:937"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:937"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134832,49 +142828,62 @@ $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:937: bison -o dancer.c dancer.y"
+at_fn_check_prepare_trace "regression.at:937"
 ( $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:937"
 $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:937: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:937"
+( $at_check_trace; $BISON_C_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:937"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:937: \$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:937"
 ( $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:937"
 $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:937:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:937"
 ( $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:937"
 $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:937: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:937"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -134883,7 +142892,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:937"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -134893,13 +142902,13 @@ $at_traceon; }
   $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:930' \
+#AT_STOP_283
+#AT_START_284
+at_fn_group_banner 284 'regression.at:938' \
   "Dancer %skeleton \"lalr1.cc\"" "                    " 17
 at_xfail=no
 (
-  $as_echo "258. $at_setup_line: testing $at_desc ..."
+  $as_echo "284. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -135007,9 +143016,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 \\
+$as_echo "$at_srcdir/regression.at:938: 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:930"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:938"
 ( $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>&-
@@ -135017,29 +143026,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:938"
 $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.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"
+$as_echo "$at_srcdir/regression.at:938: 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:938"
 ( $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:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:938"
 $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:938: \$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:938"
 ( $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
@@ -135048,25 +143057,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:938"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:930: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:938: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:938"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:938"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135074,63 +143083,63 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:930: bison -o dancer.cc dancer.y"
-at_fn_check_prepare_trace "regression.at:930"
+$as_echo "$at_srcdir/regression.at:938: bison -o dancer.cc dancer.y"
+at_fn_check_prepare_trace "regression.at:938"
 ( $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:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:938"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:930: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:930"
+$as_echo "$at_srcdir/regression.at:938: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:938"
 ( $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:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:938"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:938: \$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:938"
 ( $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:930"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:938"
 $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:938:  \$PREPARSER ./dancer"
+at_fn_check_prepare_dynamic " $PREPARSER ./dancer" "regression.at:938"
 ( $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:938"
 $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:938: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:938"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -135139,7 +143148,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:938"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135149,13 +143158,13 @@ $at_traceon; }
   $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:1012' \
+#AT_STOP_284
+#AT_START_285
+at_fn_group_banner 285 'regression.at:1020' \
   "Expecting two tokens " "                          " 17
 at_xfail=no
 (
-  $as_echo "259. $at_setup_line: testing $at_desc ..."
+  $as_echo "285. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -135172,7 +143181,7 @@ cat >expect2.y <<'_ATEOF'
 static int yylex (void);
 #include <stdio.h>
 #include <stdlib.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 %}
 
 %defines
@@ -135192,9 +143201,8 @@ t: A | B;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -135228,9 +143236,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:1012: 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:1020: 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:1012"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1020"
 ( $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>&-
@@ -135238,29 +143246,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:1012"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1020"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1020: 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:1020"
 ( $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:1012"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1020"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1012: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1020: \$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:1012"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1020"
 ( $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
@@ -135269,25 +143277,244 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1012"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1020"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1012: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1020: \$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:1012"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1020"
 ( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:1020"
+$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:1020: bison -o expect2.c expect2.y"
+at_fn_check_prepare_trace "regression.at:1020"
+( $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:1020"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+   { set +x
+$as_echo "$at_srcdir/regression.at:1020: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1020"
+( $at_check_trace; $BISON_C_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:1020"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1020: \$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:1020"
+( $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:1020"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1020:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1020"
+( $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:1020"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1020: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1020"
+( $at_check_trace; sed >&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 "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:1020"
+$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_285
+#AT_START_286
+at_fn_group_banner 286 'regression.at:1021' \
+  "Expecting two tokens %glr-parser" "               " 17
+at_xfail=no
+(
+  $as_echo "286. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
+cat >expect2.y <<'_ATEOF'
+%code top {
+#include <config.h>
+/* We don't need perfect functions for these tests. */
+#undef malloc
+#undef memcmp
+#undef realloc
+}
+
+%{
+static int yylex (void);
+#include <stdio.h>
+#include <stdlib.h>
+static void yyerror ( const char *msg);
+%}
+%glr-parser
+%defines
+%error-verbose
+%token A 1000
+%token B
+
+%%
+program: /* empty */
+ | program e ';'
+ | program error ';';
+
+e: e '+' t | t;
+t: A | B;
+
+%%
+#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 int const tokens[] =
+    {
+      1000, '+', '+', -1
+    };
+  static size_t toknum;
+
+  assert (toknum < sizeof tokens / sizeof *tokens);
+  return tokens[toknum++];
+}
+
+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/regression.at:1021: 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:1021"
+( $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:1021"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/regression.at:1021: 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:1021"
+( $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:1021"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1021: \$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:1021"
+( $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:1012"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1021"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/regression.at:1021: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1021"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+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:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135295,256 +143522,62 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1012: bison -o expect2.c expect2.y"
-at_fn_check_prepare_trace "regression.at:1012"
+$as_echo "$at_srcdir/regression.at:1021: bison -o expect2.c expect2.y"
+at_fn_check_prepare_trace "regression.at:1021"
 ( $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:1012"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
    { set +x
-$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:1012"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$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:1012"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$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
-$at_check_filter
-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:1012"
-$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_259
-#AT_START_260
-at_fn_group_banner 260 'regression.at:1013' \
-  "Expecting two tokens %glr-parser" "               " 17
-at_xfail=no
-(
-  $as_echo "260. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
-
-cat >expect2.y <<'_ATEOF'
-%code top {
-#include <config.h>
-/* We don't need perfect functions for these tests. */
-#undef malloc
-#undef memcmp
-#undef realloc
-}
-
-%{
-static int yylex (void);
-#include <stdio.h>
-#include <stdlib.h>
-static void yyerror (const char *msg);
-%}
-%glr-parser
-%defines
-%error-verbose
-%token A 1000
-%token B
-
-%%
-program: /* empty */
- | program e ';'
- | program error ';';
-
-e: e '+' t | t;
-t: A | B;
-
-%%
-#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 int const tokens[] =
-    {
-      1000, '+', '+', -1
-    };
-  static size_t toknum;
-
-  assert (toknum < sizeof tokens / sizeof *tokens);
-  return tokens[toknum++];
-}
-
-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/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: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>&-
-at_status=$? at_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:1013"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$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
+$as_echo "$at_srcdir/regression.at:1021: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1021"
+( $at_check_trace; $BISON_C_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:1013"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$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: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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-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:1013"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
-  { set +x
-$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: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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-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:1013"
-$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: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:1013"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1021: \$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:1021"
 ( $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:1013"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1013:  \$PREPARSER ./expect2"
-at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1013"
+$as_echo "$at_srcdir/regression.at:1021:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1021"
 ( $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:1013"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1021: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1021"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -135553,7 +143586,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:1013"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1021"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135563,13 +143596,13 @@ $at_traceon; }
   $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:1014' \
+#AT_STOP_286
+#AT_START_287
+at_fn_group_banner 287 'regression.at:1022' \
   "Expecting two tokens %skeleton \"lalr1.cc\"" "      " 17
 at_xfail=no
 (
-  $as_echo "261. $at_setup_line: testing $at_desc ..."
+  $as_echo "287. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -135645,9 +143678,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:1022: 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:1014"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1022"
 ( $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>&-
@@ -135655,29 +143688,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:1022"
 $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.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"
+$as_echo "$at_srcdir/regression.at:1022: 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:1022"
 ( $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:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1022"
 $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:1022: \$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:1022"
 ( $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
@@ -135686,25 +143719,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1022"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1022: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1022"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1022"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135712,63 +143745,63 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1014: bison -o expect2.cc expect2.y"
-at_fn_check_prepare_trace "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1022: bison -o expect2.cc expect2.y"
+at_fn_check_prepare_trace "regression.at:1022"
 ( $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:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1022"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1014: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1014"
+$as_echo "$at_srcdir/regression.at:1022: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "regression.at:1022"
 ( $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:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1022"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1022: \$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:1022"
 ( $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:1014"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1022"
 $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:1022:  \$PREPARSER ./expect2"
+at_fn_check_prepare_dynamic " $PREPARSER ./expect2" "regression.at:1022"
 ( $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:1022"
 $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:1022: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1022"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -135777,7 +143810,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:1022"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135787,13 +143820,13 @@ $at_traceon; }
   $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:1022' \
+#AT_STOP_287
+#AT_START_288
+at_fn_group_banner 288 'regression.at:1030' \
   "Braced code in declaration in rules section" "    " 17
 at_xfail=no
 (
-  $as_echo "262. $at_setup_line: testing $at_desc ..."
+  $as_echo "288. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -135811,7 +143844,7 @@ cat >input.y <<'_ATEOF'
 
 %{
 #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -135833,9 +143866,8 @@ start:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -135869,9 +143901,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:1061: 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:1069: 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:1061"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1069"
 ( $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>&-
@@ -135879,29 +143911,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:1061"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1069"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1069: 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:1069"
 ( $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:1061"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1069"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1061: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1069: \$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:1061"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1069"
 ( $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
@@ -135910,25 +143942,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1061"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1069"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1061: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1069: \$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:1061"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1069"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1061"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1069"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -135936,35 +143968,48 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1061: bison -t -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1061"
+$as_echo "$at_srcdir/regression.at:1069: bison -t -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1069"
 ( $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:1061"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1069"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1070: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1070"
+( $at_check_trace; $BISON_C_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:1070"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1070: \$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:1070"
 ( $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:1062"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1070"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1063:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1063"
+$as_echo "$at_srcdir/regression.at:1071:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1071"
 ( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -135973,13 +144018,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:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1071"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1071: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1071"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -136000,7 +144045,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:1063"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1071"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136010,13 +144055,13 @@ $at_traceon; }
   $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:1089' \
+#AT_STOP_288
+#AT_START_289
+at_fn_group_banner 289 'regression.at:1097' \
   "String alias declared after use" "                " 17
 at_xfail=no
 (
-  $as_echo "263. $at_setup_line: testing $at_desc ..."
+  $as_echo "289. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136038,9 +144083,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:1102: 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:1110: 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:1102"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1110"
 ( $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>&-
@@ -136048,29 +144093,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:1102"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1110"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1110: 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:1110"
 ( $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:1102"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1110"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1102: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1110: \$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:1102"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1110"
 ( $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
@@ -136079,25 +144124,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1102"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1110"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1102: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1110: \$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:1102"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1110"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1102"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1110"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136105,15 +144150,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1102: bison -t -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1102"
+$as_echo "$at_srcdir/regression.at:1110: bison -t -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1110"
 ( $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:1102"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1110"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136123,13 +144168,13 @@ $at_traceon; }
   $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:1112' \
+#AT_STOP_289
+#AT_START_290
+at_fn_group_banner 290 'regression.at:1120' \
   "Extra lookahead sets in report" "                 " 17
 at_xfail=no
 (
-  $as_echo "264. $at_setup_line: testing $at_desc ..."
+  $as_echo "290. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136153,9 +144198,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:1127: 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:1135: 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:1127"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1135"
 ( $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>&-
@@ -136163,29 +144208,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:1127"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1135"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1135: 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:1135"
 ( $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:1127"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1135"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1127: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1135: \$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:1127"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1135"
 ( $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
@@ -136194,25 +144239,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1127"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1135"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1127: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1135: \$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:1127"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1135"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1127"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1135"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136220,28 +144265,28 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1127: bison --report=all input.y"
-at_fn_check_prepare_trace "regression.at:1127"
+$as_echo "$at_srcdir/regression.at:1135: bison --report=all input.y"
+at_fn_check_prepare_trace "regression.at:1135"
 ( $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:1127"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1135"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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
+$as_echo "$at_srcdir/regression.at:1136: 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:1136"
+( $at_check_trace; sed -n '/^State 1$/,/^State 2$/p' input.output
 ) >>"$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 "state 1
+echo >>"$at_stdout"; $as_echo "State 1
 
     2 start: 'a' . a 'a'
     3 a: . 'a'
@@ -136254,10 +144299,10 @@ echo >>"$at_stdout"; $as_echo "state 1
     a  go to state 5
 
 
-state 2
+State 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1128"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1136"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136266,13 +144311,13 @@ $at_traceon; }
   $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 'regression.at:1153' \
+#AT_STOP_290
+#AT_START_291
+at_fn_group_banner 291 'regression.at:1161' \
   "Token number in precedence declaration" "         " 17
 at_xfail=no
 (
-  $as_echo "265. $at_setup_line: testing $at_desc ..."
+  $as_echo "291. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136290,7 +144335,7 @@ cat >input.y <<'_ATEOF'
 
 %{
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -136314,9 +144359,8 @@ sr_conflict:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -136349,9 +144393,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:1193: 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:1201: 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:1193"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1201"
 ( $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>&-
@@ -136359,29 +144403,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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1201: 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:1201"
 ( $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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1193: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1201: \$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:1193"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1201"
 ( $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
@@ -136390,25 +144434,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1193: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1201: \$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:1193"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1201"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136416,8 +144460,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1193: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1193"
+$as_echo "$at_srcdir/regression.at:1201: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1201"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -136427,14 +144471,14 @@ 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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $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
+# 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 "$POSIXLY_CORRECT_IS_EXPORTED" = false; then
   at_save_special_files
 
   # To avoid expanding it repeatedly, store specified stdout.
@@ -136442,15 +144486,15 @@ if test -z "${POSIXLY_CORRECT+set}"; then
 
   # Run with -Werror.
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1201: 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:1201"
 ( $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:1193"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136487,9 +144531,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:1193: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
+$as_echo "$at_srcdir/regression.at:1201: sed 's,.*/\\(bison: warnings being treated as errors\\)\$,\\1,' \\
               stderr 1>&2"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1193"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1201"
 ( $at_check_trace; sed 's,.*/\(bison: warnings being treated as errors\)$,\1,' \
               stderr 1>&2
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -136497,7 +144541,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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136505,15 +144549,15 @@ $at_traceon; }
   # Now check --warnings=error.
   cp stderr experr
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1201: 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:1201"
 ( $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:1193"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136522,28 +144566,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: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"
+$as_echo "$at_srcdir/regression.at:1201: 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:1201"
 ( $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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1201: 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:1201"
 ( $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:1193"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1201"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136551,41 +144595,54 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1205: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1205"
+( $at_check_trace; $BISON_C_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:1205"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1205: \$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:1205"
 ( $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:1197"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1205"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1198:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1198"
+$as_echo "$at_srcdir/regression.at:1206:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1206"
 ( $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:1198"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1206: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1206"
 ( $at_check_trace; 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:1198"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1206"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136595,13 +144652,13 @@ $at_traceon; }
   $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 'regression.at:1211' \
+#AT_STOP_291
+#AT_START_292
+at_fn_group_banner 292 'regression.at:1219' \
   "parse-gram.y: LALR = IELR" "                      " 17
 at_xfail=no
 (
-  $as_echo "266. $at_setup_line: testing $at_desc ..."
+  $as_echo "292. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136614,9 +144671,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:1216: 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:1224: 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:1216"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1224"
 ( $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>&-
@@ -136624,29 +144681,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:1216"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1224: 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:1224"
 ( $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:1216"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1216: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1224: \$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:1216"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1224"
 ( $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
@@ -136655,25 +144712,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1216"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1216: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1224: \$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:1216"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1224"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1216"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136681,15 +144738,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1216: bison -o input.c -Dlr.type=lalr input.y"
-at_fn_check_prepare_trace "regression.at:1216"
+$as_echo "$at_srcdir/regression.at:1224: bison -o input.c -Dlr.type=lalr input.y"
+at_fn_check_prepare_trace "regression.at:1224"
 ( $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:1216"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1224"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136702,9 +144759,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:1219: 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:1227: 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:1219"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1227"
 ( $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>&-
@@ -136712,31 +144769,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:1219"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1227"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1227: 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:1227"
 ( $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:1219"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1227"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1219: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1227: \$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:1219"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1227"
 ( $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
@@ -136745,26 +144802,26 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1219"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1227"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1219: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1227: \$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:1219"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1227"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1219"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1227"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
@@ -136773,15 +144830,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1219: bison -o input.c -Dlr.type=ielr input.y"
-at_fn_check_prepare_trace "regression.at:1219"
+$as_echo "$at_srcdir/regression.at:1227: bison -o input.c -Dlr.type=ielr input.y"
+at_fn_check_prepare_trace "regression.at:1227"
 ( $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:1219"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1227"
 $at_failed && at_fn_log_failure  \
 "lalr.c"
 $at_traceon; }
@@ -136790,15 +144847,15 @@ $at_traceon; }
 mv input.c ielr.c
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1222: diff lalr.c ielr.c"
-at_fn_check_prepare_trace "regression.at:1222"
+$as_echo "$at_srcdir/regression.at:1230: diff lalr.c ielr.c"
+at_fn_check_prepare_trace "regression.at:1230"
 ( $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:1222"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1230"
 $at_failed && at_fn_log_failure  \
 "lalr.c" \
 "ielr.c"
@@ -136809,13 +144866,13 @@ $at_traceon; }
   $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 'regression.at:1232' \
+#AT_STOP_292
+#AT_START_293
+at_fn_group_banner 293 'regression.at:1240' \
   "%error-verbose and YYSTACK_USE_ALLOCA" "          " 17
 at_xfail=no
 (
-  $as_echo "267. $at_setup_line: testing $at_desc ..."
+  $as_echo "293. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -136831,7 +144888,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   #define YYSTACK_USE_ALLOCA 1
 }
@@ -136871,9 +144928,8 @@ syntax_error:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 /* Induce two syntax error messages (which requires full error
@@ -136908,9 +144964,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:1288: 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:1296: 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:1288"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1296"
 ( $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>&-
@@ -136918,29 +144974,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:1288"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1296: 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:1296"
 ( $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:1288"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1288: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1296: \$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:1288"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1296"
 ( $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
@@ -136949,25 +145005,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1288"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1288: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1296: \$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:1288"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1296"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1288"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -136975,48 +145031,61 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1288: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1288"
+$as_echo "$at_srcdir/regression.at:1296: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1296"
 ( $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:1288"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1296"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1297: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1297"
+( $at_check_trace; $BISON_C_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:1297"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1297: \$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:1297"
 ( $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:1289"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1297"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1290:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1290"
+$as_echo "$at_srcdir/regression.at:1298:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1298"
 ( $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:1290"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1298"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1298: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1298"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -137026,7 +145095,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:1290"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1298"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137036,13 +145105,13 @@ $at_traceon; }
   $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 'regression.at:1311' \
+#AT_STOP_293
+#AT_START_294
+at_fn_group_banner 294 'regression.at:1319' \
   "%error-verbose overflow" "                        " 17
 at_xfail=no
 (
-  $as_echo "268. $at_setup_line: testing $at_desc ..."
+  $as_echo "294. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -137057,7 +145126,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 
   /* This prevents this test case from having to induce error messages
@@ -137127,9 +145196,8 @@ syntax_error2:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 /* Induce two syntax error messages (which requires full error
@@ -137166,9 +145234,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:1398: 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:1406: 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:1398"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1406"
 ( $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>&-
@@ -137176,29 +145244,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:1398"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1406: 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:1406"
 ( $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:1398"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1398: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1406: \$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:1398"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1406"
 ( $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
@@ -137207,25 +145275,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1398"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1398: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1406: \$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:1398"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1406"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1398"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137233,15 +145301,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1398: bison -o input.c input.y"
-at_fn_check_prepare_trace "regression.at:1398"
+$as_echo "$at_srcdir/regression.at:1406: bison -o input.c input.y"
+at_fn_check_prepare_trace "regression.at:1406"
 ( $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:1398"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1406"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137253,35 +145321,48 @@ $at_traceon; }
 # as much sense.  We ignore the warnings.
 CFLAGS="$NO_WERROR_CFLAGS"
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1413: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1413"
+( $at_check_trace; $BISON_C_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:1413"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1413: \$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:1413"
 ( $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:1405"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1413"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1407:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1407"
+$as_echo "$at_srcdir/regression.at:1415:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1415"
 ( $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:1407"
+at_fn_check_status 2 $at_status "$at_srcdir/regression.at:1415"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1415: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1415"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -137292,7 +145373,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:1407"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1415"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137302,13 +145383,13 @@ $at_traceon; }
   $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 'regression.at:1421' \
+#AT_STOP_294
+#AT_START_295
+at_fn_group_banner 295 'regression.at:1429' \
   "LAC: Exploratory stack" "                         " 17
 at_xfail=no
 (
-  $as_echo "269. $at_setup_line: testing $at_desc ..."
+  $as_echo "295. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -137329,7 +145410,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (void);
 }
 
@@ -137353,9 +145434,8 @@ C: /*empty*/ { printf ("consistent default reduction\n"); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -137381,11 +145461,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:1500: 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:1508: 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:1500"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
 ( $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 \
@@ -137395,15 +145475,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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 \\
+$as_echo "$at_srcdir/regression.at:1508: 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:1500"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
 ( $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
@@ -137412,16 +145492,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1500: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1508: \$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:1500"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1508"
 ( $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
@@ -137430,25 +145510,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1500: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1508: \$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:1500"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1508"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137456,10 +145536,10 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1500: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1508: 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:1500"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -137470,47 +145550,60 @@ 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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1508: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1508"
+( $at_check_trace; $BISON_C_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:1508"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1508: \$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:1508"
 ( $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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1508:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1508"
 ( $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:1500"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1508: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1508"
 ( $at_check_trace; 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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137519,8 +145612,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:1500: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1500"
+$as_echo "$at_srcdir/regression.at:1508: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1508"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -137529,7 +145622,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137537,10 +145630,10 @@ $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:1500: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1508: \$PERL -0777 -ne 'print s/inconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
-( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
+( $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
@@ -137548,7 +145641,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137556,10 +145649,10 @@ $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:1500: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1508: \$PERL -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
-( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
+( $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
@@ -137567,7 +145660,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137575,10 +145668,10 @@ $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:1500: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+$as_echo "$at_srcdir/regression.at:1508: \$PERL -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1500"
-( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1508"
+( $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
@@ -137586,7 +145679,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:1500"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1508"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137608,7 +145701,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *);
 }
 
@@ -137632,9 +145725,8 @@ C: /*empty*/ { printf ("consistent default reduction\n"); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -137661,11 +145753,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:1501: 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:1509: 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:1501"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
 ( $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 \
@@ -137675,15 +145767,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$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 \\
+$as_echo "$at_srcdir/regression.at:1509: 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:1501"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
 ( $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
@@ -137692,16 +145784,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1501: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1509: \$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:1501"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1509"
 ( $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
@@ -137710,25 +145802,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1501: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1509: \$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:1501"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1509"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137736,10 +145828,10 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1501: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1509: 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:1501"
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -137750,47 +145842,60 @@ 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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1509: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1509"
+( $at_check_trace; $BISON_C_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:1509"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1509: \$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:1509"
 ( $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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1509:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1509"
 ( $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:1501"
+at_fn_check_status 1 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$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"
+$as_echo "$at_srcdir/regression.at:1509: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1509"
 ( $at_check_trace; 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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137799,8 +145904,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:1501: grep 'syntax error,' stderr.txt"
-at_fn_check_prepare_trace "regression.at:1501"
+$as_echo "$at_srcdir/regression.at:1509: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1509"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -137809,7 +145914,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137817,10 +145922,10 @@ $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:1501: perl -0777 -ne 'print s/inconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1509: \$PERL -0777 -ne 'print s/inconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
-( $at_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
+( $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
@@ -137828,7 +145933,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137836,10 +145941,10 @@ $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:1501: perl -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
+$as_echo "$at_srcdir/regression.at:1509: \$PERL -0777 -ne 'print s/\\bconsistent default reduction//g;' \\
            < stdout.txt || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
-( $at_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
+( $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
@@ -137847,7 +145952,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137855,10 +145960,10 @@ $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:1501: perl -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
+$as_echo "$at_srcdir/regression.at:1509: \$PERL -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1501"
-( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1509"
+( $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
@@ -137866,7 +145971,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:1501"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1509"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -137888,7 +145993,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (void);
 }
 
@@ -137912,9 +146017,8 @@ C: /*empty*/ { printf ("consistent default reduction\n"); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -137940,11 +146044,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:1510: 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:1510"
 ( $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 \
@@ -137954,15 +146058,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:1510"
 $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:1510: 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:1510"
 ( $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
@@ -137971,16 +146075,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:1510"
 $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:1510: \$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:1510"
 ( $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
@@ -137989,25 +146093,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1502: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1510: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1510"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138015,10 +146119,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:1510: 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:1510"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -138029,47 +146133,60 @@ 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:1510"
 $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:1510: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1510"
+( $at_check_trace; $BISON_C_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:1510"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1510: \$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:1510"
 ( $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:1510"
 $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:1510:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1510"
 ( $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:1510"
 $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:1510: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1510"
 ( $at_check_trace; 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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138078,8 +146195,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:1510: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1510"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -138088,7 +146205,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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138096,10 +146213,10 @@ $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:1510: \$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_check_trace; perl -0777 -ne 'print s/inconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1510"
+( $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
@@ -138107,7 +146224,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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138115,10 +146232,10 @@ $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:1510: \$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_check_trace; perl -0777 -ne 'print s/\bconsistent default reduction//g;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1510"
+( $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
@@ -138126,7 +146243,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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138134,10 +146251,10 @@ $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:1510: \$PERL -0777 -ne 'print s/\\(realloc//g;' < stderr.txt \\
            || exit 77"
-at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1502"
-( $at_check_trace; perl -0777 -ne 'print s/\(realloc//g;' < stderr.txt \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1510"
+( $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
@@ -138145,7 +146262,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:1510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138167,7 +146284,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   int yylex (YYSTYPE *);
 }
 
@@ -138191,9 +146308,8 @@ C: /*empty*/ { printf ("consistent default reduction\n"); } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -138220,11 +146336,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:1511: 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:1511"
 ( $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 \
@@ -138234,15 +146350,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:1511"
 $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:1511: 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:1511"
 ( $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
@@ -138251,16 +146367,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:1511"
 $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:1511: \$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:1511"
 ( $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
@@ -138269,25 +146385,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1503: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1511: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1511"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138295,10 +146411,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:1511: 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:1511"
 ( $at_check_trace; bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \
                  -Dparse.lac.memory-trace=full \
                  -t -o input.c input.y
@@ -138309,47 +146425,60 @@ 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:1511"
 $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:1511: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1511"
+( $at_check_trace; $BISON_C_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:1511"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1511: \$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:1511"
 ( $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:1511"
 $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:1511:  \$PREPARSER ./input > stdout.txt 2> stderr.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./input > stdout.txt 2> stderr.txt" "regression.at:1511"
 ( $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:1511"
 $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:1511: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1511"
 ( $at_check_trace; 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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138358,8 +146487,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:1511: grep 'syntax error,' stderr.txt"
+at_fn_check_prepare_trace "regression.at:1511"
 ( $at_check_trace; grep 'syntax error,' stderr.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -138368,7 +146497,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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138376,10 +146505,10 @@ $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:1511: \$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;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1511"
+( $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
@@ -138387,7 +146516,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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138395,10 +146524,10 @@ $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:1511: \$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;' \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1511"
+( $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
@@ -138406,7 +146535,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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138414,10 +146543,10 @@ $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:1511: \$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 \
+at_fn_check_prepare_notrace 'an embedded newline' "regression.at:1511"
+( $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
@@ -138425,7 +146554,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:1511"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138439,13 +146568,13 @@ $at_traceon; }
   $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' \
+#AT_STOP_295
+#AT_START_296
+at_fn_group_banner 296 'regression.at:1523' \
   "LAC: Memory exhaustion" "                         " 17
 at_xfail=no
 (
-  $as_echo "270. $at_setup_line: testing $at_desc ..."
+  $as_echo "296. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -138464,7 +146593,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   #define YYMAXDEPTH 8
 }
@@ -138480,9 +146609,8 @@ A: /*empty*/ | 'a' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -138514,10 +146642,10 @@ 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:1554: 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:1562: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1562"
 ( $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
@@ -138526,14 +146654,14 @@ at_status=$? at_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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $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 \\
+$as_echo "$at_srcdir/regression.at:1562: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1562"
 ( $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>&-
@@ -138541,16 +146669,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:1554"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1554: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1562: \$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_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1562"
 ( $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
@@ -138559,25 +146687,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1554: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1562: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1562"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138585,9 +146713,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1554: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1562: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1562"
 ( $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>&-
@@ -138597,42 +146725,55 @@ 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $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"
+$as_echo "$at_srcdir/regression.at:1562: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1562"
+( $at_check_trace; $BISON_C_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:1562"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1562: \$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:1562"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1562"
 $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"
+$as_echo "$at_srcdir/regression.at:1563:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1563"
 ( $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_fn_check_status 2 $at_status "$at_srcdir/regression.at:1563"
 $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"
+$as_echo "$at_srcdir/regression.at:1563: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1563"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -138648,7 +146789,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:1555"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1563"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138668,7 +146809,7 @@ cat >input.y <<'_ATEOF'
 
 %code {
   #include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   #define YYMAXDEPTH 8
 }
@@ -138684,9 +146825,8 @@ A: /*empty*/ | 'a' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -138718,10 +146858,10 @@ 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:1568: 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:1576: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1576"
 ( $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
@@ -138730,14 +146870,14 @@ at_status=$? at_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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $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 \\
+$as_echo "$at_srcdir/regression.at:1576: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1576"
 ( $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>&-
@@ -138745,16 +146885,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:1568"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1568: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1576: \$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_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1576"
 ( $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
@@ -138763,25 +146903,25 @@ at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/regression.at:1568: \$XSLTPROC \\
+$as_echo "$at_srcdir/regression.at:1576: \$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"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "regression.at:1576"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138789,9 +146929,9 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/regression.at:1568: bison -Dparse.lac=full -Dparse.lac.es-capacity-initial=1 \\
+$as_echo "$at_srcdir/regression.at:1576: 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_fn_check_prepare_notrace 'an embedded newline' "regression.at:1576"
 ( $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>&-
@@ -138801,42 +146941,55 @@ 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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $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"
+$as_echo "$at_srcdir/regression.at:1576: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1576"
+( $at_check_trace; $BISON_C_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:1576"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/regression.at:1576: \$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:1576"
 ( $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_fn_check_status 0 $at_status "$at_srcdir/regression.at:1576"
 $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"
+$as_echo "$at_srcdir/regression.at:1577:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1577"
 ( $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_fn_check_status 2 $at_status "$at_srcdir/regression.at:1577"
 $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"
+$as_echo "$at_srcdir/regression.at:1577: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1577"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -138855,7 +147008,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:1569"
+at_fn_check_status 0 $at_status "$at_srcdir/regression.at:1577"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -138867,13 +147020,13 @@ $at_traceon; }
   $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_STOP_296
+#AT_START_297
+at_fn_group_banner 297 'regression.at:1664' \
+  "Lex and parse params: yacc.c" "                   " 17
 at_xfail=no
 (
-  $as_echo "271. $at_setup_line: testing $at_desc ..."
+  $as_echo "297. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -138906,20 +147059,24 @@ cat >input.y <<'_ATEOF'
 #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 void yyerror (int x, int y,  const char *msg);
   static int yylex (void);
 %}
 
 %%
 exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
 %%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (int x, int y,  const char *msg)
+{
+  YYUSE(x);
+  YYUSE(y);
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
 #include <assert.h>
 static
 int yylex (void)
@@ -138998,15 +147155,15 @@ 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
+  sort 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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -139034,6 +147191,19 @@ $at_traceon; }
 
 
    { set +x
+$as_echo "$at_srcdir/regression.at:1664: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1664"
+( $at_check_trace; $BISON_C_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: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
@@ -139048,13 +147218,13 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1664: ./input"
-at_fn_check_prepare_trace "regression.at:1664"
-( $at_check_trace; ./input
+$as_echo "$at_srcdir/regression.at:1664:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1664"
+( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
@@ -139062,19 +147232,33 @@ 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: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1664"
+( $at_check_trace; 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: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_STOP_297
+#AT_START_298
+at_fn_group_banner 298 'regression.at:1665' \
+  "Lex and parse params: glr.c" "                    " 17
 at_xfail=no
 (
-  $as_echo "272. $at_setup_line: testing $at_desc ..."
+  $as_echo "298. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -139107,20 +147291,24 @@ cat >input.y <<'_ATEOF'
 #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 void yyerror (int x, int y,  const char *msg);
   static int yylex (void);
 %}
 
 %%
 exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
 %%
+#include <stdio.h>
+/* A C error reporting function.  */
+static
+void yyerror (int x, int y,  const char *msg)
+{
+  YYUSE(x);
+  YYUSE(y);
+  YY_LOCATION_PRINT (stderr, (yylloc));
+  fprintf (stderr, ": ");
+  fprintf (stderr, "%s\n", msg);
+}
 #include <assert.h>
 static
 int yylex (void)
@@ -139199,15 +147387,15 @@ 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
+  sort xml-tests/test.dot > expout
   { set +x
 $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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -139235,6 +147423,19 @@ $at_traceon; }
 
 
    { set +x
+$as_echo "$at_srcdir/regression.at:1665: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "regression.at:1665"
+( $at_check_trace; $BISON_C_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:1665"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ 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
@@ -139249,13 +147450,13 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1665: ./input"
-at_fn_check_prepare_trace "regression.at:1665"
-( $at_check_trace; ./input
+$as_echo "$at_srcdir/regression.at:1665:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1665"
+( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
@@ -139263,19 +147464,33 @@ 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: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1665"
+( $at_check_trace; 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: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_272
-#AT_START_273
-at_fn_group_banner 273 'regression.at:1666' \
-  "Lex and parse params: \"lalr1.cc\"" "               " 17
+#AT_STOP_298
+#AT_START_299
+at_fn_group_banner 299 'regression.at:1666' \
+  "Lex and parse params: lalr1.cc" "                 " 17
 at_xfail=no
 (
-  $as_echo "273. $at_setup_line: testing $at_desc ..."
+  $as_echo "299. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -139309,13 +147524,19 @@ cat >input.y <<'_ATEOF'
 #include <stdlib.h>
 
 
-
   static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 %}
 
 %%
 exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
 %%
+/* 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)
@@ -139332,14 +147553,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
   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)
 {
@@ -139408,15 +147621,15 @@ 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
+  sort xml-tests/test.dot > expout
   { set +x
 $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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -139472,13 +147685,13 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1666: ./input"
-at_fn_check_prepare_trace "regression.at:1666"
-( $at_check_trace; ./input
+$as_echo "$at_srcdir/regression.at:1666:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1666"
+( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
@@ -139486,19 +147699,33 @@ 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:1666: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1666"
+( $at_check_trace; 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:1666"
+$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_273
-#AT_START_274
-at_fn_group_banner 274 'regression.at:1667' \
-  "Lex and parse params: \"glr.cc\"" "                 " 17
+#AT_STOP_299
+#AT_START_300
+at_fn_group_banner 300 'regression.at:1667' \
+  "Lex and parse params: glr.cc" "                   " 17
 at_xfail=no
 (
-  $as_echo "274. $at_setup_line: testing $at_desc ..."
+  $as_echo "300. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -139532,13 +147759,19 @@ cat >input.y <<'_ATEOF'
 #include <stdlib.h>
 
 
-
   static int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp);
 %}
 
 %%
 exp: 'a' { fprintf (stdout, "x: %d, y: %d\n", x, y); };
 %%
+/* 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)
@@ -139555,14 +147788,6 @@ int yylex (yy::parser::semantic_type *lvalp, yy::parser::location_type *llocp)
   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)
 {
@@ -139631,15 +147856,15 @@ 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
+  sort xml-tests/test.dot > expout
   { set +x
 $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"
+             xml-tests/test.xml | sort"
 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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -139695,13 +147920,13 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/regression.at:1667: ./input"
-at_fn_check_prepare_trace "regression.at:1667"
-( $at_check_trace; ./input
+$as_echo "$at_srcdir/regression.at:1667:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "regression.at:1667"
+( $at_check_trace;  $PREPARSER ./input
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "x: 1, y: 2
 " | \
   $at_diff - "$at_stdout" || at_failed=:
@@ -139709,22 +147934,37 @@ 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:1667: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "regression.at:1667"
+( $at_check_trace; 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: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_274
-#AT_START_275
-at_fn_group_banner 275 'c++.at:102' \
+#AT_STOP_300
+#AT_START_301
+at_fn_group_banner 301 'c++.at:101' \
   "Doxygen Public Documentation" "                   " 18
 at_xfail=no
 (
-  $as_echo "275. $at_setup_line: testing $at_desc ..."
+  $as_echo "301. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
+
 cat >input.yy <<'_ATEOF'
 %skeleton "lalr1.cc"
 %locations
@@ -139733,9 +147973,12 @@ cat >input.yy <<'_ATEOF'
 %%
 exp:;
 %%
-yy::parser::error (const location& l, const std::string& m)
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
 {
-  std::cerr << l << s << std::endl;
+  (void) l;
+  std::cerr << m << std::endl;
 }
 _ATEOF
 
@@ -139746,9 +147989,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/c++.at:102: 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/c++.at:101: 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.yy"
-at_fn_check_prepare_notrace 'an embedded newline' "c++.at:102"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:101"
 ( $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.yy
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -139756,29 +147999,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/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:102: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.yy"
-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.yy" "c++.at:102"
+$as_echo "$at_srcdir/c++.at:101: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.yy"
+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.yy" "c++.at:101"
 ( $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.yy
 ) >>"$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/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:102: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:101: \$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' "c++.at:102"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:101"
 ( $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
@@ -139787,25 +148030,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:102: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:101: \$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' "c++.at:102"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:101"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -139813,15 +148056,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:102: bison -o input.cc input.yy"
-at_fn_check_prepare_trace "c++.at:102"
+$as_echo "$at_srcdir/c++.at:101: bison -o input.cc input.yy"
+at_fn_check_prepare_trace "c++.at:101"
 ( $at_check_trace; bison -o input.cc input.yy
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -139874,46 +148117,48 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/c++.at:102: doxygen --version || exit 77"
-at_fn_check_prepare_trace "c++.at:102"
+$as_echo "$at_srcdir/c++.at:101: doxygen --version || exit 77"
+at_fn_check_prepare_trace "c++.at:101"
 ( $at_check_trace; doxygen --version || 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 stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/c++.at:102: doxygen"
-at_fn_check_prepare_trace "c++.at:102"
+$as_echo "$at_srcdir/c++.at:101: doxygen"
+at_fn_check_prepare_trace "c++.at:101"
 ( $at_check_trace; doxygen
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:101"
 $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_275
-#AT_START_276
-at_fn_group_banner 276 'c++.at:103' \
+#AT_STOP_301
+#AT_START_302
+at_fn_group_banner 302 'c++.at:102' \
   "Doxygen Private Documentation" "                  " 18
 at_xfail=no
 (
-  $as_echo "276. $at_setup_line: testing $at_desc ..."
+  $as_echo "302. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
+
 cat >input.yy <<'_ATEOF'
 %skeleton "lalr1.cc"
 %locations
@@ -139922,9 +148167,12 @@ cat >input.yy <<'_ATEOF'
 %%
 exp:;
 %%
-yy::parser::error (const location& l, const std::string& m)
+/* A C++ error reporting function.  */
+void
+yy::parser::error (const location_type& l, const std::string& m)
 {
-  std::cerr << l << s << std::endl;
+  (void) l;
+  std::cerr << m << std::endl;
 }
 _ATEOF
 
@@ -139935,9 +148183,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/c++.at:103: 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/c++.at:102: 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.yy"
-at_fn_check_prepare_notrace 'an embedded newline' "c++.at:103"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:102"
 ( $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.yy
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -139945,29 +148193,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/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:103: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.yy"
-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.yy" "c++.at:103"
+$as_echo "$at_srcdir/c++.at:102: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc input.yy"
+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.yy" "c++.at:102"
 ( $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.yy
 ) >>"$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/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:103: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:102: \$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' "c++.at:103"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:102"
 ( $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
@@ -139976,25 +148224,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:103: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:102: \$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' "c++.at:103"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:102"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -140002,15 +148250,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:103: bison -o input.cc input.yy"
-at_fn_check_prepare_trace "c++.at:103"
+$as_echo "$at_srcdir/c++.at:102: bison -o input.cc input.yy"
+at_fn_check_prepare_trace "c++.at:102"
 ( $at_check_trace; bison -o input.cc input.yy
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -140063,43 +148311,44 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/c++.at:103: doxygen --version || exit 77"
-at_fn_check_prepare_trace "c++.at:103"
+$as_echo "$at_srcdir/c++.at:102: doxygen --version || exit 77"
+at_fn_check_prepare_trace "c++.at:102"
 ( $at_check_trace; doxygen --version || 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 stdout:; cat "$at_stdout"
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/c++.at:103: doxygen"
-at_fn_check_prepare_trace "c++.at:103"
+$as_echo "$at_srcdir/c++.at:102: doxygen"
+at_fn_check_prepare_trace "c++.at:102"
 ( $at_check_trace; doxygen
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; cat "$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:103"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:102"
 $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_276
-#AT_START_277
-at_fn_group_banner 277 'c++.at:161' \
+#AT_STOP_302
+#AT_START_303
+at_fn_group_banner 303 'c++.at:160' \
   "Relative namespace references" "                  " 18
 at_xfail=no
 (
-  $as_echo "277. $at_setup_line: testing $at_desc ..."
+  $as_echo "303. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -140156,6 +148405,197 @@ 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/c++.at:161: 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' "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/c++.at:161: 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" "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/c++.at:161: \$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' "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/c++.at:161: \$XSLTPROC \\
+             \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:161"
+( $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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/c++.at:161: bison -o input.cc input.y"
+at_fn_check_prepare_trace "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:161: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:161: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:161:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "c++.at:161"
+( $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/c++.at:161"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:161: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:161"
+( $at_check_trace; 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/c++.at:161"
+$at_failed && at_fn_log_failure
+$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
+}
+
+%language "C++"
+%defines
+%define namespace "foo::bar"
+%union { int i; }
+%define global_tokens_and_yystype
+
+%code {
+  // YYSTYPE contains a namespace reference.
+  int yylex (YYSTYPE *lval) {
+    lval->i = 3;
+    return 0;
+  }
+}
+
+%%
+
+start: ;
+
+%%
+
+void
+foo::bar::parser::error (const foo::bar::parser::location_type &loc,
+                     const std::string &msg)
+{
+  std::cerr << "At " << loc << ": " << msg << std::endl;
+}
+
+int
+main (void)
+{
+  foo::bar::parser p;
+  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/c++.at:162: 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' "c++.at:162"
@@ -140201,15 +148641,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:162"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:162: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:162"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -140306,7 +148746,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "foo::bar"
+%define namespace "foo::bar::baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -140325,7 +148765,7 @@ start: ;
 %%
 
 void
-foo::bar::parser::error (const foo::bar::parser::location_type &loc,
+foo::bar::baz::parser::error (const foo::bar::baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -140334,7 +148774,7 @@ foo::bar::parser::error (const foo::bar::parser::location_type &loc,
 int
 main (void)
 {
-  foo::bar::parser p;
+  foo::bar::baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -140392,15 +148832,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:163"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -140484,6 +148924,19 @@ $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_303
+#AT_START_304
+at_fn_group_banner 304 'c++.at:166' \
+  "Absolute namespace references" "                  " 18
+at_xfail=no
+(
+  $as_echo "304. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
 
 
 cat >input.y <<'_ATEOF'
@@ -140497,7 +148950,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "foo::bar::baz"
+%define namespace "::foo"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -140516,7 +148969,7 @@ start: ;
 %%
 
 void
-foo::bar::baz::parser::error (const foo::bar::baz::parser::location_type &loc,
+::foo::parser::error (const ::foo::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -140525,7 +148978,7 @@ foo::bar::baz::parser::error (const foo::bar::baz::parser::location_type &loc,
 int
 main (void)
 {
-  foo::bar::baz::parser p;
+  ::foo::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -140538,9 +148991,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/c++.at:164: 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/c++.at:167: 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' "c++.at:164"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:167"
 ( $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>&-
@@ -140548,29 +149001,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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:164: 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" "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167: 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" "c++.at:167"
 ( $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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:164: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:167: \$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' "c++.at:164"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:167"
 ( $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
@@ -140579,25 +149032,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:164: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:167: \$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' "c++.at:164"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:167"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -140605,15 +149058,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:164: bison -o input.cc input.y"
-at_fn_check_prepare_trace "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167: bison -o input.cc input.y"
+at_fn_check_prepare_trace "c++.at:167"
 ( $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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -140621,73 +149074,60 @@ $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/c++.at:164: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "c++.at:167"
 ( $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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/c++.at:164: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "c++.at:167"
 ( $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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/c++.at:164:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "c++.at:167"
 ( $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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/c++.at:164: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "c++.at:164"
+$as_echo "$at_srcdir/c++.at:167: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:167"
 ( $at_check_trace; 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/c++.at:164"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:167"
 $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_277
-#AT_START_278
-at_fn_group_banner 278 'c++.at:167' \
-  "Absolute namespace references" "                  " 18
-at_xfail=no
-(
-  $as_echo "278. $at_setup_line: testing $at_desc ..."
-  $at_traceon
-
 
 
 cat >input.y <<'_ATEOF'
@@ -140701,7 +149141,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "::foo"
+%define namespace "::foo::bar"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -140720,7 +149160,7 @@ start: ;
 %%
 
 void
-::foo::parser::error (const ::foo::parser::location_type &loc,
+::foo::bar::parser::error (const ::foo::bar::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -140729,7 +149169,7 @@ void
 int
 main (void)
 {
-  ::foo::parser p;
+  ::foo::bar::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -140787,15 +149227,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:168: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:168"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -140892,7 +149332,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "::foo::bar"
+%define namespace "::foo::bar::baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -140911,7 +149351,7 @@ start: ;
 %%
 
 void
-::foo::bar::parser::error (const ::foo::bar::parser::location_type &loc,
+::foo::bar::baz::parser::error (const ::foo::bar::baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -140920,7 +149360,7 @@ void
 int
 main (void)
 {
-  ::foo::bar::parser p;
+  ::foo::bar::baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -140978,15 +149418,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:169"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:169: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:169"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -141083,7 +149523,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "::foo::bar::baz"
+%define namespace "    ::foo"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -141102,7 +149542,7 @@ start: ;
 %%
 
 void
-::foo::bar::baz::parser::error (const ::foo::bar::baz::parser::location_type &loc,
+       ::foo::parser::error (const     ::foo::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -141111,7 +149551,7 @@ void
 int
 main (void)
 {
-  ::foo::bar::baz::parser p;
+       ::foo::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -141169,15 +149609,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:170"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:170: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:170"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -141274,7 +149714,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "    ::foo"
+%define namespace "     ::foo::bar"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -141293,7 +149733,7 @@ start: ;
 %%
 
 void
-       ::foo::parser::error (const     ::foo::parser::location_type &loc,
+        ::foo::bar::parser::error (const        ::foo::bar::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -141302,7 +149742,7 @@ void
 int
 main (void)
 {
-       ::foo::parser p;
+        ::foo::bar::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -141360,15 +149800,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:171"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:171: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:171"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -141465,7 +149905,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "     ::foo::bar"
+%define namespace "  ::foo::bar::baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -141484,7 +149924,7 @@ start: ;
 %%
 
 void
-        ::foo::bar::parser::error (const        ::foo::bar::parser::location_type &loc,
+  ::foo::bar::baz::parser::error (const   ::foo::bar::baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -141493,7 +149933,7 @@ void
 int
 main (void)
 {
-        ::foo::bar::parser p;
+    ::foo::bar::baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -141551,15 +149991,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:172"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:172: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:172"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -141643,6 +150083,19 @@ $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_304
+#AT_START_305
+at_fn_group_banner 305 'c++.at:175' \
+  "Syntactically invalid namespace references" "     " 18
+at_xfail=no
+(
+  $as_echo "305. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
 
 
 cat >input.y <<'_ATEOF'
@@ -141656,7 +150109,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "  ::foo::bar::baz"
+%define namespace ":foo:bar"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -141675,7 +150128,7 @@ start: ;
 %%
 
 void
-  ::foo::bar::baz::parser::error (const   ::foo::bar::baz::parser::location_type &loc,
+:foo:bar::parser::error (const :foo:bar::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -141684,7 +150137,7 @@ void
 int
 main (void)
 {
-    ::foo::bar::baz::parser p;
+  :foo:bar::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -141697,9 +150150,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/c++.at:173: 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/c++.at:176: 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' "c++.at:173"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:176"
 ( $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>&-
@@ -141707,29 +150160,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/c++.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:176"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:173: 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" "c++.at:173"
+$as_echo "$at_srcdir/c++.at:176: 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" "c++.at:176"
 ( $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/c++.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:176"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:173: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:176: \$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' "c++.at:173"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:176"
 ( $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
@@ -141738,25 +150191,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:176"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:173: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:176: \$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' "c++.at:173"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:176"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:176"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -141764,88 +150217,22 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:173: bison -o input.cc input.y"
-at_fn_check_prepare_trace "c++.at:173"
+$as_echo "$at_srcdir/c++.at:176: bison -o input.cc input.y"
+at_fn_check_prepare_trace "c++.at:176"
 ( $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/c++.at:173"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-
-{ set +x
-$as_echo "$at_srcdir/c++.at:173: \$BISON_CXX_WORKS"
-at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "c++.at:173"
-( $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/c++.at:173"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/c++.at:173: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
-at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "c++.at:173"
-( $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/c++.at:173"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-{ set +x
-$as_echo "$at_srcdir/c++.at:173:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "c++.at:173"
-( $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/c++.at:173"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:176"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-{ set +x
-$as_echo "$at_srcdir/c++.at:173: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "c++.at:173"
-( $at_check_trace; 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/c++.at:173"
-$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_278
-#AT_START_279
-at_fn_group_banner 279 'c++.at:176' \
-  "Syntactically invalid namespace references" "     " 18
-at_xfail=no
-(
-  $as_echo "279. $at_setup_line: testing $at_desc ..."
-  $at_traceon
 
 
 
@@ -141860,7 +150247,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace ":foo:bar"
+%define namespace "foo: :bar"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -141879,7 +150266,7 @@ start: ;
 %%
 
 void
-:foo:bar::parser::error (const :foo:bar::parser::location_type &loc,
+foo: :bar::parser::error (const foo: :bar::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -141888,7 +150275,7 @@ void
 int
 main (void)
 {
-  :foo:bar::parser p;
+  foo: :bar::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -141946,15 +150333,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:177"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:177: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:177"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -141985,6 +150372,8 @@ $at_traceon; }
 
 
 
+# This one is interesting because `[3]' is encoded as `[3]', which
+# contains single occurrences of `:'.
 
 
 cat >input.y <<'_ATEOF'
@@ -141998,7 +150387,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "foo: :bar"
+%define namespace "foo[3]::bar::baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -142017,7 +150406,7 @@ start: ;
 %%
 
 void
-foo: :bar::parser::error (const foo: :bar::parser::location_type &loc,
+foo[3]::bar::baz::parser::error (const foo[3]::bar::baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -142026,7 +150415,7 @@ foo: :bar::parser::error (const foo: :bar::parser::location_type &loc,
 int
 main (void)
 {
-  foo: :bar::parser p;
+  foo[3]::bar::baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -142039,9 +150428,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/c++.at:178: 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/c++.at:180: 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' "c++.at:178"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:180"
 ( $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>&-
@@ -142049,29 +150438,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/c++.at:178"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:180"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:178: 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" "c++.at:178"
+$as_echo "$at_srcdir/c++.at:180: 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" "c++.at:180"
 ( $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/c++.at:178"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:180"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:178: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:180: \$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' "c++.at:178"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:180"
 ( $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
@@ -142080,25 +150469,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:178"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:180"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:178: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:180: \$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' "c++.at:178"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:180"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:178"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:180"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -142106,15 +150495,15 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:178: bison -o input.cc input.y"
-at_fn_check_prepare_trace "c++.at:178"
+$as_echo "$at_srcdir/c++.at:180: bison -o input.cc input.y"
+at_fn_check_prepare_trace "c++.at:180"
 ( $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/c++.at:178"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:180"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -142123,8 +150512,6 @@ $at_traceon; }
 
 
 
-# This one is interesting because `[3]' is encoded as `[3]', which
-# contains single occurrences of `:'.
 
 
 cat >input.y <<'_ATEOF'
@@ -142138,7 +150525,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "foo[3]::bar::baz"
+%define namespace "foo::bar,baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -142157,7 +150544,7 @@ start: ;
 %%
 
 void
-foo[3]::bar::baz::parser::error (const foo[3]::bar::baz::parser::location_type &loc,
+foo::bar,baz::parser::error (const foo::bar,baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -142166,7 +150553,7 @@ foo[3]::bar::baz::parser::error (const foo[3]::bar::baz::parser::location_type &
 int
 main (void)
 {
-  foo[3]::bar::baz::parser p;
+  foo::bar,baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -142224,15 +150611,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:181"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:181: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:181"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -142276,7 +150663,7 @@ cat >input.y <<'_ATEOF'
 
 %language "C++"
 %defines
-%define namespace "foo::bar,baz"
+%define namespace "foo::bar::(baz"
 %union { int i; }
 %define global_tokens_and_yystype
 
@@ -142295,7 +150682,7 @@ start: ;
 %%
 
 void
-foo::bar,baz::parser::error (const foo::bar,baz::parser::location_type &loc,
+foo::bar::(baz::parser::error (const foo::bar::(baz::parser::location_type &loc,
                      const std::string &msg)
 {
   std::cerr << "At " << loc << ": " << msg << std::endl;
@@ -142304,7 +150691,7 @@ foo::bar,baz::parser::error (const foo::bar,baz::parser::location_type &loc,
 int
 main (void)
 {
-  foo::bar,baz::parser p;
+  foo::bar::(baz::parser p;
   return p.parse ();
 }
 _ATEOF
@@ -142362,15 +150749,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/c++.at:182"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/c++.at:182: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:182"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -142401,9 +150788,23 @@ $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_305
+#AT_START_306
+at_fn_group_banner 306 'c++.at:190' \
+  "Exception safety" "                               " 18
+at_xfail=no
+(
+  $as_echo "306. $at_setup_line: testing $at_desc ..."
+  $at_traceon
+
+
 
 
-cat >input.y <<'_ATEOF'
+cat >input.yy <<'_ATEOF'
 %code top {
 #include <config.h>
 /* We don't need perfect functions for these tests. */
@@ -142412,82 +150813,234 @@ cat >input.y <<'_ATEOF'
 #undef realloc
 }
 
-%language "C++"
-%defines
-%define namespace "foo::bar::(baz"
-%union { int i; }
-%define global_tokens_and_yystype
+%skeleton "lalr1.cc"
+%defines // FIXME: Mandated in 2.6.
+%debug
+%error-verbose
 
-%code {
-  // YYSTYPE contains a namespace reference.
-  int yylex (YYSTYPE *lval) {
-    lval->i = 3;
-    return 0;
-  }
+%code requires
+{
+  #include <cassert>
+  #include <cstdlib> // size_t and getenv.
+  #include <iostream>
+  #include <list>
+
+  bool debug = false;
+
+  /// A class that counts its number of instances.
+  struct Object
+  {
+    typedef std::list<const Object*> objects;
+    static objects instances;
+    char val;
+
+    static bool
+    empty ()
+    {
+      return instances.empty();
+    }
+
+    static void
+    log (Object const *o, const std::string& msg)
+    {
+      if (debug)
+        {
+          if (o)
+            std::cerr << o << "->";
+          std::cerr << msg << " {";
+          const char* sep = " ";
+          for (objects::const_iterator i = instances.begin(),
+                                       i_end = instances.end();
+               i != i_end;
+               ++i)
+            {
+              std::cerr << sep << *i;
+              sep = ", ";
+            }
+          std::cerr << " }" << std::endl;
+        }
+    }
+
+    Object (char v)
+      : val (v)
+    {
+      instances.push_back(this);
+      log (this, "Object::Object");
+    }
+
+    ~Object ()
+    {
+      instances.remove(this);
+      log (this, "Object::~Object");
+    }
+  };
+}
+
+%code
+{
+  #include <cassert>
+  #include <cstring> // strchr
+  #include <stdexcept>
+  int yylex (yy::parser::semantic_type *);
+  Object::objects Object::instances;
+  static char const *input;
 }
 
+%union
+{
+  Object *obj;
+}
+
+%initial-action
+{
+  if (strchr (input, 'i'))
+    throw std::runtime_error ("initial-action");
+}
+
+%destructor { delete $$; } <obj>;
+%printer
+{
+  yyo << $$ << " '" << $$->val << '\'';
+  if ($$->val == 'p')
+    throw std::runtime_error ("printer");
+} <obj>;
+
+%token <obj> 'a' 'E' 'e' 'p' 'R' 's' 'T'
+%type  <obj> list item
+
 %%
 
-start: ;
+start: list { delete $1; };
 
+list:
+  item       { $$ = $1; }
+| item list  { $$ = $1; delete $2; } // Right recursion to load the stack.
+;
+
+item:
+  'a'  { $$ = $1; }
+| 'e'  { YYUSE ($$); YYUSE($1); error (location_type(), "syntax error"); }
+// Not just 'E', otherwise we reduce when 'E' is the lookahead, and
+// then the stack is emptied, defeating the point of the test.
+| 'E' 'a' { YYUSE($1); $$ = $2; }
+| 'R'  { $$ = YY_NULL; delete $1; YYERROR; }
+| 'p'  { $$ = $1; }
+| 's'  { $$ = $1; throw std::runtime_error ("reduction"); }
+| 'T'  { $$ = YY_NULL; delete $1; YYABORT; }
+| error { $$ = YY_NULL; yyerrok; }
+;
 %%
 
+int
+yylex (yy::parser::semantic_type *lvalp)
+{
+  // 'a': no error.
+  // 'e': user action calls error.
+  // 'E': syntax error, with yyerror that throws.
+  // 'i': initial action throws.
+  // 'l': yylex throws.
+  // 'R': call YYERROR in the action
+  // 's': reduction throws.
+  // 'T': call YYABORT in the action
+  switch (int res = *input++)
+  {
+    case 'l':
+      throw std::runtime_error ("yylex");
+    default:
+      lvalp->obj = new Object (res);
+      // Fall through.
+    case 0:
+      return res;
+  }
+}
+
+/* A C++ error reporting function.  */
 void
-foo::bar::(baz::parser::error (const foo::bar::(baz::parser::location_type &loc,
-                     const std::string &msg)
+yy::parser::error (const location_type& l, const std::string& m)
 {
-  std::cerr << "At " << loc << ": " << msg << std::endl;
+  YYUSE (l);
+  throw std::runtime_error (m);
 }
 
 int
-main (void)
+main (int argc, const char *argv[])
 {
-  foo::bar::(baz::parser p;
-  return p.parse ();
+  switch (argc)
+  {
+    case 2:
+      input = argv[1];
+      break;
+    case 3:
+      assert (!strcmp (argv[1], "--debug"));
+      debug = 1;
+      input = argv[2];
+      break;
+    default:
+      abort ();
+  }
+
+  yy::parser parser;
+  debug |= !!getenv ("YYDEBUG");
+  parser.set_debug_level (debug);
+  int res = 2;
+  try
+  {
+    res = parser.parse ();
+  }
+  catch (const std::exception& e)
+  {
+    std::cerr << "exception caught: " << e.what () << std::endl;
+  }
+  catch (...)
+  {
+    std::cerr << "unknown exception caught" << std::endl;
+  }
+  Object::log (YY_NULL, "end");
+  assert (Object::empty());
+  return res;
 }
 _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/c++.at:183: 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' "c++.at:183"
+$as_echo "$at_srcdir/c++.at:382: 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 --report=all input.yy"
+at_fn_check_prepare_notrace 'an embedded newline' "c++.at:382"
 ( $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
+                  --graph=xml-tests/test.dot -o input.cc --report=all input.yy
 ) >>"$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/c++.at:183"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:382"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/c++.at:183: 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" "c++.at:183"
-( $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
+$as_echo "$at_srcdir/c++.at:382: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o input.cc --report=all input.yy"
+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 --report=all input.yy" "c++.at:382"
+( $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 --report=all input.yy
 ) >>"$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/c++.at:183"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:382"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/c++.at:183: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:382: \$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' "c++.at:183"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:382"
 ( $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
@@ -142496,25 +151049,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:183"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:382"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/c++.at:183: \$XSLTPROC \\
+$as_echo "$at_srcdir/c++.at:382: \$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' "c++.at:183"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "c++.at:382"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/c++.at:183"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:382"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -142522,20 +151075,322 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/c++.at:183: bison -o input.cc input.y"
-at_fn_check_prepare_trace "c++.at:183"
-( $at_check_trace; bison -o input.cc input.y
+$as_echo "$at_srcdir/c++.at:382: bison -o input.cc --report=all input.yy"
+at_fn_check_prepare_trace "c++.at:382"
+( $at_check_trace; bison -o input.cc --report=all input.yy
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:382"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:383: \$BISON_CXX_WORKS"
+at_fn_check_prepare_dynamic "$BISON_CXX_WORKS" "c++.at:383"
+( $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/c++.at:383"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:383: \$CXX \$CXXFLAGS \$CPPFLAGS \$LDFLAGS -o input input.cc \$LIBS"
+at_fn_check_prepare_dynamic "$CXX $CXXFLAGS $CPPFLAGS $LDFLAGS -o input input.cc $LIBS" "c++.at:383"
+( $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/c++.at:383"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:385:  \$PREPARSER ./input aaaas"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaas" "c++.at:385"
+( $at_check_trace;  $PREPARSER ./input aaaas
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:385"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:385: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:385"
+( $at_check_trace; sed >&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 "exception caught: reduction
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:385"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:389:  \$PREPARSER ./input aaaal"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaal" "c++.at:389"
+( $at_check_trace;  $PREPARSER ./input aaaal
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:389"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:389: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:389"
+( $at_check_trace; sed >&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 "exception caught: yylex
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:389"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:393:  \$PREPARSER ./input i"
+at_fn_check_prepare_dynamic " $PREPARSER ./input i" "c++.at:393"
+( $at_check_trace;  $PREPARSER ./input i
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:393"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:393: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:393"
+( $at_check_trace; sed >&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 "exception caught: initial-action
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:393"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:397:  \$PREPARSER ./input aaaap"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaap" "c++.at:397"
+( $at_check_trace;  $PREPARSER ./input aaaap
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:397"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:397: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:397"
+( $at_check_trace; 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/c++.at:397"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:399:  \$PREPARSER ./input --debug aaaap"
+at_fn_check_prepare_dynamic " $PREPARSER ./input --debug aaaap" "c++.at:399"
+( $at_check_trace;  $PREPARSER ./input --debug aaaap
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:399"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:399: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:399"
+( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:399"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:400: grep '^exception caught: printer\$' stderr"
+at_fn_check_prepare_dynamic "grep '^exception caught: printer$' stderr" "c++.at:400"
+( $at_check_trace; grep '^exception caught: printer$' stderr
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:400"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:402:  \$PREPARSER ./input aaaae"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaae" "c++.at:402"
+( $at_check_trace;  $PREPARSER ./input aaaae
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:402"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:402: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:402"
+( $at_check_trace; sed >&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 "exception caught: syntax error
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:402"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:406:  \$PREPARSER ./input aaaaE"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaaE" "c++.at:406"
+( $at_check_trace;  $PREPARSER ./input aaaaE
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? 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/c++.at:406"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:406: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:406"
+( $at_check_trace; sed >&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 "exception caught: syntax error, unexpected \$end, expecting 'a'
+" | \
+  $at_diff - "$at_stderr" || at_failed=:
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:406"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:410:  \$PREPARSER ./input aaaaT"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaaT" "c++.at:410"
+( $at_check_trace;  $PREPARSER ./input aaaaT
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 1 $at_status "$at_srcdir/c++.at:410"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:410: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:410"
+( $at_check_trace; 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/c++.at:183"
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:410"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 
+# There is error-recovery, so exit success.
+{ set +x
+$as_echo "$at_srcdir/c++.at:413:  \$PREPARSER ./input aaaaR"
+at_fn_check_prepare_dynamic " $PREPARSER ./input aaaaR" "c++.at:413"
+( $at_check_trace;  $PREPARSER ./input aaaaR
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+echo stderr:; tee stderr <"$at_stderr"
+at_fn_diff_devnull "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/c++.at:413"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/c++.at:413: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "c++.at:413"
+( $at_check_trace; 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/c++.at:413"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
 
 
 
@@ -142543,13 +151398,13 @@ $at_traceon; }
   $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:360' \
+#AT_STOP_306
+#AT_START_307
+at_fn_group_banner 307 'java.at:360' \
   "Calculator " "                                    " 19
 at_xfail=no
 (
-  $as_echo "280. $at_setup_line: testing $at_desc ..."
+  $as_echo "307. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -142777,15 +151632,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:360"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:360: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:360"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -143311,13 +152166,13 @@ $at_traceon; }
   $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:360' \
+#AT_STOP_307
+#AT_START_308
+at_fn_group_banner 308 'java.at:360' \
   "Calculator %error-verbose " "                     " 19
 at_xfail=no
 (
-  $as_echo "281. $at_setup_line: testing $at_desc ..."
+  $as_echo "308. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -143545,15 +152400,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:360"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:360: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:360"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -144070,13 +152925,13 @@ $at_traceon; }
   $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:360' \
+#AT_STOP_308
+#AT_START_309
+at_fn_group_banner 309 'java.at:360' \
   "Calculator %locations " "                         " 19
 at_xfail=no
 (
-  $as_echo "282. $at_setup_line: testing $at_desc ..."
+  $as_echo "309. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -144318,15 +153173,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:360"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:360: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:360"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -144843,13 +153698,13 @@ $at_traceon; }
   $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:360' \
+#AT_STOP_309
+#AT_START_310
+at_fn_group_banner 310 'java.at:360' \
   "Calculator %error-verbose %locations " "          " 19
 at_xfail=no
 (
-  $as_echo "283. $at_setup_line: testing $at_desc ..."
+  $as_echo "310. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -145091,15 +153946,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:360"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:360: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:360"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -145607,13 +154462,13 @@ $at_traceon; }
   $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:369' \
+#AT_STOP_310
+#AT_START_311
+at_fn_group_banner 311 'java.at:369' \
   "Calculator %lex-param { InputStream is } " "      " 19
 at_xfail=no
 (
-  $as_echo "284. $at_setup_line: testing $at_desc ..."
+  $as_echo "311. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -145839,15 +154694,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:369"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:369: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:369"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -146373,13 +155228,13 @@ $at_traceon; }
   $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 'java.at:369' \
+#AT_STOP_311
+#AT_START_312
+at_fn_group_banner 312 'java.at:369' \
   "Calculator %error-verbose %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "285. $at_setup_line: testing $at_desc ..."
+  $as_echo "312. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -146605,15 +155460,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:369"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:369: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:369"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -147130,13 +155985,13 @@ $at_traceon; }
   $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 'java.at:369' \
+#AT_STOP_312
+#AT_START_313
+at_fn_group_banner 313 'java.at:369' \
   "Calculator %locations %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "286. $at_setup_line: testing $at_desc ..."
+  $as_echo "313. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -147376,15 +156231,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:369"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:369: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:369"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -147901,13 +156756,13 @@ $at_traceon; }
   $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 'java.at:369' \
+#AT_STOP_313
+#AT_START_314
+at_fn_group_banner 314 'java.at:369' \
   "Calculator %error-verbose %locations %lex-param { InputStream is } " "" 19
 at_xfail=no
 (
-  $as_echo "287. $at_setup_line: testing $at_desc ..."
+  $as_echo "314. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -148147,15 +157002,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:369"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:369: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:369"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -148663,13 +157518,13 @@ $at_traceon; }
   $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 'java.at:455' \
+#AT_STOP_314
+#AT_START_315
+at_fn_group_banner 315 'java.at:455' \
   "Java parser class and package names" "            " 20
 at_xfail=no
 (
-  $as_echo "288. $at_setup_line: testing $at_desc ..."
+  $as_echo "315. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -148739,15 +157594,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:457"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:457: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:457"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -148891,15 +157746,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:460"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:460: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:460"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149043,15 +157898,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:463"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:463: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:463"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149195,15 +158050,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:466"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:466: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:466"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149285,13 +158140,13 @@ $at_traceon; }
   $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 'java.at:476' \
+#AT_STOP_315
+#AT_START_316
+at_fn_group_banner 316 'java.at:476' \
   "Java parser class modifiers" "                    " 20
 at_xfail=no
 (
-  $as_echo "289. $at_setup_line: testing $at_desc ..."
+  $as_echo "316. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -149361,15 +158216,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:478"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:478: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:478"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149513,15 +158368,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:481"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:481: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:481"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149665,15 +158520,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:484"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:484: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:484"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149819,15 +158674,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:487"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:487: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:487"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -149973,15 +158828,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:492"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:492: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:492"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150125,15 +158980,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:497"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:497: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:497"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150279,15 +159134,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:500"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:500: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:500"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150433,15 +159288,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:505"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:505: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:505"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150587,15 +159442,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:510"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:510: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:510"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150742,15 +159597,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:515"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:515: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:515"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150897,15 +159752,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:521"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:521: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:521"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -150987,13 +159842,13 @@ $at_traceon; }
   $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 'java.at:534' \
+#AT_STOP_316
+#AT_START_317
+at_fn_group_banner 317 'java.at:534' \
   "Java parser class extends and implements" "       " 20
 at_xfail=no
 (
-  $as_echo "290. $at_setup_line: testing $at_desc ..."
+  $as_echo "317. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -151063,15 +159918,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:536: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:536"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -151215,15 +160070,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:539"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:539: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:539"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -151369,15 +160224,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:542"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:542: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:542"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -151459,13 +160314,13 @@ $at_traceon; }
   $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 'java.at:554' \
+#AT_STOP_317
+#AT_START_318
+at_fn_group_banner 318 'java.at:554' \
   "Java %parse-param and %lex-param" "               " 20
 at_xfail=no
 (
-  $as_echo "291. $at_setup_line: testing $at_desc ..."
+  $as_echo "318. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -151535,15 +160390,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:556"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:556: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:556"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -151687,15 +160542,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:559"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:559: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:559"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -151873,15 +160728,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:564"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:564: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:564"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -152110,15 +160965,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:573"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:573: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:573"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -152299,15 +161154,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:577"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:577: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:577"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -152522,15 +161377,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:584"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:584: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:584"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -152775,15 +161630,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:595"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:595: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:595"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -152966,15 +161821,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:600"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:600: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:600"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -153159,15 +162014,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:607"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:607: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:607"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -153345,13 +162200,13 @@ $at_traceon; }
   $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 'java.at:628' \
+#AT_STOP_318
+#AT_START_319
+at_fn_group_banner 319 'java.at:628' \
   "Java throws specifications" "                     " 20
 at_xfail=no
 (
-  $as_echo "292. $at_setup_line: testing $at_desc ..."
+  $as_echo "319. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -153447,15 +162302,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -153633,15 +162488,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -153819,15 +162674,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154005,15 +162860,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154191,15 +163046,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154377,15 +163232,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154563,15 +163418,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154749,15 +163604,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -154935,15 +163790,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -155121,15 +163976,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -155307,15 +164162,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -155493,15 +164348,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -155679,15 +164534,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -155865,15 +164720,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -156051,15 +164906,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -156237,15 +165092,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -156444,15 +165299,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -156651,15 +165506,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -156858,15 +165713,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -157065,15 +165920,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -157272,15 +166127,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -157479,15 +166334,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -157686,15 +166541,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -157893,15 +166748,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -158100,15 +166955,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -158307,15 +167162,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -158514,221 +167369,203 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
-  { set +x
-$as_echo "$at_srcdir/java.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' "java.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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  rm -rf xml-tests expout
-  at_restore_special_files
-fi
-{ set +x
-$as_echo "$at_srcdir/java.at:688: bison YYParser.y"
-at_fn_check_prepare_trace "java.at:688"
-( $at_check_trace; bison YYParser.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/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/java.at:688: grep '[mb]4_' YYParser.y"
-at_fn_check_prepare_trace "java.at:688"
-( $at_check_trace; grep '[mb]4_' YYParser.y
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-echo stdout:; cat "$at_stdout"
-at_fn_check_status 1 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-$as_echo "java.at:688" >"$at_check_line_file"
-(test -z "$CONF_JAVAC") \
-  && at_fn_check_skip 77 "$at_srcdir/java.at:688"
-$as_echo "java.at:688" >"$at_check_line_file"
-(test -z "$CONF_JAVA") \
-  && at_fn_check_skip 77 "$at_srcdir/java.at:688"
-{ set +x
-$as_echo "$at_srcdir/java.at:688: \$SHELL ../../../javacomp.sh YYParser.java"
-at_fn_check_prepare_dynamic "$SHELL ../../../javacomp.sh YYParser.java" "java.at:688"
-( $at_check_trace; $SHELL ../../../javacomp.sh YYParser.java
-) >>"$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/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/java.at:688: grep -c '^ *int yylex () throws InterruptedException *;\$' YYParser.java"
-at_fn_check_prepare_dynamic "grep -c '^ *int yylex () throws InterruptedException *;$' YYParser.java" "java.at:688"
-( $at_check_trace; grep -c '^ *int yylex () throws InterruptedException *;$' YYParser.java
-) >>"$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 "1
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/java.at:688: grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *\$' YYParser.java"
-at_fn_check_prepare_dynamic "grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *$' YYParser.java" "java.at:688"
-( $at_check_trace; grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *$' YYParser.java
-) >>"$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 "1
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-{ set +x
-$as_echo "$at_srcdir/java.at:688: grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *\$' YYParser.java"
-at_fn_check_prepare_dynamic "grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *$' YYParser.java" "java.at:688"
-( $at_check_trace; grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *$' YYParser.java
-) >>"$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 "1
-" | \
-  $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-
-
-cat >YYParser.y <<'_ATEOF'
-
-%language "Java"
-%locations
-%debug
-%error-verbose
-%token-table
-
-%define throws "ClassNotFoundException, InstantiationException"
-%define lex_throws "InterruptedException"
-%initial-action {if (true) throw new InstantiationException();}
-
-%code lexer
-{
-  Object yylval;
-  public Object getLVal() { return yylval; }
-
-  public Position getStartPos() { return null; }
-  public Position getEndPos()   { return null; }
-
-  public void yyerror (Location loc, String s)
-  {
-    System.err.println (loc + ": " + s);
-  }
-
-  public int yylex () throws InterruptedException
-  {
-    throw new InterruptedException();
-  }
-
-
-}
-%%
-start: "end" {throw new ClassNotFoundException();};
-%%
-class Position {}
-_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/java.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 YYParser.y"
-at_fn_check_prepare_notrace 'an embedded newline' "java.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 YYParser.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/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  { set +x
-$as_echo "$at_srcdir/java.at:688: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml YYParser.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 YYParser.y" "java.at:688"
-( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml YYParser.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/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-    cp xml-tests/test.output expout
-  { set +x
-$as_echo "$at_srcdir/java.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' "java.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
-) >>"$at_stdout" 2>>"$at_stderr" 5>&-
-at_status=$? at_failed=false
-$at_check_filter
-at_fn_diff_devnull "$at_stderr" || at_failed=:
-$at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
-$at_failed && at_fn_log_failure
-$at_traceon; }
-
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  rm -rf xml-tests expout
+  at_restore_special_files
+fi
+{ set +x
+$as_echo "$at_srcdir/java.at:688: bison YYParser.y"
+at_fn_check_prepare_trace "java.at:688"
+( $at_check_trace; bison YYParser.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/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/java.at:688: grep '[mb]4_' YYParser.y"
+at_fn_check_prepare_trace "java.at:688"
+( $at_check_trace; grep '[mb]4_' YYParser.y
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+echo stdout:; cat "$at_stdout"
+at_fn_check_status 1 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+$as_echo "java.at:688" >"$at_check_line_file"
+(test -z "$CONF_JAVAC") \
+  && at_fn_check_skip 77 "$at_srcdir/java.at:688"
+$as_echo "java.at:688" >"$at_check_line_file"
+(test -z "$CONF_JAVA") \
+  && at_fn_check_skip 77 "$at_srcdir/java.at:688"
+{ set +x
+$as_echo "$at_srcdir/java.at:688: \$SHELL ../../../javacomp.sh YYParser.java"
+at_fn_check_prepare_dynamic "$SHELL ../../../javacomp.sh YYParser.java" "java.at:688"
+( $at_check_trace; $SHELL ../../../javacomp.sh YYParser.java
+) >>"$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/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/java.at:688: grep -c '^ *int yylex () throws InterruptedException *;\$' YYParser.java"
+at_fn_check_prepare_dynamic "grep -c '^ *int yylex () throws InterruptedException *;$' YYParser.java" "java.at:688"
+( $at_check_trace; grep -c '^ *int yylex () throws InterruptedException *;$' YYParser.java
+) >>"$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 "1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/java.at:688: grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *\$' YYParser.java"
+at_fn_check_prepare_dynamic "grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *$' YYParser.java" "java.at:688"
+( $at_check_trace; grep -c '^ *private int yyaction ([^)]*) throws ClassNotFoundException *$' YYParser.java
+) >>"$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 "1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+{ set +x
+$as_echo "$at_srcdir/java.at:688: grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *\$' YYParser.java"
+at_fn_check_prepare_dynamic "grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *$' YYParser.java" "java.at:688"
+( $at_check_trace; grep -c '^ *public boolean parse () throws InterruptedException, ClassNotFoundException *$' YYParser.java
+) >>"$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 "1
+" | \
+  $at_diff - "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+
+
+cat >YYParser.y <<'_ATEOF'
+
+%language "Java"
+%locations
+%debug
+%error-verbose
+%token-table
+
+%define throws "ClassNotFoundException, InstantiationException"
+%define lex_throws "InterruptedException"
+%initial-action {if (true) throw new InstantiationException();}
+
+%code lexer
+{
+  Object yylval;
+  public Object getLVal() { return yylval; }
+
+  public Position getStartPos() { return null; }
+  public Position getEndPos()   { return null; }
+
+  public void yyerror (Location loc, String s)
+  {
+    System.err.println (loc + ": " + s);
+  }
+
+  public int yylex () throws InterruptedException
+  {
+    throw new InterruptedException();
+  }
+
+
+}
+%%
+start: "end" {throw new ClassNotFoundException();};
+%%
+class Position {}
+_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/java.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 YYParser.y"
+at_fn_check_prepare_notrace 'an embedded newline' "java.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 YYParser.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/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+  { set +x
+$as_echo "$at_srcdir/java.at:688: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml YYParser.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 YYParser.y" "java.at:688"
+( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml YYParser.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/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+    cp xml-tests/test.output expout
+  { set +x
+$as_echo "$at_srcdir/java.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' "java.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
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -158739,6 +167576,24 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
+  sort xml-tests/test.dot > expout
+  { set +x
+$as_echo "$at_srcdir/java.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 | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "java.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 | sort
+) >>"$at_stdout" 2>>"$at_stderr" 5>&-
+at_status=$? at_failed=false
+$at_check_filter
+at_fn_diff_devnull "$at_stderr" || at_failed=:
+$at_diff expout "$at_stdout" || at_failed=:
+at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
   rm -rf xml-tests expout
   at_restore_special_files
 fi
@@ -158928,15 +167783,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -159135,15 +167990,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -159342,15 +168197,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -159549,15 +168404,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:688"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.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"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -159672,13 +168527,13 @@ $at_traceon; }
   $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 'java.at:717' \
+#AT_STOP_319
+#AT_START_320
+at_fn_group_banner 320 'java.at:717' \
   "Java stype, position_class and location_class" "  " 20
 at_xfail=no
 (
-  $as_echo "293. $at_setup_line: testing $at_desc ..."
+  $as_echo "320. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -159693,8 +168548,8 @@ cat >YYParser.y <<'_ATEOF'
 
 %define stype "java.awt.Color"
 %type<java.awt.Color> start;
-%define location_type "MyLoc"
-%define position_type "MyPos"
+%define api.location.type "MyLoc"
+%define api.position.type "MyPos"
 %code { class MyPos {} }
 %%
 start: "end" {$$ = $<java.awt.Color>1;};
@@ -159753,15 +168608,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:719"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:719: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:719"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -159873,8 +168728,8 @@ cat >YYParser.y <<'_ATEOF'
 
 %define stype "java.awt.Color"
 %type<java.awt.Color> start;
-%define location_type "MyLoc"
-%define position_type "MyPos"
+%define api.location.type "MyLoc"
+%define api.position.type "MyPos"
 %code { class MyPos {} }
 
 %code lexer
@@ -159954,15 +168809,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:729"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:729: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:729"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -160067,13 +168922,13 @@ $at_traceon; }
   $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 'java.at:748' \
+#AT_STOP_320
+#AT_START_321
+at_fn_group_banner 321 'java.at:748' \
   "Java syntax error handling without error token" " " 20
 at_xfail=no
 (
-  $as_echo "294. $at_setup_line: testing $at_desc ..."
+  $as_echo "321. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160179,15 +169034,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/java.at:799"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/java.at:799: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "java.at:799"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -160282,13 +169137,13 @@ $at_traceon; }
   $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 'cxx-type.at:394' \
+#AT_STOP_321
+#AT_START_322
+at_fn_group_banner 322 'cxx-type.at:394' \
   "GLR: Resolve ambiguity, impure, no locations" "   " 21
 at_xfail=no
 (
-  $as_echo "295. $at_setup_line: testing $at_desc ..."
+  $as_echo "322. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160339,7 +169194,7 @@ cat >types.y <<'_ATEOF'
 
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -160408,9 +169263,8 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -160642,15 +169496,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:395"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:395: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:395"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -160678,6 +169532,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:395: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:395"
+( $at_check_trace; $BISON_C_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/cxx-type.at:395"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:395: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:395"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -160735,13 +169602,13 @@ $at_traceon; }
   $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 'cxx-type.at:401' \
+#AT_STOP_322
+#AT_START_323
+at_fn_group_banner 323 'cxx-type.at:401' \
   "GLR: Resolve ambiguity, impure, locations" "      " 21
 at_xfail=no
 (
-  $as_echo "296. $at_setup_line: testing $at_desc ..."
+  $as_echo "323. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -160792,7 +169659,7 @@ cat >types.y <<'_ATEOF'
 
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -160864,17 +169731,9 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -161110,15 +169969,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:402"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:402: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:402"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -161146,6 +170005,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:402: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:402"
+( $at_check_trace; $BISON_C_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/cxx-type.at:402"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:402: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:402"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -161190,7 +170062,7 @@ at_fn_check_prepare_trace "cxx-type.at:403"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "17.5-4: syntax error
+echo >>"$at_stderr"; $as_echo "17.5: syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -161203,13 +170075,13 @@ $at_traceon; }
   $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 'cxx-type.at:407' \
+#AT_STOP_323
+#AT_START_324
+at_fn_group_banner 324 'cxx-type.at:407' \
   "GLR: Resolve ambiguity, pure, no locations" "     " 21
 at_xfail=no
 (
-  $as_echo "297. $at_setup_line: testing $at_desc ..."
+  $as_echo "324. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161260,7 +170132,7 @@ cat >types.y <<'_ATEOF'
 
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (YYSTYPE *lvalp);
 }
 
@@ -161329,9 +170201,8 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -161563,15 +170434,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:408"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:408: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:408"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -161599,6 +170470,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:408: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:408"
+( $at_check_trace; $BISON_C_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/cxx-type.at:408"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:408: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:408"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -161656,13 +170540,13 @@ $at_traceon; }
   $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 'cxx-type.at:414' \
+#AT_STOP_324
+#AT_START_325
+at_fn_group_banner 325 'cxx-type.at:414' \
   "GLR: Resolve ambiguity, pure, locations" "        " 21
 at_xfail=no
 (
-  $as_echo "298. $at_setup_line: testing $at_desc ..."
+  $as_echo "325. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -161713,7 +170597,7 @@ cat >types.y <<'_ATEOF'
 
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (YYLTYPE *llocp, const char *msg);
+  static void yyerror (YYLTYPE const * const llocp,  const char *msg);
   static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -161785,17 +170669,9 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (YYLTYPE *llocp, const char *msg)
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -162031,15 +170907,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:415"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:415: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:415"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -162067,6 +170943,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:415: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:415"
+( $at_check_trace; $BISON_C_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/cxx-type.at:415"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:415: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:415"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -162111,7 +171000,7 @@ at_fn_check_prepare_trace "cxx-type.at:417"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "17.5-4: syntax error
+echo >>"$at_stderr"; $as_echo "17.5: syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -162124,13 +171013,13 @@ $at_traceon; }
   $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 'cxx-type.at:421' \
+#AT_STOP_325
+#AT_START_326
+at_fn_group_banner 326 'cxx-type.at:421' \
   "GLR: Merge conflicting parses, impure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "299. $at_setup_line: testing $at_desc ..."
+  $as_echo "326. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -162181,7 +171070,7 @@ cat >types.y <<'_ATEOF'
  static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -162250,9 +171139,8 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -162489,15 +171377,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:422"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:422: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:422"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -162525,6 +171413,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:422: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:422"
+( $at_check_trace; $BISON_C_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/cxx-type.at:422"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:422: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:422"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -162582,13 +171483,13 @@ $at_traceon; }
   $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 'cxx-type.at:428' \
+#AT_STOP_326
+#AT_START_327
+at_fn_group_banner 327 'cxx-type.at:428' \
   "GLR: Merge conflicting parses, impure, locations" "" 21
 at_xfail=no
 (
-  $as_echo "300. $at_setup_line: testing $at_desc ..."
+  $as_echo "327. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -162639,7 +171540,7 @@ cat >types.y <<'_ATEOF'
  static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -162711,17 +171612,9 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+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);
+  YY_LOCATION_PRINT (stderr, (yylloc));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -162962,15 +171855,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:429"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:429: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:429"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -162998,6 +171891,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:429: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:429"
+( $at_check_trace; $BISON_C_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/cxx-type.at:429"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:429: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:429"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -163042,7 +171948,7 @@ at_fn_check_prepare_trace "cxx-type.at:431"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "17.5-4: syntax error
+echo >>"$at_stderr"; $as_echo "17.5: syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -163055,13 +171961,13 @@ $at_traceon; }
   $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 'cxx-type.at:435' \
+#AT_STOP_327
+#AT_START_328
+at_fn_group_banner 328 'cxx-type.at:435' \
   "GLR: Merge conflicting parses, pure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "301. $at_setup_line: testing $at_desc ..."
+  $as_echo "328. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163112,7 +172018,7 @@ cat >types.y <<'_ATEOF'
  static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (YYSTYPE *lvalp);
 }
 
@@ -163181,9 +172087,8 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -163420,15 +172325,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:436"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:436: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:436"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -163456,6 +172361,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:436: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:436"
+( $at_check_trace; $BISON_C_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/cxx-type.at:436"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:436: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:436"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -163513,13 +172431,13 @@ $at_traceon; }
   $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 'cxx-type.at:441' \
+#AT_STOP_328
+#AT_START_329
+at_fn_group_banner 329 'cxx-type.at:441' \
   "GLR: Merge conflicting parses, pure, locations" " " 21
 at_xfail=no
 (
-  $as_echo "302. $at_setup_line: testing $at_desc ..."
+  $as_echo "329. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -163570,7 +172488,7 @@ cat >types.y <<'_ATEOF'
  static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (YYLTYPE *llocp, const char *msg);
+  static void yyerror (YYLTYPE const * const llocp,  const char *msg);
   static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 }
 
@@ -163642,17 +172560,9 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (YYLTYPE *llocp, const char *msg)
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -163893,15 +172803,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:442"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:442: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:442"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -163929,6 +172839,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:442: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:442"
+( $at_check_trace; $BISON_C_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/cxx-type.at:442"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:442: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:442"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -163973,7 +172896,7 @@ at_fn_check_prepare_trace "cxx-type.at:444"
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "17.5-4: syntax error
+echo >>"$at_stderr"; $as_echo "17.5: syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -163986,13 +172909,13 @@ $at_traceon; }
   $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 'cxx-type.at:448' \
+#AT_STOP_329
+#AT_START_330
+at_fn_group_banner 330 'cxx-type.at:448' \
   "GLR: Verbose messages, resolve ambiguity, impure, no locations" "" 21
 at_xfail=no
 (
-  $as_echo "303. $at_setup_line: testing $at_desc ..."
+  $as_echo "330. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -164043,7 +172966,7 @@ cat >types.y <<'_ATEOF'
  static YYSTYPE stmtMerge (YYSTYPE x0, YYSTYPE x1);
   #define YYINITDEPTH 10
   #define YYSTACKEXPANDABLE 1
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 }
 
@@ -164112,9 +173035,8 @@ main (int argc, char **argv)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -164351,15 +173273,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/cxx-type.at:449"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/cxx-type.at:449: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "cxx-type.at:449"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164387,6 +173309,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/cxx-type.at:449: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "cxx-type.at:449"
+( $at_check_trace; $BISON_C_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/cxx-type.at:449"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/cxx-type.at:449: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o types types.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS" "cxx-type.at:449"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o types types.c $LIBS
@@ -164444,13 +173379,13 @@ $at_traceon; }
   $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:25' \
+#AT_STOP_330
+#AT_START_331
+at_fn_group_banner 331 'glr-regression.at:25' \
   "Badly Collapsed GLR States" "                     " 22
 at_xfail=no
 (
-  $as_echo "304. $at_setup_line: testing $at_desc ..."
+  $as_echo "331. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -164474,7 +173409,7 @@ cat >glr-regr1.y <<'_ATEOF'
 
 #define YYSTYPE int
 static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -164505,34 +173440,28 @@ static YYSTYPE exprMerge (YYSTYPE x0, YYSTYPE x1)
   return 0;
 }
 
+const char *input = YY_NULL;
+
 int
-main (void)
+main (int argc, const char* argv[])
 {
+  assert (argc == 2);
+  input = argv[1];
   return yyparse ();
 }
 
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
 int
 yylex (void)
 {
-  for (;;)
-    {
-      int ch;
-      assert (!feof (stdin));
-      ch = getchar ();
-      if (ch == EOF)
-       return 0;
-      else if (ch == 'B' || ch == 'P')
-       return ch;
-    }
+  return *input++;
 }
 _ATEOF
 
@@ -164545,9 +173474,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/glr-regression.at:95: 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/glr-regression.at:90: 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 glr-regr1.c glr-regr1.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:95"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:90"
 ( $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 glr-regr1.c glr-regr1.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -164555,29 +173484,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/glr-regression.at:95"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:95: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr1.c glr-regr1.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 glr-regr1.c glr-regr1.y" "glr-regression.at:95"
+$as_echo "$at_srcdir/glr-regression.at:90: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr1.c glr-regr1.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 glr-regr1.c glr-regr1.y" "glr-regression.at:90"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr1.c glr-regr1.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/glr-regression.at:95"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:95: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:90: \$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' "glr-regression.at:95"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:90"
 ( $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
@@ -164586,25 +173515,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:95"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:95: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:90: \$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' "glr-regression.at:95"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:90"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:95"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -164612,8 +173541,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:95: bison -o glr-regr1.c glr-regr1.y"
-at_fn_check_prepare_trace "glr-regression.at:95"
+$as_echo "$at_srcdir/glr-regression.at:90: bison -o glr-regr1.c glr-regr1.y"
+at_fn_check_prepare_trace "glr-regression.at:90"
 ( $at_check_trace; bison -o glr-regr1.c glr-regr1.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -164622,28 +173551,41 @@ echo >>"$at_stderr"; $as_echo "glr-regr1.y: conflicts: 1 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/glr-regression.at:95"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:90"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:98: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr1 glr-regr1.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr1 glr-regr1.c $LIBS" "glr-regression.at:98"
+$as_echo "$at_srcdir/glr-regression.at:93: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:93"
+( $at_check_trace; $BISON_C_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/glr-regression.at:93"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:93: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr1 glr-regr1.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr1 glr-regr1.c $LIBS" "glr-regression.at:93"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr1 glr-regr1.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/glr-regression.at:98"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:93"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:99:  \$PREPARSER echo BPBPB | ./glr-regr1"
-at_fn_check_prepare_notrace 'a shell pipeline' "glr-regression.at:99"
-( $at_check_trace;  $PREPARSER echo BPBPB | ./glr-regr1
+$as_echo "$at_srcdir/glr-regression.at:94:  \$PREPARSER ./glr-regr1 BPBPB"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr1 BPBPB" "glr-regression.at:94"
+( $at_check_trace;  $PREPARSER ./glr-regr1 BPBPB
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164659,20 +173601,20 @@ E -> E 'P' E
 <OR>
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:99"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:94"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:99: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:99"
+$as_echo "$at_srcdir/glr-regression.at:94: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:94"
 ( $at_check_trace; 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/glr-regression.at:99"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:94"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -164682,13 +173624,13 @@ $at_traceon; }
   $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:117' \
+#AT_STOP_331
+#AT_START_332
+at_fn_group_banner 332 'glr-regression.at:112' \
   "Improper handling of embedded actions and dollar(-N) in GLR parsers" "" 22
 at_xfail=no
 (
-  $as_echo "305. $at_setup_line: testing $at_desc ..."
+  $as_echo "332. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -164713,7 +173655,7 @@ cat >glr-regr2a.y <<'_ATEOF'
   #include <stdlib.h>
   #include <string.h>
   #include <assert.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -164757,9 +173699,8 @@ var_printer: 'v'
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 FILE *input;
@@ -164791,9 +173732,14 @@ yylex (void)
 int
 main (int argc, char **argv)
 {
+  int res;
   input = stdin;
-  if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
-  return yyparse ();
+  if (argc == 2 && !(input = fopen (argv[1], "r")))
+    return 3;
+  res = yyparse ();
+  if (argc == 2 && fclose (input))
+    return 4;
+  return res;
 }
 _ATEOF
 
@@ -164851,15 +173797,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:210"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/glr-regression.at:210: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:210"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164889,6 +173835,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/glr-regression.at:213: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:213"
+( $at_check_trace; $BISON_C_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/glr-regression.at:213"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/glr-regression.at:213: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr2a glr-regr2a.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr2a glr-regr2a.c $LIBS" "glr-regression.at:213"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr2a glr-regr2a.c $LIBS
@@ -164902,10 +173861,14 @@ $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+cat >input1.txt <<'_ATEOF'
+s VARIABLE_1 t v x q
+_ATEOF
+
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:215:  \$PREPARSER echo s VARIABLE_1 t v x q | ./glr-regr2a"
-at_fn_check_prepare_notrace 'a shell pipeline' "glr-regression.at:215"
-( $at_check_trace;  $PREPARSER echo s VARIABLE_1 t v x q | ./glr-regr2a
+$as_echo "$at_srcdir/glr-regression.at:218:  \$PREPARSER ./glr-regr2a input1.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr2a input1.txt" "glr-regression.at:218"
+( $at_check_trace;  $PREPARSER ./glr-regr2a input1.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164913,28 +173876,33 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Variable: 'VARIABLE_1'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:215"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:215: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:215"
+$as_echo "$at_srcdir/glr-regression.at:218: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:218"
 ( $at_check_trace; 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/glr-regression.at:215"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:218"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
+cat >input2.txt <<'_ATEOF'
+s VARIABLE_1 , ANOTHER_VARIABLE_2 t e
+_ATEOF
+
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:218:  \$PREPARSER echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a"
-at_fn_check_prepare_notrace 'a shell pipeline' "glr-regression.at:218"
-( $at_check_trace;  $PREPARSER echo s VARIABLE_1 , ANOTHER_VARIABLE_2 t e | ./glr-regr2a
+$as_echo "$at_srcdir/glr-regression.at:225:  \$PREPARSER ./glr-regr2a input2.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr2a input2.txt" "glr-regression.at:225"
+( $at_check_trace;  $PREPARSER ./glr-regr2a input2.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164942,28 +173910,33 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Varlist: 'VARIABLE_1,ANOTHER_VARIABLE_2'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:218"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:218: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:218"
+$as_echo "$at_srcdir/glr-regression.at:225: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:225"
 ( $at_check_trace; 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/glr-regression.at:218"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:225"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+
+cat >input3.txt <<'_ATEOF'
+s VARIABLE_3 t v x
+_ATEOF
+
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:222:  \$PREPARSER echo s VARIABLE_3 t v x | ./glr-regr2a"
-at_fn_check_prepare_notrace 'a shell pipeline' "glr-regression.at:222"
-( $at_check_trace;  $PREPARSER echo s VARIABLE_3 t v x | ./glr-regr2a
+$as_echo "$at_srcdir/glr-regression.at:233:  \$PREPARSER ./glr-regr2a input3.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr2a input3.txt" "glr-regression.at:233"
+( $at_check_trace;  $PREPARSER ./glr-regr2a input3.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -164971,20 +173944,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Variable: 'VARIABLE_3'
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:222"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:233"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:222: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:222"
+$as_echo "$at_srcdir/glr-regression.at:233: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:233"
 ( $at_check_trace; 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/glr-regression.at:222"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:233"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -164995,13 +173968,13 @@ $at_traceon; }
   $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:233' \
+#AT_STOP_332
+#AT_START_333
+at_fn_group_banner 333 'glr-regression.at:244' \
   "Improper merging of GLR delayed action sets" "    " 22
 at_xfail=no
 (
-  $as_echo "306. $at_setup_line: testing $at_desc ..."
+  $as_echo "333. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -165025,7 +173998,7 @@ cat >glr-regr3.y <<'_ATEOF'
 #include <assert.h>
 
 static int MergeRule (int x0, int x1);
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 
 #define RULE(x) (1 << (x))
@@ -165075,9 +174048,8 @@ MergeRule (int x0, int x1)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -165105,9 +174077,14 @@ int yylex (void)
 int
 main(int argc, char* argv[])
 {
+  int res;
   input = stdin;
-  if (argc == 2 && !(input = fopen (argv[1], "r"))) return 3;
-  return yyparse ();
+  if (argc == 2 && !(input = fopen (argv[1], "r")))
+    return 3;
+  res = yyparse ();
+  if (argc == 2 && fclose (input))
+    return 4;
+  return res;
 }
 _ATEOF
 
@@ -165120,9 +174097,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/glr-regression.at:327: 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/glr-regression.at:343: 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 glr-regr3.c glr-regr3.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:327"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:343"
 ( $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 glr-regr3.c glr-regr3.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -165130,29 +174107,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/glr-regression.at:327"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:343"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:327: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr3.c glr-regr3.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 glr-regr3.c glr-regr3.y" "glr-regression.at:327"
+$as_echo "$at_srcdir/glr-regression.at:343: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr3.c glr-regr3.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 glr-regr3.c glr-regr3.y" "glr-regression.at:343"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr3.c glr-regr3.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/glr-regression.at:327"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:343"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:327: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:343: \$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' "glr-regression.at:327"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:343"
 ( $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
@@ -165161,25 +174138,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:327"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:343"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:327: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:343: \$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' "glr-regression.at:327"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:343"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:327"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:343"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165187,8 +174164,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:327: bison -o glr-regr3.c glr-regr3.y"
-at_fn_check_prepare_trace "glr-regression.at:327"
+$as_echo "$at_srcdir/glr-regression.at:343: bison -o glr-regr3.c glr-regr3.y"
+at_fn_check_prepare_trace "glr-regression.at:343"
 ( $at_check_trace; bison -o glr-regr3.c glr-regr3.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165197,29 +174174,46 @@ echo >>"$at_stderr"; $as_echo "glr-regr3.y: conflicts: 1 shift/reduce, 1 reduce/
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:327"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:343"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:330: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr3 glr-regr3.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr3 glr-regr3.c $LIBS" "glr-regression.at:330"
+$as_echo "$at_srcdir/glr-regression.at:346: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:346"
+( $at_check_trace; $BISON_C_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/glr-regression.at:346"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:346: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr3 glr-regr3.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr3 glr-regr3.c $LIBS" "glr-regression.at:346"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr3 glr-regr3.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/glr-regression.at:330"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:346"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
+cat >input.txt <<'_ATEOF'
+p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2
+_ATEOF
+
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:332:  \$PREPARSER echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3"
-at_fn_check_prepare_notrace 'a shell pipeline' "glr-regression.at:332"
-( $at_check_trace;  $PREPARSER echo p1 t4 o2 p1 p1 t1 o1 t2 p2 o1 t3 p2 p2 | ./glr-regr3
+$as_echo "$at_srcdir/glr-regression.at:351:  \$PREPARSER ./glr-regr3 input.txt"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr3 input.txt" "glr-regression.at:351"
+( $at_check_trace;  $PREPARSER ./glr-regr3 input.txt
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -165227,20 +174221,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Result: 1c04
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:332"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:351"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:332: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:332"
+$as_echo "$at_srcdir/glr-regression.at:351: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:351"
 ( $at_check_trace; 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/glr-regression.at:332"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:351"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165250,13 +174244,13 @@ $at_traceon; }
   $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:345' \
+#AT_STOP_333
+#AT_START_334
+at_fn_group_banner 334 'glr-regression.at:364' \
   "Duplicate representation of merged trees" "       " 22
 at_xfail=no
 (
-  $as_echo "307. $at_setup_line: testing $at_desc ..."
+  $as_echo "334. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -165281,7 +174275,7 @@ cat >glr-regr4.y <<'_ATEOF'
   #include <string.h>
   static char *merge (YYSTYPE, YYSTYPE);
   static char *make_value (char const *, char const *);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static char *ptrs[100];
   static char **ptrs_next = ptrs;
@@ -165309,9 +174303,8 @@ B:  'a' { $$ = make_value ("B", "'a'");  } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -165367,9 +174360,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/glr-regression.at:419: 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/glr-regression.at:438: 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 glr-regr4.c glr-regr4.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:419"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:438"
 ( $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 glr-regr4.c glr-regr4.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -165377,29 +174370,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/glr-regression.at:419"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:419: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr4.c glr-regr4.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 glr-regr4.c glr-regr4.y" "glr-regression.at:419"
+$as_echo "$at_srcdir/glr-regression.at:438: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr4.c glr-regr4.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 glr-regr4.c glr-regr4.y" "glr-regression.at:438"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr4.c glr-regr4.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/glr-regression.at:419"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:419: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:438: \$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' "glr-regression.at:419"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:438"
 ( $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
@@ -165408,25 +174401,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:419"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:419: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:438: \$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' "glr-regression.at:419"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:438"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:419"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165434,8 +174427,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:419: bison -o glr-regr4.c glr-regr4.y"
-at_fn_check_prepare_trace "glr-regression.at:419"
+$as_echo "$at_srcdir/glr-regression.at:438: bison -o glr-regr4.c glr-regr4.y"
+at_fn_check_prepare_trace "glr-regression.at:438"
 ( $at_check_trace; bison -o glr-regr4.c glr-regr4.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165444,28 +174437,41 @@ echo >>"$at_stderr"; $as_echo "glr-regr4.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:419"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:438"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:422: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr4 glr-regr4.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr4 glr-regr4.c $LIBS" "glr-regression.at:422"
+$as_echo "$at_srcdir/glr-regression.at:441: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:441"
+( $at_check_trace; $BISON_C_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/glr-regression.at:441"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:441: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr4 glr-regr4.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr4 glr-regr4.c $LIBS" "glr-regression.at:441"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr4 glr-regr4.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/glr-regression.at:422"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:441"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:424:  \$PREPARSER ./glr-regr4"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr4" "glr-regression.at:424"
+$as_echo "$at_srcdir/glr-regression.at:443:  \$PREPARSER ./glr-regr4"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr4" "glr-regression.at:443"
 ( $at_check_trace;  $PREPARSER ./glr-regr4
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165474,20 +174480,20 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "merge{ S <- merge{ A <- A1 <- 'a' and A <- A2 <- 'a' } and S <- B <- 'a' }
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:443"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:424: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:424"
+$as_echo "$at_srcdir/glr-regression.at:443: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:443"
 ( $at_check_trace; 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/glr-regression.at:424"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:443"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165497,13 +174503,13 @@ $at_traceon; }
   $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:436' \
+#AT_STOP_334
+#AT_START_335
+at_fn_group_banner 335 'glr-regression.at:455' \
   "User destructor for unresolved GLR semantic value" "" 22
 at_xfail=no
 (
-  $as_echo "308. $at_setup_line: testing $at_desc ..."
+  $as_echo "335. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -165521,7 +174527,7 @@ cat >glr-regr5.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   enum { MAGIC_VALUE = -1057808125 }; /* originally chosen at random */
 %}
@@ -165546,6 +174552,13 @@ start:
    ;
 
 %%
+#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)
@@ -165559,14 +174572,6 @@ int yylex (void)
   ;
   return res;
 }
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
-
-  fprintf (stderr, "%s\n", msg);
-}
 int
 main (void)
 {
@@ -165583,9 +174588,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/glr-regression.at:479: 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/glr-regression.at:498: 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 glr-regr5.c glr-regr5.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:479"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:498"
 ( $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 glr-regr5.c glr-regr5.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -165593,29 +174598,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/glr-regression.at:479"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:479: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr5.c glr-regr5.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 glr-regr5.c glr-regr5.y" "glr-regression.at:479"
+$as_echo "$at_srcdir/glr-regression.at:498: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr5.c glr-regr5.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 glr-regr5.c glr-regr5.y" "glr-regression.at:498"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr5.c glr-regr5.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/glr-regression.at:479"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:479: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:498: \$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' "glr-regression.at:479"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:498"
 ( $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
@@ -165624,25 +174629,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:479"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:479: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:498: \$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' "glr-regression.at:479"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:498"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:479"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165650,8 +174655,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:479: bison -o glr-regr5.c glr-regr5.y"
-at_fn_check_prepare_trace "glr-regression.at:479"
+$as_echo "$at_srcdir/glr-regression.at:498: bison -o glr-regr5.c glr-regr5.y"
+at_fn_check_prepare_trace "glr-regression.at:498"
 ( $at_check_trace; bison -o glr-regr5.c glr-regr5.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165660,41 +174665,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr5.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:479"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:498"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:482: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr5 glr-regr5.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr5 glr-regr5.c $LIBS" "glr-regression.at:482"
+$as_echo "$at_srcdir/glr-regression.at:501: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:501"
+( $at_check_trace; $BISON_C_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/glr-regression.at:501"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:501: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr5 glr-regr5.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr5 glr-regr5.c $LIBS" "glr-regression.at:501"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr5 glr-regr5.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/glr-regression.at:482"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:501"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:484:  \$PREPARSER ./glr-regr5"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr5" "glr-regression.at:484"
+$as_echo "$at_srcdir/glr-regression.at:503:  \$PREPARSER ./glr-regr5"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr5" "glr-regression.at:503"
 ( $at_check_trace;  $PREPARSER ./glr-regr5
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:503"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:484: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:484"
+$as_echo "$at_srcdir/glr-regression.at:503: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:503"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165703,7 +174721,7 @@ echo >>"$at_stderr"; $as_echo "syntax is ambiguous
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:484"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:503"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165713,13 +174731,13 @@ $at_traceon; }
   $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:496' \
+#AT_STOP_335
+#AT_START_336
+at_fn_group_banner 336 'glr-regression.at:515' \
   "User destructor after an error during a split parse" "" 22
 at_xfail=no
 (
-  $as_echo "309. $at_setup_line: testing $at_desc ..."
+  $as_echo "336. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -165737,7 +174755,7 @@ cat >glr-regr6.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -165757,9 +174775,8 @@ start: 'a' | 'a' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -165791,9 +174808,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/glr-regression.at:531: 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/glr-regression.at:550: 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 glr-regr6.c glr-regr6.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:531"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:550"
 ( $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 glr-regr6.c glr-regr6.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -165801,29 +174818,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/glr-regression.at:531"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:531: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr6.c glr-regr6.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 glr-regr6.c glr-regr6.y" "glr-regression.at:531"
+$as_echo "$at_srcdir/glr-regression.at:550: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr6.c glr-regr6.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 glr-regr6.c glr-regr6.y" "glr-regression.at:550"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr6.c glr-regr6.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/glr-regression.at:531"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:531: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:550: \$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' "glr-regression.at:531"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:550"
 ( $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
@@ -165832,25 +174849,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:531"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:531: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:550: \$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' "glr-regression.at:531"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:550"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:531"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165858,8 +174875,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:531: bison -o glr-regr6.c glr-regr6.y"
-at_fn_check_prepare_trace "glr-regression.at:531"
+$as_echo "$at_srcdir/glr-regression.at:550: bison -o glr-regr6.c glr-regr6.y"
+at_fn_check_prepare_trace "glr-regression.at:550"
 ( $at_check_trace; bison -o glr-regr6.c glr-regr6.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165868,28 +174885,41 @@ echo >>"$at_stderr"; $as_echo "glr-regr6.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:531"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:550"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:534: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr6 glr-regr6.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr6 glr-regr6.c $LIBS" "glr-regression.at:534"
+$as_echo "$at_srcdir/glr-regression.at:553: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:553"
+( $at_check_trace; $BISON_C_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/glr-regression.at:553"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:553: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr6 glr-regr6.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr6 glr-regr6.c $LIBS" "glr-regression.at:553"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr6 glr-regr6.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/glr-regression.at:534"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:553"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:536:  \$PREPARSER ./glr-regr6"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr6" "glr-regression.at:536"
+$as_echo "$at_srcdir/glr-regression.at:555:  \$PREPARSER ./glr-regr6"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr6" "glr-regression.at:555"
 ( $at_check_trace;  $PREPARSER ./glr-regr6
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165898,13 +174928,13 @@ echo stderr:; tee stderr <"$at_stderr"
 echo >>"$at_stdout"; $as_echo "Destructor called.
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:536"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:555"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:536: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:536"
+$as_echo "$at_srcdir/glr-regression.at:555: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:555"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -165913,7 +174943,7 @@ echo >>"$at_stderr"; $as_echo "syntax is ambiguous
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:536"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:555"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -165923,13 +174953,13 @@ $at_traceon; }
   $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:550' \
+#AT_STOP_336
+#AT_START_337
+at_fn_group_banner 337 'glr-regression.at:569' \
   "Duplicated user destructor for lookahead" "       " 22
 at_xfail=no
 (
-  $as_echo "310. $at_setup_line: testing $at_desc ..."
+  $as_echo "337. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -165947,7 +174977,7 @@ cat >glr-regr7.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   #define YYSTACKEXPANDABLE 0
   typedef struct count_node {
@@ -165996,9 +175026,8 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -166024,9 +175053,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/glr-regression.at:620: 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/glr-regression.at:639: 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 glr-regr7.c glr-regr7.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:620"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:639"
 ( $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 glr-regr7.c glr-regr7.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -166034,29 +175063,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/glr-regression.at:620"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:620: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr7.c glr-regr7.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 glr-regr7.c glr-regr7.y" "glr-regression.at:620"
+$as_echo "$at_srcdir/glr-regression.at:639: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr7.c glr-regr7.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 glr-regr7.c glr-regr7.y" "glr-regression.at:639"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr7.c glr-regr7.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/glr-regression.at:620"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:620: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:639: \$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' "glr-regression.at:620"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:639"
 ( $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
@@ -166065,25 +175094,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:620"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:620: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:639: \$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' "glr-regression.at:620"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:639"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:620"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166091,8 +175120,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:620: bison -o glr-regr7.c glr-regr7.y"
-at_fn_check_prepare_trace "glr-regression.at:620"
+$as_echo "$at_srcdir/glr-regression.at:639: bison -o glr-regr7.c glr-regr7.y"
+at_fn_check_prepare_trace "glr-regression.at:639"
 ( $at_check_trace; bison -o glr-regr7.c glr-regr7.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166101,41 +175130,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr7.y: conflicts: 2 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:620"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:639"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:623: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr7 glr-regr7.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr7 glr-regr7.c $LIBS" "glr-regression.at:623"
+$as_echo "$at_srcdir/glr-regression.at:642: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:642"
+( $at_check_trace; $BISON_C_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/glr-regression.at:642"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:642: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr7 glr-regr7.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr7 glr-regr7.c $LIBS" "glr-regression.at:642"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr7 glr-regr7.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/glr-regression.at:623"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:642"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:625:  \$PREPARSER ./glr-regr7"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr7" "glr-regression.at:625"
+$as_echo "$at_srcdir/glr-regression.at:644:  \$PREPARSER ./glr-regr7"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr7" "glr-regression.at:644"
 ( $at_check_trace;  $PREPARSER ./glr-regr7
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? 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/glr-regression.at:625"
+at_fn_check_status 2 $at_status "$at_srcdir/glr-regression.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:625: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:625"
+$as_echo "$at_srcdir/glr-regression.at:644: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.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
@@ -166144,7 +175186,7 @@ echo >>"$at_stderr"; $as_echo "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/glr-regression.at:625"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:644"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166154,13 +175196,13 @@ $at_traceon; }
   $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:639' \
+#AT_STOP_337
+#AT_START_338
+at_fn_group_banner 338 'glr-regression.at:658' \
   "Incorrectly initialized location for empty right-hand side in GLR" "" 22
 at_xfail=no
 (
-  $as_echo "311. $at_setup_line: testing $at_desc ..."
+  $as_echo "338. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -166178,7 +175220,7 @@ cat >glr-regr8.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -166216,9 +175258,8 @@ OptSignalWord : /* empty */
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int lexIndex;
@@ -166260,9 +175301,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/glr-regression.at:714: 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/glr-regression.at:733: 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 glr-regr8.c glr-regr8.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:714"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:733"
 ( $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 glr-regr8.c glr-regr8.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -166270,29 +175311,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/glr-regression.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:733"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:714: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr8.c glr-regr8.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 glr-regr8.c glr-regr8.y" "glr-regression.at:714"
+$as_echo "$at_srcdir/glr-regression.at:733: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr8.c glr-regr8.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 glr-regr8.c glr-regr8.y" "glr-regression.at:733"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr8.c glr-regr8.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/glr-regression.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:733"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:714: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:733: \$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' "glr-regression.at:714"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:733"
 ( $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
@@ -166301,25 +175342,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:733"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:714: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:733: \$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' "glr-regression.at:714"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:733"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:733"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166327,8 +175368,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:714: bison -o glr-regr8.c glr-regr8.y"
-at_fn_check_prepare_trace "glr-regression.at:714"
+$as_echo "$at_srcdir/glr-regression.at:733: bison -o glr-regr8.c glr-regr8.y"
+at_fn_check_prepare_trace "glr-regression.at:733"
 ( $at_check_trace; bison -o glr-regr8.c glr-regr8.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166337,28 +175378,41 @@ echo >>"$at_stderr"; $as_echo "glr-regr8.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:714"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:733"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:717: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr8 glr-regr8.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr8 glr-regr8.c $LIBS" "glr-regression.at:717"
+$as_echo "$at_srcdir/glr-regression.at:736: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:736"
+( $at_check_trace; $BISON_C_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/glr-regression.at:736"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:736: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr8 glr-regr8.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr8 glr-regr8.c $LIBS" "glr-regression.at:736"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr8 glr-regr8.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/glr-regression.at:717"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:736"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:719:  \$PREPARSER ./glr-regr8"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr8" "glr-regression.at:719"
+$as_echo "$at_srcdir/glr-regression.at:738:  \$PREPARSER ./glr-regr8"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr8" "glr-regression.at:738"
 ( $at_check_trace;  $PREPARSER ./glr-regr8
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166368,20 +175422,20 @@ echo >>"$at_stdout"; $as_echo "empty: 9/9
 1/9 - 9/9 - 13/17
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:719"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:738"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:719: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:719"
+$as_echo "$at_srcdir/glr-regression.at:738: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:738"
 ( $at_check_trace; 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/glr-regression.at:719"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:738"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166391,13 +175445,13 @@ $at_traceon; }
   $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:733' \
+#AT_STOP_338
+#AT_START_339
+at_fn_group_banner 339 'glr-regression.at:752' \
   "No users destructors if stack 0 deleted" "        " 22
 at_xfail=no
 (
-  $as_echo "312. $at_setup_line: testing $at_desc ..."
+  $as_echo "339. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -166415,7 +175469,7 @@ cat >glr-regr9.y <<'_ATEOF'
 %{
 # include <stdio.h>
 # include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 # define YYSTACKEXPANDABLE 0
   static int tokens = 0;
@@ -166455,9 +175509,8 @@ yylex (void)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 int
@@ -166483,9 +175536,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/glr-regression.at:794: 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/glr-regression.at:813: 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 glr-regr9.c glr-regr9.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:794"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:813"
 ( $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 glr-regr9.c glr-regr9.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -166493,29 +175546,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/glr-regression.at:794"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:813"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:794: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr9.c glr-regr9.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 glr-regr9.c glr-regr9.y" "glr-regression.at:794"
+$as_echo "$at_srcdir/glr-regression.at:813: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr9.c glr-regr9.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 glr-regr9.c glr-regr9.y" "glr-regression.at:813"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr9.c glr-regr9.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/glr-regression.at:794"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:813"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:794: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:813: \$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' "glr-regression.at:794"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:813"
 ( $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
@@ -166524,25 +175577,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:794"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:813"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:794: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:813: \$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' "glr-regression.at:794"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:813"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:794"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:813"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166550,8 +175603,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:794: bison -o glr-regr9.c glr-regr9.y"
-at_fn_check_prepare_trace "glr-regression.at:794"
+$as_echo "$at_srcdir/glr-regression.at:813: bison -o glr-regr9.c glr-regr9.y"
+at_fn_check_prepare_trace "glr-regression.at:813"
 ( $at_check_trace; bison -o glr-regr9.c glr-regr9.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166560,41 +175613,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr9.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:794"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:813"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:797: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr9 glr-regr9.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr9 glr-regr9.c $LIBS" "glr-regression.at:797"
+$as_echo "$at_srcdir/glr-regression.at:816: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:816"
+( $at_check_trace; $BISON_C_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/glr-regression.at:816"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:816: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr9 glr-regr9.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr9 glr-regr9.c $LIBS" "glr-regression.at:816"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr9 glr-regr9.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/glr-regression.at:797"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:816"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:799:  \$PREPARSER ./glr-regr9"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr9" "glr-regression.at:799"
+$as_echo "$at_srcdir/glr-regression.at:818:  \$PREPARSER ./glr-regr9"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr9" "glr-regression.at:818"
 ( $at_check_trace;  $PREPARSER ./glr-regr9
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:799"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:818"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:799: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:799"
+$as_echo "$at_srcdir/glr-regression.at:818: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:818"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166603,7 +175669,7 @@ echo >>"$at_stderr"; $as_echo "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/glr-regression.at:799"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:818"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166613,13 +175679,13 @@ $at_traceon; }
   $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 'glr-regression.at:810' \
+#AT_STOP_339
+#AT_START_340
+at_fn_group_banner 340 'glr-regression.at:829' \
   "Corrupted semantic options if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "313. $at_setup_line: testing $at_desc ..."
+  $as_echo "340. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -166637,7 +175703,7 @@ cat >glr-regr10.y <<'_ATEOF'
 %{
 # include <stdlib.h>
 # include <stdio.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   #define GARBAGE_SIZE 50
   static char garbage[GARBAGE_SIZE];
@@ -166658,9 +175724,8 @@ start:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -166696,9 +175761,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/glr-regression.at:850: 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/glr-regression.at:869: 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 glr-regr10.c glr-regr10.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:850"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:869"
 ( $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 glr-regr10.c glr-regr10.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -166706,29 +175771,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/glr-regression.at:850"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:869"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:850: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr10.c glr-regr10.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 glr-regr10.c glr-regr10.y" "glr-regression.at:850"
+$as_echo "$at_srcdir/glr-regression.at:869: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr10.c glr-regr10.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 glr-regr10.c glr-regr10.y" "glr-regression.at:869"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr10.c glr-regr10.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/glr-regression.at:850"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:869"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:850: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:869: \$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' "glr-regression.at:850"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:869"
 ( $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
@@ -166737,25 +175802,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:850"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:869"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:850: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:869: \$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' "glr-regression.at:850"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:869"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:850"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:869"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166763,8 +175828,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:850: bison -o glr-regr10.c glr-regr10.y"
-at_fn_check_prepare_trace "glr-regression.at:850"
+$as_echo "$at_srcdir/glr-regression.at:869: bison -o glr-regr10.c glr-regr10.y"
+at_fn_check_prepare_trace "glr-regression.at:869"
 ( $at_check_trace; bison -o glr-regr10.c glr-regr10.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166773,48 +175838,61 @@ echo >>"$at_stderr"; $as_echo "glr-regr10.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:850"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:869"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:853: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr10 glr-regr10.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr10 glr-regr10.c $LIBS" "glr-regression.at:853"
+$as_echo "$at_srcdir/glr-regression.at:872: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:872"
+( $at_check_trace; $BISON_C_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/glr-regression.at:872"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:872: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr10 glr-regr10.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr10 glr-regr10.c $LIBS" "glr-regression.at:872"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr10 glr-regr10.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/glr-regression.at:853"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:872"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:855:  \$PREPARSER ./glr-regr10"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr10" "glr-regression.at:855"
+$as_echo "$at_srcdir/glr-regression.at:874:  \$PREPARSER ./glr-regr10"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr10" "glr-regression.at:874"
 ( $at_check_trace;  $PREPARSER ./glr-regr10
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:855"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:874"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:855: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:855"
+$as_echo "$at_srcdir/glr-regression.at:874: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:874"
 ( $at_check_trace; 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/glr-regression.at:855"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:874"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166824,13 +175902,13 @@ $at_traceon; }
   $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 'glr-regression.at:864' \
+#AT_STOP_340
+#AT_START_341
+at_fn_group_banner 341 'glr-regression.at:883' \
   "Undesirable destructors if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "314. $at_setup_line: testing $at_desc ..."
+  $as_echo "341. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -166847,7 +175925,7 @@ cat >glr-regr11.y <<'_ATEOF'
 
 %{
 # include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static int destructors = 0;
 # define USE(val)
@@ -166870,9 +175948,8 @@ start:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -166911,9 +175988,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/glr-regression.at:908: 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/glr-regression.at:927: 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 glr-regr11.c glr-regr11.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:908"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:927"
 ( $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 glr-regr11.c glr-regr11.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -166921,29 +175998,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/glr-regression.at:908"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:927"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:908: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr11.c glr-regr11.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 glr-regr11.c glr-regr11.y" "glr-regression.at:908"
+$as_echo "$at_srcdir/glr-regression.at:927: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr11.c glr-regr11.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 glr-regr11.c glr-regr11.y" "glr-regression.at:927"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr11.c glr-regr11.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/glr-regression.at:908"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:927"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:908: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:927: \$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' "glr-regression.at:908"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:927"
 ( $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
@@ -166952,25 +176029,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:908"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:927"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:908: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:927: \$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' "glr-regression.at:908"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:927"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:908"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:927"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -166978,8 +176055,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:908: bison -o glr-regr11.c glr-regr11.y"
-at_fn_check_prepare_trace "glr-regression.at:908"
+$as_echo "$at_srcdir/glr-regression.at:927: bison -o glr-regr11.c glr-regr11.y"
+at_fn_check_prepare_trace "glr-regression.at:927"
 ( $at_check_trace; bison -o glr-regr11.c glr-regr11.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -166988,48 +176065,61 @@ echo >>"$at_stderr"; $as_echo "glr-regr11.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:908"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:927"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:911: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr11 glr-regr11.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr11 glr-regr11.c $LIBS" "glr-regression.at:911"
+$as_echo "$at_srcdir/glr-regression.at:930: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:930"
+( $at_check_trace; $BISON_C_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/glr-regression.at:930"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:930: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr11 glr-regr11.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr11 glr-regr11.c $LIBS" "glr-regression.at:930"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr11 glr-regr11.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/glr-regression.at:911"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:930"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:913:  \$PREPARSER ./glr-regr11"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr11" "glr-regression.at:913"
+$as_echo "$at_srcdir/glr-regression.at:932:  \$PREPARSER ./glr-regr11"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr11" "glr-regression.at:932"
 ( $at_check_trace;  $PREPARSER ./glr-regr11
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:913"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:932"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:913: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:913"
+$as_echo "$at_srcdir/glr-regression.at:932: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:932"
 ( $at_check_trace; 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/glr-regression.at:913"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:932"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167039,13 +176129,13 @@ $at_traceon; }
   $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 'glr-regression.at:922' \
+#AT_STOP_341
+#AT_START_342
+at_fn_group_banner 342 'glr-regression.at:941' \
   "Leaked semantic values if user action cuts parse" "" 22
 at_xfail=no
 (
-  $as_echo "315. $at_setup_line: testing $at_desc ..."
+  $as_echo "342. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -167072,7 +176162,7 @@ cat >glr-regr12.y <<'_ATEOF'
 # include <stdlib.h>
 # include <assert.h>
   static int merge (YYSTYPE, YYSTYPE);
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static int parent_rhs_before_value = 0;
   static int merged_value = 0;
@@ -167136,9 +176226,8 @@ merge (YYSTYPE s1, YYSTYPE s2)
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -167188,9 +176277,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/glr-regression.at:1029: 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/glr-regression.at:1048: 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 glr-regr12.c glr-regr12.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1029"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1048"
 ( $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 glr-regr12.c glr-regr12.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -167198,29 +176287,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/glr-regression.at:1029"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1048"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1029: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr12.c glr-regr12.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 glr-regr12.c glr-regr12.y" "glr-regression.at:1029"
+$as_echo "$at_srcdir/glr-regression.at:1048: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr12.c glr-regr12.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 glr-regr12.c glr-regr12.y" "glr-regression.at:1048"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr12.c glr-regr12.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/glr-regression.at:1029"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1048"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1029: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1048: \$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' "glr-regression.at:1029"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1048"
 ( $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
@@ -167229,25 +176318,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1029"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1048"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1029: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1048: \$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' "glr-regression.at:1029"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1048"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1029"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1048"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167255,8 +176344,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1029: bison -o glr-regr12.c glr-regr12.y"
-at_fn_check_prepare_trace "glr-regression.at:1029"
+$as_echo "$at_srcdir/glr-regression.at:1048: bison -o glr-regr12.c glr-regr12.y"
+at_fn_check_prepare_trace "glr-regression.at:1048"
 ( $at_check_trace; bison -o glr-regr12.c glr-regr12.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -167265,48 +176354,61 @@ echo >>"$at_stderr"; $as_echo "glr-regr12.y: conflicts: 1 shift/reduce, 1 reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1029"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1048"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1032: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr12 glr-regr12.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr12 glr-regr12.c $LIBS" "glr-regression.at:1032"
+$as_echo "$at_srcdir/glr-regression.at:1051: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1051"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1051"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1051: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr12 glr-regr12.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr12 glr-regr12.c $LIBS" "glr-regression.at:1051"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr12 glr-regr12.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/glr-regression.at:1032"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1051"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1034:  \$PREPARSER ./glr-regr12"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr12" "glr-regression.at:1034"
+$as_echo "$at_srcdir/glr-regression.at:1053:  \$PREPARSER ./glr-regr12"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr12" "glr-regression.at:1053"
 ( $at_check_trace;  $PREPARSER ./glr-regr12
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1034"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1053"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1034: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1034"
+$as_echo "$at_srcdir/glr-regression.at:1053: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1053"
 ( $at_check_trace; 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/glr-regression.at:1034"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1053"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167316,13 +176418,13 @@ $at_traceon; }
   $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_START_316
-at_fn_group_banner 316 'glr-regression.at:1045' \
+#AT_STOP_342
+#AT_START_343
+at_fn_group_banner 343 'glr-regression.at:1064' \
   "Incorrect lookahead during deterministic GLR" "   " 22
 at_xfail=no
 (
-  $as_echo "316. $at_setup_line: testing $at_desc ..."
+  $as_echo "343. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -167347,7 +176449,7 @@ cat >glr-regr13.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <assert.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static void print_lookahead (char const *);
   #define USE(value)
@@ -167402,9 +176504,8 @@ change_lookahead:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -167459,9 +176560,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/glr-regression.at:1146: 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/glr-regression.at:1165: 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 glr-regr13.c glr-regr13.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1146"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1165"
 ( $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 glr-regr13.c glr-regr13.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -167469,29 +176570,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/glr-regression.at:1146"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1146: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr13.c glr-regr13.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 glr-regr13.c glr-regr13.y" "glr-regression.at:1146"
+$as_echo "$at_srcdir/glr-regression.at:1165: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr13.c glr-regr13.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 glr-regr13.c glr-regr13.y" "glr-regression.at:1165"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr13.c glr-regr13.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/glr-regression.at:1146"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1146: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1165: \$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' "glr-regression.at:1146"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1165"
 ( $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
@@ -167500,25 +176601,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1146"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1146: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1165: \$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' "glr-regression.at:1146"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1165"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1146"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167526,36 +176627,49 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1146: bison -o glr-regr13.c glr-regr13.y"
-at_fn_check_prepare_trace "glr-regression.at:1146"
+$as_echo "$at_srcdir/glr-regression.at:1165: bison -o glr-regr13.c glr-regr13.y"
+at_fn_check_prepare_trace "glr-regression.at:1165"
 ( $at_check_trace; bison -o glr-regr13.c glr-regr13.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/glr-regression.at:1146"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1165"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1147: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr13 glr-regr13.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr13 glr-regr13.c $LIBS" "glr-regression.at:1147"
+$as_echo "$at_srcdir/glr-regression.at:1166: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1166"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1166"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1166: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr13 glr-regr13.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr13 glr-regr13.c $LIBS" "glr-regression.at:1166"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr13 glr-regr13.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/glr-regression.at:1147"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1166"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1149:  \$PREPARSER ./glr-regr13"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr13" "glr-regression.at:1149"
+$as_echo "$at_srcdir/glr-regression.at:1168:  \$PREPARSER ./glr-regr13"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr13" "glr-regression.at:1168"
 ( $at_check_trace;  $PREPARSER ./glr-regr13
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -167573,20 +176687,20 @@ start <- defstate_init defstate_shift 'b':
   yychar=YYEMPTY
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1149"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1149: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1149"
+$as_echo "$at_srcdir/glr-regression.at:1168: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1168"
 ( $at_check_trace; 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/glr-regression.at:1149"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1168"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167596,13 +176710,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_316
-#AT_START_317
-at_fn_group_banner 317 'glr-regression.at:1169' \
+#AT_STOP_343
+#AT_START_344
+at_fn_group_banner 344 'glr-regression.at:1188' \
   "Incorrect lookahead during nondeterministic GLR" "" 22
 at_xfail=no
 (
-  $as_echo "317. $at_setup_line: testing $at_desc ..."
+  $as_echo "344. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -167642,7 +176756,7 @@ cat >glr-regr14.y <<'_ATEOF'
   #include <stdlib.h>
   #include <stdio.h>
   #include <assert.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static void print_lookahead (char const *);
   static char merge (union YYSTYPE, union YYSTYPE);
@@ -167755,9 +176869,8 @@ no_look:
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 static int
@@ -167817,9 +176930,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/glr-regression.at:1359: 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/glr-regression.at:1378: 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 glr-regr14.c glr-regr14.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1359"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1378"
 ( $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 glr-regr14.c glr-regr14.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -167827,29 +176940,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/glr-regression.at:1359"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1378"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1359: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr14.c glr-regr14.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 glr-regr14.c glr-regr14.y" "glr-regression.at:1359"
+$as_echo "$at_srcdir/glr-regression.at:1378: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr14.c glr-regr14.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 glr-regr14.c glr-regr14.y" "glr-regression.at:1378"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr14.c glr-regr14.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/glr-regression.at:1359"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1378"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1359: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1378: \$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' "glr-regression.at:1359"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1378"
 ( $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
@@ -167858,25 +176971,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1359"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1378"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1359: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1378: \$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' "glr-regression.at:1359"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1378"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1359"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1378"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167884,8 +176997,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1359: bison -o glr-regr14.c glr-regr14.y"
-at_fn_check_prepare_trace "glr-regression.at:1359"
+$as_echo "$at_srcdir/glr-regression.at:1378: bison -o glr-regr14.c glr-regr14.y"
+at_fn_check_prepare_trace "glr-regression.at:1378"
 ( $at_check_trace; bison -o glr-regr14.c glr-regr14.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -167894,28 +177007,41 @@ echo >>"$at_stderr"; $as_echo "glr-regr14.y: conflicts: 3 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1359"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1378"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1362: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr14 glr-regr14.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr14 glr-regr14.c $LIBS" "glr-regression.at:1362"
+$as_echo "$at_srcdir/glr-regression.at:1381: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1381"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1381"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1381: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr14 glr-regr14.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr14 glr-regr14.c $LIBS" "glr-regression.at:1381"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr14 glr-regr14.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/glr-regression.at:1362"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1381"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1364:  \$PREPARSER ./glr-regr14"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr14" "glr-regression.at:1364"
+$as_echo "$at_srcdir/glr-regression.at:1383:  \$PREPARSER ./glr-regr14"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr14" "glr-regression.at:1383"
 ( $at_check_trace;  $PREPARSER ./glr-regr14
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -167935,20 +177061,20 @@ start <- merge 'c' stack_explosion:
   yychar=YYEOF
 " | \
   $at_diff - "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1364"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1383"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1364: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1364"
+$as_echo "$at_srcdir/glr-regression.at:1383: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1383"
 ( $at_check_trace; 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/glr-regression.at:1364"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1383"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -167958,13 +177084,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_317
-#AT_START_318
-at_fn_group_banner 318 'glr-regression.at:1386' \
+#AT_STOP_344
+#AT_START_345
+at_fn_group_banner 345 'glr-regression.at:1405' \
   "Leaked semantic values when reporting ambiguity" "" 22
 at_xfail=no
 (
-  $as_echo "318. $at_setup_line: testing $at_desc ..."
+  $as_echo "345. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -167984,7 +177110,7 @@ cat >glr-regr15.y <<'_ATEOF'
 
 %{
 # include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static int parent_rhs_before_value = 0;
 # define USE(val)
@@ -168026,9 +177152,8 @@ ambiguity2: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -168067,9 +177192,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/glr-regression.at:1452: 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/glr-regression.at:1471: 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 glr-regr15.c glr-regr15.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1452"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1471"
 ( $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 glr-regr15.c glr-regr15.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -168077,29 +177202,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/glr-regression.at:1452"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1452: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr15.c glr-regr15.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 glr-regr15.c glr-regr15.y" "glr-regression.at:1452"
+$as_echo "$at_srcdir/glr-regression.at:1471: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr15.c glr-regr15.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 glr-regr15.c glr-regr15.y" "glr-regression.at:1471"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr15.c glr-regr15.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/glr-regression.at:1452"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1452: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1471: \$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' "glr-regression.at:1452"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1471"
 ( $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
@@ -168108,25 +177233,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1452"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1452: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1471: \$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' "glr-regression.at:1452"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1471"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1452"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168134,8 +177259,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1452: bison -o glr-regr15.c glr-regr15.y"
-at_fn_check_prepare_trace "glr-regression.at:1452"
+$as_echo "$at_srcdir/glr-regression.at:1471: bison -o glr-regr15.c glr-regr15.y"
+at_fn_check_prepare_trace "glr-regression.at:1471"
 ( $at_check_trace; bison -o glr-regr15.c glr-regr15.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168144,41 +177269,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr15.y: conflicts: 2 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1452"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1471"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1455: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr15 glr-regr15.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr15 glr-regr15.c $LIBS" "glr-regression.at:1455"
+$as_echo "$at_srcdir/glr-regression.at:1474: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1474"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1474"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1474: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr15 glr-regr15.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr15 glr-regr15.c $LIBS" "glr-regression.at:1474"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr15 glr-regr15.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/glr-regression.at:1455"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1474"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1457:  \$PREPARSER ./glr-regr15"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr15" "glr-regression.at:1457"
+$as_echo "$at_srcdir/glr-regression.at:1476:  \$PREPARSER ./glr-regr15"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr15" "glr-regression.at:1476"
 ( $at_check_trace;  $PREPARSER ./glr-regr15
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1457"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1476"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1457: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1457"
+$as_echo "$at_srcdir/glr-regression.at:1476: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1476"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168187,7 +177325,7 @@ echo >>"$at_stderr"; $as_echo "syntax is ambiguous
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1457"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1476"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168197,13 +177335,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_318
-#AT_START_319
-at_fn_group_banner 319 'glr-regression.at:1468' \
+#AT_STOP_345
+#AT_START_346
+at_fn_group_banner 346 'glr-regression.at:1487' \
   "Leaked lookahead after nondeterministic parse syntax error" "" 22
 at_xfail=no
 (
-  $as_echo "319. $at_setup_line: testing $at_desc ..."
+  $as_echo "346. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -168224,7 +177362,7 @@ cat >glr-regr16.y <<'_ATEOF'
 %{
 # include <stdlib.h>
 # include <assert.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
   static int lookahead_value = 0;
 # define USE(val)
@@ -168241,9 +177379,8 @@ alt2: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -168283,9 +177420,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/glr-regression.at:1512: 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/glr-regression.at:1531: 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 glr-regr16.c glr-regr16.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1512"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1531"
 ( $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 glr-regr16.c glr-regr16.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -168293,29 +177430,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/glr-regression.at:1512"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1512: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr16.c glr-regr16.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 glr-regr16.c glr-regr16.y" "glr-regression.at:1512"
+$as_echo "$at_srcdir/glr-regression.at:1531: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr16.c glr-regr16.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 glr-regr16.c glr-regr16.y" "glr-regression.at:1531"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr16.c glr-regr16.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/glr-regression.at:1512"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1512: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1531: \$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' "glr-regression.at:1512"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1531"
 ( $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
@@ -168324,25 +177461,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1512"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1512: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1531: \$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' "glr-regression.at:1512"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1531"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1512"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168350,8 +177487,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1512: bison -o glr-regr16.c glr-regr16.y"
-at_fn_check_prepare_trace "glr-regression.at:1512"
+$as_echo "$at_srcdir/glr-regression.at:1531: bison -o glr-regr16.c glr-regr16.y"
+at_fn_check_prepare_trace "glr-regression.at:1531"
 ( $at_check_trace; bison -o glr-regr16.c glr-regr16.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168360,41 +177497,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr16.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1512"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1531"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1515: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr16 glr-regr16.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr16 glr-regr16.c $LIBS" "glr-regression.at:1515"
+$as_echo "$at_srcdir/glr-regression.at:1534: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1534"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1534"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1534: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr16 glr-regr16.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr16 glr-regr16.c $LIBS" "glr-regression.at:1534"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr16 glr-regr16.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/glr-regression.at:1515"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1534"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1517:  \$PREPARSER ./glr-regr16"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr16" "glr-regression.at:1517"
+$as_echo "$at_srcdir/glr-regression.at:1536:  \$PREPARSER ./glr-regr16"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr16" "glr-regression.at:1536"
 ( $at_check_trace;  $PREPARSER ./glr-regr16
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1517"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1517: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1517"
+$as_echo "$at_srcdir/glr-regression.at:1536: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1536"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168403,7 +177553,7 @@ echo >>"$at_stderr"; $as_echo "syntax error
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1517"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1536"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168413,13 +177563,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_319
-#AT_START_320
-at_fn_group_banner 320 'glr-regression.at:1528' \
+#AT_STOP_346
+#AT_START_347
+at_fn_group_banner 347 'glr-regression.at:1547' \
   "Uninitialized location when reporting ambiguity" "" 22
 at_xfail=no
 (
-  $as_echo "320. $at_setup_line: testing $at_desc ..."
+  $as_echo "347. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -168443,17 +177593,10 @@ cat >glr-regr17.y <<'_ATEOF'
 %union { int dummy; }
 
 %{
-  static void yyerror (YYLTYPE *llocp, const char *msg);
+  static void yyerror (YYLTYPE const * const llocp,  const char *msg);
   static int yylex (YYSTYPE *lvalp, YYLTYPE *llocp);
 %}
 
-%initial-action {
-  @$.first_line = 1;
-  @$.first_column = 1;
-  @$.last_line = 1;
-  @$.last_column = 1;
-}
-
 %%
 
 /* Tests the case of an empty RHS that has inherited the location of the
@@ -168479,17 +177622,9 @@ empty2: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (YYLTYPE *llocp, const char *msg)
+void yyerror (YYLTYPE const * const llocp,  const char *msg)
 {
-
-  fprintf (stderr, "%d.%d",
-           (*llocp).first_line, (*llocp).first_column);
-  if ((*llocp).first_line != (*llocp).last_line)
-    fprintf (stderr, "-%d.%d",
-             (*llocp).last_line,  (*llocp).last_column - 1);
-  else if ((*llocp).first_column != (*llocp).last_column - 1)
-    fprintf (stderr, "-%d",
-             (*llocp).last_column - 1);
+  YY_LOCATION_PRINT (stderr, (*llocp));
   fprintf (stderr, ": ");
   fprintf (stderr, "%s\n", msg);
 }
@@ -168522,9 +177657,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/glr-regression.at:1597: 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/glr-regression.at:1609: 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 glr-regr17.c glr-regr17.y"
-at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1597"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1609"
 ( $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 glr-regr17.c glr-regr17.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
@@ -168532,29 +177667,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/glr-regression.at:1597"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1597: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr17.c glr-regr17.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 glr-regr17.c glr-regr17.y" "glr-regression.at:1597"
+$as_echo "$at_srcdir/glr-regression.at:1609: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr17.c glr-regr17.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 glr-regr17.c glr-regr17.y" "glr-regression.at:1609"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison --xml=xml-tests/test.xml -o glr-regr17.c glr-regr17.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/glr-regression.at:1597"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1597: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1609: \$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' "glr-regression.at:1597"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1609"
 ( $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
@@ -168563,25 +177698,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1597"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1597: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1609: \$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' "glr-regression.at:1597"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1609"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1597"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168589,8 +177724,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1597: bison -o glr-regr17.c glr-regr17.y"
-at_fn_check_prepare_trace "glr-regression.at:1597"
+$as_echo "$at_srcdir/glr-regression.at:1609: bison -o glr-regr17.c glr-regr17.y"
+at_fn_check_prepare_trace "glr-regression.at:1609"
 ( $at_check_trace; bison -o glr-regr17.c glr-regr17.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168599,41 +177734,54 @@ echo >>"$at_stderr"; $as_echo "glr-regr17.y: conflicts: 3 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1597"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1609"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1600: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr17 glr-regr17.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr17 glr-regr17.c $LIBS" "glr-regression.at:1600"
+$as_echo "$at_srcdir/glr-regression.at:1612: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1612"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1612"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1612: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o glr-regr17 glr-regr17.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr17 glr-regr17.c $LIBS" "glr-regression.at:1612"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o glr-regr17 glr-regr17.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/glr-regression.at:1600"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1612"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1602:  \$PREPARSER ./glr-regr17"
-at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr17" "glr-regression.at:1602"
+$as_echo "$at_srcdir/glr-regression.at:1614:  \$PREPARSER ./glr-regr17"
+at_fn_check_prepare_dynamic " $PREPARSER ./glr-regr17" "glr-regression.at:1614"
 ( $at_check_trace;  $PREPARSER ./glr-regr17
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 echo stderr:; tee stderr <"$at_stderr"
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1602"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1602: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1602"
+$as_echo "$at_srcdir/glr-regression.at:1614: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1614"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168642,7 +177790,7 @@ echo >>"$at_stderr"; $as_echo "1.1-2.2: syntax is ambiguous
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1602"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1614"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168652,13 +177800,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_320
-#AT_START_321
-at_fn_group_banner 321 'glr-regression.at:1613' \
+#AT_STOP_347
+#AT_START_348
+at_fn_group_banner 348 'glr-regression.at:1625' \
   "Missed %merge type warnings when LHS type is declared later" "" 22
 at_xfail=no
 (
-  $as_echo "321. $at_setup_line: testing $at_desc ..."
+  $as_echo "348. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -168676,7 +177824,7 @@ cat >glr-regr18.y <<'_ATEOF'
 
 %{
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -168700,9 +177848,8 @@ sym3: %merge<merge> { $$ = 0; } ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -168730,20 +177877,20 @@ _ATEOF
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1652: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o glr-regr18.c glr-regr18.y"
-at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o glr-regr18.c glr-regr18.y" "glr-regression.at:1652"
+$as_echo "$at_srcdir/glr-regression.at:1664: VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o glr-regr18.c glr-regr18.y"
+at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison -o glr-regr18.c glr-regr18.y" "glr-regression.at:1664"
 ( $at_check_trace; VALGRIND_OPTS="$VALGRIND_OPTS --leak-check=summary --show-reachable=no"; export VALGRIND_OPTS; bison -o glr-regr18.c glr-regr18.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "glr-regr18.y:26.18-24: result type clash on merge function 'merge': <type2> != <type1>
-glr-regr18.y:25.18-24: previous declaration
-glr-regr18.y:27.13-19: result type clash on merge function 'merge': <type3> != <type2>
-glr-regr18.y:26.18-24: previous declaration
+echo >>"$at_stderr"; $as_echo "glr-regr18.y:26.18-24: error: result type clash on merge function 'merge': <type2> != <type1>
+glr-regr18.y:25.18-24:     previous declaration
+glr-regr18.y:27.13-19: error: result type clash on merge function 'merge': <type3> != <type2>
+glr-regr18.y:26.18-24:     previous declaration
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 1 $at_status "$at_srcdir/glr-regression.at:1652"
+at_fn_check_status 1 $at_status "$at_srcdir/glr-regression.at:1664"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168753,13 +177900,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_321
-#AT_START_322
-at_fn_group_banner 322 'glr-regression.at:1666' \
+#AT_STOP_348
+#AT_START_349
+at_fn_group_banner 349 'glr-regression.at:1678' \
   "Ambiguity reports" "                              " 22
 at_xfail=no
 (
-  $as_echo "322. $at_setup_line: testing $at_desc ..."
+  $as_echo "349. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -168777,7 +177924,7 @@ cat >input.y <<'_ATEOF'
 %{
   #include <stdio.h>
   #include <stdlib.h>
-  static void yyerror (const char *msg);
+  static void yyerror ( const char *msg);
   static int yylex (void);
 %}
 
@@ -168792,6 +177939,13 @@ start:
 b: 'b';
 d: /* nada.  */;
 %%
+#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)
@@ -168805,14 +177959,6 @@ int yylex (void)
   ;
   return res;
 }
-#include <stdio.h>
-/* A C error reporting function.  */
-static
-void yyerror (const char *msg)
-{
-
-  fprintf (stderr, "%s\n", msg);
-}
 int
 main (void)
 {
@@ -168830,9 +177976,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/glr-regression.at:1700: 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/glr-regression.at:1712: 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' "glr-regression.at:1700"
+at_fn_check_prepare_notrace 'an embedded newline' "glr-regression.at:1712"
 ( $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>&-
@@ -168840,29 +177986,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/glr-regression.at:1700"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1700: 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" "glr-regression.at:1700"
+$as_echo "$at_srcdir/glr-regression.at:1712: 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" "glr-regression.at:1712"
 ( $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/glr-regression.at:1700"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
     cp xml-tests/test.output expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1700: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1712: \$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' "glr-regression.at:1700"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1712"
 ( $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
@@ -168871,25 +178017,25 @@ at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1700"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
-$as_echo "$at_srcdir/glr-regression.at:1700: \$XSLTPROC \\
+$as_echo "$at_srcdir/glr-regression.at:1712: \$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' "glr-regression.at:1700"
+             xml-tests/test.xml | sort"
+at_fn_check_prepare_notrace 'a `...` command substitution' "glr-regression.at:1712"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
 at_fn_diff_devnull "$at_stderr" || at_failed=:
 $at_diff expout "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1700"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -168897,8 +178043,8 @@ $at_traceon; }
   at_restore_special_files
 fi
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1700: bison -o input.c input.y"
-at_fn_check_prepare_trace "glr-regression.at:1700"
+$as_echo "$at_srcdir/glr-regression.at:1712: bison -o input.c input.y"
+at_fn_check_prepare_trace "glr-regression.at:1712"
 ( $at_check_trace; bison -o input.c input.y
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -168907,41 +178053,54 @@ echo >>"$at_stderr"; $as_echo "input.y: conflicts: 1 reduce/reduce
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1700"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1712"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1703: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
-at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "glr-regression.at:1703"
+$as_echo "$at_srcdir/glr-regression.at:1715: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "glr-regression.at:1715"
+( $at_check_trace; $BISON_C_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/glr-regression.at:1715"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
+$as_echo "$at_srcdir/glr-regression.at:1715: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
+at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "glr-regression.at:1715"
 ( $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/glr-regression.at:1703"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1715"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1705:  \$PREPARSER ./input"
-at_fn_check_prepare_dynamic " $PREPARSER ./input" "glr-regression.at:1705"
+$as_echo "$at_srcdir/glr-regression.at:1717:  \$PREPARSER ./input"
+at_fn_check_prepare_dynamic " $PREPARSER ./input" "glr-regression.at:1717"
 ( $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/glr-regression.at:1705"
+at_fn_check_status 1 $at_status "$at_srcdir/glr-regression.at:1717"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
 { set +x
-$as_echo "$at_srcdir/glr-regression.at:1705: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
-at_fn_check_prepare_trace "glr-regression.at:1705"
+$as_echo "$at_srcdir/glr-regression.at:1717: sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr"
+at_fn_check_prepare_trace "glr-regression.at:1717"
 ( $at_check_trace; sed >&2 -e '/^profiling:.*:Merge mismatch for summaries/d' stderr
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
@@ -169004,7 +178163,7 @@ Cleanup: popping token 'a' ()
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
-at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1705"
+at_fn_check_status 0 $at_status "$at_srcdir/glr-regression.at:1717"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
@@ -169014,13 +178173,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_322
-#AT_START_323
-at_fn_group_banner 323 'push.at:24' \
+#AT_STOP_349
+#AT_START_350
+at_fn_group_banner 350 'push.at:24' \
   "Memory Leak for Early Deletion" "                 " 23
 at_xfail=no
 (
-  $as_echo "323. $at_setup_line: testing $at_desc ..."
+  $as_echo "350. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -169040,7 +178199,7 @@ cat >input.y <<'_ATEOF'
   #include <assert.h>
   #include <stdio.h>
   #define YYINITDEPTH 1
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 %}
 
 %define api.pure
@@ -169055,9 +178214,8 @@ start: 'a' 'b' 'c' ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -169139,15 +178297,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/push.at:73"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/push.at:73: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "push.at:73"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -169175,6 +178333,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/push.at:74: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "push.at:74"
+( $at_check_trace; $BISON_C_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/push.at:74"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/push.at:74: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "push.at:74"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -169219,13 +178390,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_323
-#AT_START_324
-at_fn_group_banner 324 'push.at:83' \
+#AT_STOP_350
+#AT_START_351
+at_fn_group_banner 351 'push.at:83' \
   "Multiple impure instances" "                      " 23
 at_xfail=no
 (
-  $as_echo "324. $at_setup_line: testing $at_desc ..."
+  $as_echo "351. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -169246,7 +178417,7 @@ cat >input.y <<'_ATEOF'
 %{
   #include <assert.h>
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 static int yylex (void);
 %}
 
@@ -169260,9 +178431,8 @@ start: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 #include <assert.h>
@@ -169353,15 +178523,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/push.at:133"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/push.at:133: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "push.at:133"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -169389,6 +178559,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/push.at:133: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "push.at:133"
+( $at_check_trace; $BISON_C_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/push.at:133"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/push.at:133: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "push.at:133"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -169445,7 +178628,7 @@ cat >input.y <<'_ATEOF'
 %{
   #include <assert.h>
   #include <stdio.h>
-static void yyerror (const char *msg);
+static void yyerror ( const char *msg);
 
 %}
 
@@ -169459,9 +178642,8 @@ start: ;
 #include <stdio.h>
 /* A C error reporting function.  */
 static
-void yyerror (const char *msg)
+void yyerror ( const char *msg)
 {
-
   fprintf (stderr, "%s\n", msg);
 }
 
@@ -169540,15 +178722,15 @@ at_fn_check_status 0 $at_status "$at_srcdir/push.at:134"
 $at_failed && at_fn_log_failure
 $at_traceon; }
 
-  cp xml-tests/test.dot expout
+  sort xml-tests/test.dot > expout
   { set +x
 $as_echo "$at_srcdir/push.at:134: \$XSLTPROC \\
              \`VALGRIND_OPTS=\"\$VALGRIND_OPTS --leak-check=summary --show-reachable=no\"; export VALGRIND_OPTS; bison --print-datadir\`/xslt/xml2dot.xsl \\
-             xml-tests/test.xml"
+             xml-tests/test.xml | sort"
 at_fn_check_prepare_notrace 'a `...` command substitution' "push.at:134"
 ( $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
+             xml-tests/test.xml | sort
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
@@ -169576,6 +178758,19 @@ $at_traceon; }
 
 
 { set +x
+$as_echo "$at_srcdir/push.at:134: \$BISON_C_WORKS"
+at_fn_check_prepare_dynamic "$BISON_C_WORKS" "push.at:134"
+( $at_check_trace; $BISON_C_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/push.at:134"
+$at_failed && at_fn_log_failure
+$at_traceon; }
+
+{ set +x
 $as_echo "$at_srcdir/push.at:134: \$CC \$CFLAGS \$CPPFLAGS \$LDFLAGS -o input input.c \$LIBS"
 at_fn_check_prepare_dynamic "$CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS" "push.at:134"
 ( $at_check_trace; $CC $CFLAGS $CPPFLAGS $LDFLAGS -o input input.c $LIBS
@@ -169624,13 +178819,13 @@ $at_traceon; }
   $at_times_p && times >"$at_times_file"
 ) 5>&1 2>&1 7>&- | eval $at_tee_pipe
 read at_status <"$at_status_file"
-#AT_STOP_324
-#AT_START_325
-at_fn_group_banner 325 'push.at:144' \
+#AT_STOP_351
+#AT_START_352
+at_fn_group_banner 352 'push.at:144' \
   "Unsupported Skeletons" "                          " 23
 at_xfail=no
 (
-  $as_echo "325. $at_setup_line: testing $at_desc ..."
+  $as_echo "352. $at_setup_line: testing $at_desc ..."
   $at_traceon
 
 
@@ -169652,7 +178847,7 @@ at_fn_check_prepare_dynamic "VALGRIND_OPTS=\"$VALGRIND_OPTS --leak-check=summary
 ) >>"$at_stdout" 2>>"$at_stderr" 5>&-
 at_status=$? at_failed=false
 $at_check_filter
-echo >>"$at_stderr"; $as_echo "input.y:2.9-21: %define variable 'api.push-pull' is not used
+echo >>"$at_stderr"; $as_echo "input.y:2.9-21: error: %define variable 'api.push-pull' is not used
 " | \
   $at_diff - "$at_stderr" || at_failed=:
 at_fn_diff_devnull "$at_stdout" || at_failed=:
@@ -169666,4 +178861,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_325
+#AT_STOP_352
index 2a5211a..6f3a221 100644 (file)
@@ -1,6 +1,6 @@
 # Test suite for GNU Bison.                            -*- Autotest -*-
 
-# Copyright (C) 2000-2004, 2006-2007, 2009-2012 Free Software
+# Copyright (C) 2000-2004, 2006-2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
index 338c164..56a1fa8 100644 (file)
@@ -1,6 +1,6 @@
 # Torturing Bison.                                    -*- Autotest -*-
 
-# Copyright (C) 2001-2002, 2004-2007, 2009-2012 Free Software
+# Copyright (C) 2001-2002, 2004-2007, 2009-2013 Free Software
 # Foundation, Inc.
 
 # This program is free software: you can redistribute it and/or modify
@@ -125,7 +125,7 @@ EOF
 ]])
 AT_BISON_OPTION_POPDEFS
 
-AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
+AT_CHECK([$PERL -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
 ])
 
@@ -214,7 +214,7 @@ main (void)
 EOF
 ]])
 
-AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
+AT_CHECK([$PERL -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
 AT_BISON_OPTION_POPDEFS
 ])
@@ -269,6 +269,7 @@ print <<EOF;
 %error-verbose
 %debug
 %{
+]AT_DATA_SOURCE_PROLOGUE[
 # include <stdio.h>
 # include <stdlib.h>
 # include <assert.h>
@@ -350,7 +351,7 @@ main (void)
 EOF
 ]])
 
-AT_CHECK([perl -w ./gengram.pl $2 || exit 77], 0, [stdout])
+AT_CHECK([$PERL -w ./gengram.pl $2 || exit 77], 0, [stdout])
 mv stdout $1
 AT_BISON_OPTION_POPDEFS
 ])
@@ -383,7 +384,7 @@ m4_define([AT_DATA_STACK_TORTURE],
 [AT_BISON_OPTION_PUSHDEFS([$2])
 # A grammar of parens growing the stack thanks to right recursion.
 # exp:
-AT_DATA([input.y],
+AT_DATA_GRAMMAR([input.y],
 [[%{
 #include <errno.h>
 #include <limits.h>
@@ -412,38 +413,44 @@ yylex (void)
     return EOF;
 }
 
-int
-main (int argc, const char **argv)
+/* Return argv[1] as an int. */
+static int
+get_args (int argc, const char **argv)
 {
+  int res;
   char *endp;
-  YYSTYPE yylval_init;
   assert (argc == 2);
-  yylval_init = strtol (argv[1], &endp, 10);
+  res = strtol (argv[1], &endp, 10);
   assert (argv[1] != endp);
-  assert (0 <= yylval_init);
-  assert (yylval_init <= INT_MAX);
+  assert (0 <= res);
+  assert (res <= INT_MAX);
   assert (errno != ERANGE);
-  yydebug = 1;
-  {
-    int count;
-    int status;
-]m4_bmatch([$2], [%push-],
-[[    yypstate *ps = yypstate_new ();
-]])[    for (count = 0; count < 2; ++count)
-      {
-        int new_status;
-        yylval = yylval_init;
-]m4_bmatch([$2], [%push-],
-[[        new_status = yypull_parse (ps);
-]],
-[[        new_status = yyparse ();
-]])[        assert (0 <= count || new_status == status);
+  return res;
+}
+
+int
+main (int argc, const char **argv)
+{
+  YYSTYPE yylval_init = get_args (argc, argv);
+  int status = 0;
+  int count;
+]m4_bmatch([$2], [api.push-pull both],
+[[  yypstate *ps = yypstate_new ();
+]])[  yydebug = 1;
+  for (count = 0; count < 2; ++count)
+    {
+      int new_status;
+      yylval = yylval_init;
+      new_status = ]m4_bmatch([$2], [api.push-pull both],
+                              [[yypull_parse (ps)]],
+                              [[yyparse ()]])[;
+      if (count == 0)
         status = new_status;
-      }
-]m4_bmatch([$2], [%push-],
-[[    yypstate_delete (ps);
-]])[    return status;
-  }
+      else
+        assert (new_status == status);
+    }]m4_bmatch([$2], [api.push-pull both],[[
+  yypstate_delete (ps);]])[
+  return status;
 }
 ]])
 AT_BISON_OPTION_POPDEFS([$2])