summaryrefslogtreecommitdiff
path: root/debian/patches/gm2-updates.diff
diff options
context:
space:
mode:
Diffstat (limited to 'debian/patches/gm2-updates.diff')
-rw-r--r--debian/patches/gm2-updates.diff32628
1 files changed, 32628 insertions, 0 deletions
diff --git a/debian/patches/gm2-updates.diff b/debian/patches/gm2-updates.diff
new file mode 100644
index 0000000..d6c6800
--- /dev/null
+++ b/debian/patches/gm2-updates.diff
@@ -0,0 +1,32628 @@
+# DP: gm2 updates up to 20191107
+
+git diff de2034bc023a89e45bec67e54d2a63982080c316 674c0c7b7453b4998ac25ae57698be2818ec7352 | filterdiff --strip=2 --addoldprefix=a/src/ --addnewprefix=b/src/ --remove-timestamp | egrep -v '^(diff|index)'
+
+--- a/src/gcc/gm2/ChangeLog
++++ b/src/gcc/gm2/ChangeLog
+@@ -1,4 +1,340 @@
+-2019-08-05 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++2019-11-05 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: (gm2/gm2-libs/gm2-libs-target.h)
++ removed. (gm2/gm2-libs-iso/%.o) replaced gm2-libs-target
++ with gm2-libs-host.h. (gm2/gm2-libs/gm2-libs-host.h)
++ pass --libdir, --libexecdir to configure.
++ (build-libs-min) removed.
++ (archive-libs-min) removed.
++ (build-libs) removed.
++ (archive-libs) removed.
++ (build-compiler) removed.
++ (gm2/gm2-libs/libgm2.a) removed.
++ (build-libs-iso) removed.
++ (archive-libs-iso) removed.
++ (build-libs-ulm) removed.
++ (archive-libs-ulm) removed.
++ (build-libs-pim) removed.
++ (archive-libs-pim) removed.
++ (build-libs-coroutines) removed.
++
++2019-11-04 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: (gm2.all.cross) added
++ plugin/m2rte$(exeext).so as a dependency.
++ * gm2/gm2-libs/config-host.in: (AC_CHECK_HEADERS)
++ quote all header files.
++ * gm2/Make-lang.in: (gm2.all.cross) added
++ $(GM2_LINK_TOOLS) as dependencies.
++
++2019-10-30 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: pruned old comments. (GM2_DIRS)
++ removed. All directory targets are tested before being created.
++ * gm2/config-lang.in: directory creation moved into configure.
++ (fixes a bug reported by Matthias Klose) where make install
++ would relink cc1gm2.
++
++2019-10-29 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: (gm2/gm2-gcc/%.o) added target dependencies.
++ (gm2/gm2-compiler-boot/m2flex.o) added target dependencies.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)libc.o) explicit rule.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)mcrts.o) explicit rule.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)UnixArgs.o) explicit rule.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)Selective.o) explicit rule.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)termios.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)SysExceptions.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)ldtoa.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)dtoa.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)wrapc.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)SYSTEM.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)errno.o) explicit rule.
++ (gm2/gm2-pge/boot/$(SRC_PREFIX)pth.o) explicit rule.
++ * testsuite/gm2/iso/run/pass/unbounded.mod: added many
++ more asserts.
++ * gm2/Make-lang.in: (gm2/gm2-gcc/%.o) added MCDEPS LIBDEPS.
++ (gm2/gm2-pge-boot/$(SRC_PREFIX)%.o) place C file into
++ gm2/gm2-pge-boot. (gm2/gm2-pge-boot/%.o) place C file into
++ gm2/gm2-pge-boot.
++ * gm2/Make-lang.in: (gm2.install-plugin) removed dependancy to
++ plygin/m2rte$(exeext).so.
++
++2019-10-23 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/mc-boot/GArgs.c: regenerated.
++ * gm2/mc-boot/GCmdArgs.c: regenerated.
++ * gm2/mc-boot/GDebug.c: regenerated.
++ * gm2/mc-boot/GDynamicStrings.c: regenerated.
++ * gm2/mc-boot/GEnvironment.c: regenerated.
++ * gm2/mc-boot/GFIO.c: regenerated.
++ * gm2/mc-boot/GFormatStrings.c: regenerated.
++ * gm2/mc-boot/GIO.c: regenerated.
++ * gm2/mc-boot/GIndexing.c: regenerated.
++ * gm2/mc-boot/GM2EXCEPTION.c: regenerated.
++ * gm2/mc-boot/GM2RTS.c: regenerated.
++ * gm2/mc-boot/GNumberIO.c: regenerated.
++ * gm2/mc-boot/GPushBackInput.c: regenerated.
++ * gm2/mc-boot/GRTExceptions.c: regenerated.
++ * gm2/mc-boot/GRTco.h: regenerated.
++ * gm2/mc-boot/GRTint.c: regenerated.
++ * gm2/mc-boot/GSFIO.c: regenerated.
++ * gm2/mc-boot/GStdIO.c: regenerated.
++ * gm2/mc-boot/GStrCase.c: regenerated.
++ * gm2/mc-boot/GStrIO.c: regenerated.
++ * gm2/mc-boot/GStrLib.c: regenerated.
++ * gm2/mc-boot/GStringConvert.c: regenerated.
++ * gm2/mc-boot/GSysStorage.c: regenerated.
++ * gm2/mc-boot/GTimeString.c: regenerated.
++ * gm2/mc-boot/Galists.c: regenerated.
++ * gm2/mc-boot/Gdecl.c: regenerated.
++ * gm2/mc-boot/Gkeyc.c: regenerated.
++ * gm2/mc-boot/Glists.c: regenerated.
++ * gm2/mc-boot/GmcComment.c: regenerated.
++ * gm2/mc-boot/GmcComp.c: regenerated.
++ * gm2/mc-boot/GmcDebug.c: regenerated.
++ * gm2/mc-boot/GmcError.c: regenerated.
++ * gm2/mc-boot/GmcFileName.c: regenerated.
++ * gm2/mc-boot/GmcLexBuf.c: regenerated.
++ * gm2/mc-boot/GmcMetaError.c: regenerated.
++ * gm2/mc-boot/GmcOptions.c: regenerated.
++ * gm2/mc-boot/GmcPreprocess.c: regenerated.
++ * gm2/mc-boot/GmcPretty.c: regenerated.
++ * gm2/mc-boot/GmcPrintf.c: regenerated.
++ * gm2/mc-boot/GmcQuiet.c: regenerated.
++ * gm2/mc-boot/GmcSearch.c: regenerated.
++ * gm2/mc-boot/GmcStack.c: regenerated.
++ * gm2/mc-boot/GmcStream.c: regenerated.
++ * gm2/mc-boot/Gmcp1.c: regenerated.
++ * gm2/mc-boot/Gmcp2.c: regenerated.
++ * gm2/mc-boot/Gmcp3.c: regenerated.
++ * gm2/mc-boot/Gmcp4.c: regenerated.
++ * gm2/mc-boot/Gmcp5.c: regenerated.
++ * gm2/mc-boot/GnameKey.c: regenerated.
++ * gm2/mc-boot/GsymbolKey.c: regenerated.
++ * gm2/mc-boot/Gvarargs.c: regenerated.
++ * gm2/mc-boot/Gwlists.c: regenerated.
++ * gm2/mc/decl.mod: (forceCompoundStatement) New boolean.
++ (doCompoundStmt) check whether a compound statement should be
++ forced. (doElsifC) check whether a compound statement should
++ be forced.
++ * testsuite/gm2/errors/fail/gm2.exp: (-Wunused-variable) added.
++
++2019-10-22 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/gm2-gcc/m2expr.c: (append_digit) use temporary
++ variables to hold the intermediate results before testing
++ if they are less than the rhs.
++ * append_m2_digit: (append_digit) use temporary
++ variables to hold the intermediate results before testing
++ if they are less than the rhs.
++ * gm2/gm2-libs-ch/dtoa.c: (calcmaxsig) use memmove rather
++ than strncpy. (calcsign) use memmove rather
++ than strncpy.
++ * gm2/mc-boot-ch/Gdtoa.c: (calcmaxsig) use memmove rather
++ than strncpy. (calcsign) use memmove rather
++ than strncpy.
++ * libgm2/libpim/dtoa.c: (calcmaxsig) use memmove rather
++ than strncpy. (calcsign) use memmove rather
++ than strncpy.
++
++2019-10-10 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/m2.flex: use time_t rather than long as the
++ parameter type casted to 0.
++ * gm2/lang.opt: frange, findex, fwholediv re-enabled.
++ * gm2/gm2-lang.c: frange, findex, fwholediv re-enabled.
++ * gm2/gm2-libs/Builtins.def: added boilerplate.
++ (longjmp) removed. (setjmp) removed.
++ Associated testsuite tests archived.
++
++2019-09-21 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/mc/decl.mod: huge amount of changes as the
++ varient record for intrinsics were being used
++ inconsistently.
++ * gm2/mc-boot: regenerated.
++
++2019-09-18 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/gm2-libs/FIO.mod: bugfix via valgrind, off by one
++ error corrected.
++ * (mc) regenerated.
++
++2019-09-04 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/tools-src/def2texi.py: replaced print((x)) with
++ print(x).
++
++2019-09-04 Matthias Klose <doko@cs.tu-berlin.de>
++
++ * gm2/examples/gravity/testsim.py: python2 to 3 conversion.
++ * gm2/examples/gravity/testsim2.py: python2 to 3 conversion.
++ * gm2/examples/pge/examples/boxes.py: python2 to 3 conversion.
++ * gm2/examples/pge/examples/exampleBoxes.py: python2 to 3 conversion.
++ * gm2/examples/pge/examples/triangle.py: python2 to 3 conversion.
++ * gm2/examples/pge/fig.py: python2 to 3 conversion.
++ * gm2/examples/pge/max2code.py: python2 to 3 conversion.
++ * gm2/examples/pge/mxmmaxima.py: python2 to 3 conversion.
++ * gm2/examples/pge/mxmout.py: python2 to 3 conversion.
++ * gm2/examples/pge/mxmparser.py: python2 to 3 conversion.
++ * gm2/examples/pge/mxmtree.py: python2 to 3 conversion.
++ * gm2/examples/pge/pge.py: python2 to 3 conversion.
++ * gm2/examples/pge/pgeplayback.py: python2 to 3 conversion.
++ * gm2/examples/pge/pgepygame.py: python2 to 3 conversion.
++ * gm2/examples/pge/t.py: python2 to 3 conversion.
++ * gm2/examples/server/client.py: python2 to 3 conversion.
++ * gm2/examples/swig/dual/testdual.py: python2 to 3 conversion.
++ * gm2/examples/swig/exceptions/stresstiny.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/exceptions/testtiny.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/full-strlib/testcopy.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/full-strlib/testequ.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/full-strlib/testlen.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/full-strlib/testnum.py: python2 to 3
++ conversion.
++ * gm2/examples/swig/strlen/testlen.py: python2 to 3 conversion.
++ * gm2/examples/swig/strlib/testlen.py: python2 to 3 conversion.
++ * gm2/examples/swig/tiny/testtiny.py: python2 to 3 conversion.
++ * gm2/tools-src/array2index.py: python2 to 3 conversion.
++ * gm2/tools-src/def2texi.py: python2 to 3 conversion.
++ * gm2/tools-src/gensum.py: python2 to 3 conversion.
++ * gm2/tools-src/tidydates.py: python2 to 3 conversion.
++ * gm2/www/tools/texi2tr/src/navigation.py: python2 to 3 conversion.
++ * gm2/www/tools/texi2tr/src/outputdev.py: python2 to 3 conversion.
++ * gm2/www/tools/texi2tr/src/texi2tr.py: python2 to 3 conversion.
++ * gm2/Make-lang.in: use python3 rather than python2.
++ * gm2/examples/gravity/Makefile.in: use python3 rather than
++ python2.
++ * gm2/examples/gravity/README: reference python3.
++ * gm2/examples/pge/Makefile.in: use python3 rather than python2.
++ * gm2/examples/pge/debugthis: use python3 rather than python2.
++ * gm2/examples/pge/max2code: use python3 rather than python2.
++ * gm2/examples/pge/runfig: use python3 rather than python2.
++ * gm2/examples/pge/runthis: use python3 rather than python2.
++ * gm2/examples/swig/dual/Makefile.in: use python3 rather than
++ python2.
++ * gm2/examples/swig/exceptions/Makefile.in: use python3 rather
++ than python2.
++ * gm2/examples/swig/full-strlib/Makefile.in: use python3 rather
++ than python2.
++ * gm2/examples/swig/strio/Makefile.in: use python3 rather than
++ python2.
++ * gm2/examples/swig/strlen/Makefile: use python3 rather than
++ python2.
++ * gm2/examples/swig/strlib/Makefile.in: use python3 rather than
++ python2.
++ * gm2/examples/swig/tiny/Makefile.in: use python3 rather than
++ python2.
++ * gm2/www/Makefile.in: use python3 rather than python2.
++ * gm2/examples/gravity/testsim.py: python2 to 3 conversion.
++ * gm2/examples/gravity/testsim2.py: python2 to 3 conversion.
++ * gm2/examples/pge/examples/boxes.py: python2 to 3 conversion.
++ * gm2/examples/pge/examples/exampleBoxes.py: python2 to 3
++ conversion.
++ * gm2/examples/pge/examples/triangle.py: python2 to 3
++ conversion.
++ * gm2/examples/pge/fig.py: python2 to 3 conversion.
++ * gm2/examples/pge/max2code.py: python2 to 3 conversion.
++ * gm2/examples/pge/pge.py: python2 to 3 conversion.
++ * gm2/examples/pge/pgeplayback.py: python2 to 3 conversion.
++ * gm2/examples/pge/pgepygame.py: python2 to 3 conversion.
++ * gm2/examples/pge/t.py: python2 to 3 conversion.
++ * gm2/examples/server/client.py: python2 to 3 conversion.
++ * gm2/examples/swig/full-strlib/testequ.py: python2 to 3
++ conversion.
++ * gm2/tools-src/array2index.py: python2 to 3 conversion.
++ * gm2/tools-src/def2texi.py: python2 to 3 conversion.
++ * gm2/tools-src/gensum.py: python2 to 3 conversion.
++ * gm2/tools-src/tidydates.py: python2 to 3 conversion.
++ * gm2/www/tools/texi2tr/src/navigation.py: python2 to 3
++ conversion.
++ * gm2/www/tools/texi2tr/src/outputdev.py: python2 to 3
++ conversion.
++ * gm2/www/tools/texi2tr/src/texi2tr.py: python2 to 3
++ conversion.
++ * gm2/tools-src/def2texi.py: python2 to 3 conversion.
++
++2019-09-04 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/examples/pge/pge2d.py: removed.
++ * gm2/Make-lang.in: convert source build rules to use
++ $(STAMP). (gm2/gm2version.c) rewritten for $(STAMP).
++ (gm2.pod) rewritten for $(STAMP).
++ (gm2/gm2-libs.texi) rewritten for $(STAMP).
++ (gm2/gm2-ebnf.texi) rewritten for $(STAMP).
++ (gm2/SYSTEM-pim.texi) rewritten for $(STAMP).
++ (gm2/SYSTEM-iso.texi) rewritten for $(STAMP).
++ (gm2/Builtins.texi) rewritten for $(STAMP).
++ (gm2/version.texi) rewritten for $(STAMP).
++ (gm2/gm2-libs-boot/pthdummy.o) removed $(MCDEPS).
++
++2019-08-22 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: added $(srcdir) to prevent
++ race hazard in building from gm2/gm2-pge-boot/*c
++ files.
++
++2019-08-20 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: use -p parameter for mkdir.
++
++2019-08-20 Matthias Klose <doko@cs.tu-berlin.de>
++
++ * gm2/Make-lang.in: added dependancies for subdir
++ creation.
++
++2019-08-20 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/tools-src/buildsyntax: removed function keyword
++ to be sh complient rather than bash.
++ * gm2/tools-src/makeSystem: removed function keyword
++ to be sh complient rather than bash.
++ * gm2/tools-src/makeconfigure: removed function keyword
++ to be sh complient rather than bash.
++ * gm2/tools-src/makeversion: removed function keyword
++ to be sh complient rather than bash. Also use = rather
++ than ==.
++
++2019-08-16 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: (gm2/pge) added -lgcov.
++ (gm2/pg) added -lgcov. (gm2/ppg)
++ added -lgcov. (gm2/boot-bin/mc) added -lgcov.
++
++2019-08-13 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/Make-lang.in: (check-gm2) removed, use inbuilt
++ version. (lang_checks) include check-gm2.
++ * testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/examples/callingC/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/exceptions/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/extensions/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/imports/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/linking/libarchive/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/pim/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/gm2/types/run/pass/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++ * testsuite/lib/gm2.exp:
++ use rootme and rootme/gm2 rather than tmpdir.
++
++2019-08-13 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * gm2/lang-specs.h: added %d to the temporary
++ assembly file.
++
++2019-08-12 Gaius Mulley <gaius.mulley@southwales.ac.uk>
+
+ * New branch gcc_9_2_0_gm2
+ * gm2/configure.in: changed release number to 1.9.2.
+--- a/src/gcc/gm2/Make-lang.in
++++ b/src/gcc/gm2/Make-lang.in
+@@ -18,24 +18,6 @@
+ #along with GCC; see the file COPYING3. If not see
+ #<http://www.gnu.org/licenses/>.
+
+-# This file provides the language dependent support in the main Makefile.
+-# Each language makefile fragment must provide the following targets:
+-#
+-# foo.all.build, foo.all.cross, foo.start.encap, foo.rest.encap,
+-# foo.info, foo.dvi,
+-# foo.install-normal, foo.install-common, foo.install-info, foo.install-man,
+-# foo.uninstall,
+-# foo.mostlyclean, foo.clean, foo.distclean, foo.extraclean,
+-# foo.maintainer-clean, foo.stage1, foo.stage2, foo.stage3, foo.stage4
+-#
+-# where `foo' is the name of the language.
+-#
+-# It should also provide rules for:
+-#
+-# - making any compiler driver (eg: gm2)
+-# - the compiler proper (eg: cc1gm2)
+-# - define the names for selecting the language in LANGUAGES.
+-
+ # QUIAT=@
+ GM2_MAKE_DEBUG=
+
+@@ -107,7 +89,7 @@ gm2 m2 modula-2 modula2: xgm2$(exeext) xgcc$(exeext) cc1gm2$(exeext) \
+
+ GM2_PROG_DEP=xgm2$(exeext) xgcc$(exeext) cc1gm2$(exeext)
+
+-TEXI2HTML=python $(srcdir)/gm2/www/tools/texi2tr/src/texi2tr.py
++TEXI2HTML=python3 $(srcdir)/gm2/www/tools/texi2tr/src/texi2tr.py
+
+ include gm2/config-make
+ LIBSTDCXX=../$(TARGET_SUBDIR)/libstdc++-v3/src/.libs/libstdc++.a
+@@ -127,8 +109,11 @@ gm2/gm2spec.o: $(srcdir)/gm2/gm2spec.c $(SYSTEM_H) $(GCC_H) $(CONFIG_H) \
+ -DPREFIX=\"$(prefix)\" \
+ -c $(srcdir)/gm2/gm2spec.c $(OUTPUT_OPTION))
+
+-gm2/gm2version.c: force
++gm2/gm2version.c: gm2version-check; @true
++
++gm2version-check:
+ cd gm2 ; bash ../$(srcdir)/gm2/tools-src/makeversion -p ../$(srcdir)
++ $(STAMP) gm2version-check
+
+ gm2version.o: gm2/gm2version.c
+ (SHLIB_LINK='$(SHLIB_LINK)' \
+@@ -145,7 +130,7 @@ GM2_OBJS = $(GCC_OBJS) gm2/gm2version.o version.o \
+
+ # Create the compiler driver for xgm2.
+ xgm2$(exeext): $(GM2_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a $(LIBDEPS) \
+- $(GM2_DIRS) gm2/gm2config.h
++ gm2/gm2config.h
+ +$(LINKER) $(ALL_LINKERFLAGS) $(LDFLAGS) -o $@ \
+ $(GM2_OBJS) $(EXTRA_GCC_OBJS) libcommon-target.a \
+ $(EXTRA_GCC_LIBS) $(LIBS)
+@@ -166,47 +151,16 @@ GM2_LIB_DIR_LOG= $(DESTDIR)$(libsubdir)/gm2/logitech
+ GM2_LIB_DIR_PCO= $(DESTDIR)$(libsubdir)/gm2/pim-coroutine
+ GM2_LIB_DIR_ISO= $(DESTDIR)$(libsubdir)/gm2/iso
+ GM2_LIB_DIR_MIN= $(DESTDIR)$(libsubdir)/gm2/min
+-GM2_DIRS = $(objdir)/gm2/gm2-compiler-boot \
+- $(objdir)/gm2/gm2-libs-boot \
+- $(objdir)/gm2/gm2-ppg-boot \
+- $(objdir)/gm2/gm2-pge-boot \
+- $(objdir)/gm2/gm2-pg-boot \
+- $(objdir)/gm2/gm2-tools-boot \
+- $(objdir)/gm2/gm2-tools \
+- $(objdir)/gm2/gm2-libiberty \
+- $(objdir)/gm2/gm2-gcc \
+- $(objdir)/gm2/gm2-auto \
+- $(objdir)/gm2/gm2-compiler \
+- $(objdir)/gm2/gm2-libs \
+- $(objdir)/gm2/gm2-libs-iso \
+- $(objdir)/gm2/gm2-compiler-paranoid \
+- $(objdir)/gm2/gm2-libs-paranoid \
+- $(objdir)/gm2/gm2-compiler-verify \
+- $(objdir)/gm2/boot-bin \
+- $(objdir)/gm2/ulm-lib-gm2 \
+- $(objdir)/gm2/ulm-lib-gm2/sys \
+- $(objdir)/gm2/ulm-lib-gm2/std \
+- $(objdir)/gm2/gm2-libs-pim \
+- $(objdir)/gm2/gm2-libs-coroutines \
+- $(objdir)/gm2/gm2-libs-min \
+- $(objdir)/gm2/mc-boot \
+- $(objdir)/gm2/mc-boot-ch \
+- $(objdir)/gm2/mc-boot-gen \
+- $(objdir)/plugin \
+- stage1/gm2 stage2/gm2 stage3/gm2 stage4/gm2
+
+ # gt-gm2-gm2-lang.h gtype-gm2.h gt-gm2-gccgm2.h gt-gm2-m2builtins.h gt-gm2-m2except.h: s-gtype; @true
+
+ # Build hooks:
+
+-gm2.all.cross: xgm2-cross$(exeext) stage1/gm2/cc1gm2$(exeext) \
+- $(GM2_LINK_TOOLS) \
+- plugin/m2rte$(exeext).so
++gm2.all.cross: xgm2-cross$(exeext) plugin/m2rte$(exeext).so $(GM2_LINK_TOOLS)
+
+-gm2.start.encap: xgm2$(exeext) stage1/gm2/cc1gm2$(exeext) \
+- $(GM2_LINK_TOOLS) \
+- plugin/m2rte$(exeext).so
++gm2.start.encap: xgm2$(exeext) plugin/m2rte$(exeext).so $(GM2_LINK_TOOLS)
+ gm2.rest.encap:
++
+ gm2.info: $(objdir)/gm2/gm2.info
+ gm2.generated-manpages: gm2.man
+
+@@ -226,115 +180,138 @@ gm2.ps: gm2.dvi
+ gm2.pdf: gm2.ps
+ gs -q -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -sOutputFile=$@ $<
+
++.INTERMEDIATE: gm2.pod
++
++gm2.pod: gm2/gm2.texi $(TEXISRC)
++ -$(TEXI2POD) -I $(objdir)/gm2 -D gm2 < $< > $@
++
+ $(objdir)/gm2/gm2.info: $(TEXISRC)
+ $(MAKEINFO) -I$(objdir)/gm2 -o $(objdir)/gm2/gm2.info $(srcdir)/gm2/gm2.texi
+
+ $(objdir)/gm2/images/gnu.eps: $(srcdir)/gm2/images/gnupng
+- mkdir -p gm2/images
++ test -d gm2/images || mkdir -p gm2/images
+ if [ -f $(srcdir)/gm2/images/gnu.eps ] ; then \
+ cp $(srcdir)/gm2/images/gnu.eps $@ ; \
+ else \
+ pngtopnm $< | pnmtops -noturn > $@ ; \
+ fi
+
+-gm2/gm2-libs.texi: gm2/SYSTEM-pim.texi gm2/SYSTEM-iso.texi gm2/Builtins.texi $(objdir)/gm2/gm2-libs-coroutines/SYSTEM.def
+- python $(srcdir)/gm2/tools-src/def2texi.py -uLibraries -s$(srcdir)/gm2 -b$(objdir)/gm2 > $(objdir)/gm2/gm2-libs.texi
++gm2/gm2-libs.texi: gm2-libs.texi-check; @true
++
++gm2-libs.texi-check: gm2/SYSTEM-pim.texi gm2/SYSTEM-iso.texi gm2/Builtins.texi $(objdir)/gm2/gm2-libs-coroutines/SYSTEM.def gm2/gm2-ebnf.texi
++ python3 $(srcdir)/gm2/tools-src/def2texi.py -uLibraries -s$(srcdir)/gm2 -b$(objdir)/gm2 > $(objdir)/gm2/gm2-libs.texi
++ $(STAMP) gm2-libs.texi-check
++
++gm2/gm2-ebnf.texi: gm2-ebnf.texi-check; @true
+
+-gm2/gm2-ebnf.texi: gm2/gm2-auto gm2/ppg$(exeext) $(srcdir)/gm2/bnf/m2.bnf
+- ./gm2/ppg$(exeext) -c -p -t -f $(srcdir)/gm2/bnf/m2.bnf > $@
++gm2-ebnf.texi-check: gm2/gm2-auto gm2/ppg$(exeext) $(srcdir)/gm2/bnf/m2.bnf
++ ./gm2/ppg$(exeext) -c -p -t -f $(srcdir)/gm2/bnf/m2.bnf > gm2/gm2-ebnf.texi
++ $(STAMP) gm2-ebnf.texi-check
+
+-gm2/SYSTEM-pim.texi: $(objdir)/gm2/gm2-libs/SYSTEM.def
++gm2/SYSTEM-pim.texi: SYSTEM-pim-texi-check; @true
++
++SYSTEM-pim-texi-check: $(objdir)/gm2/gm2-libs/SYSTEM.def
+ $(srcdir)/gm2/tools-src/def2texi.py -b$(objdir)/gm2 -f$(objdir)/gm2/gm2-libs/SYSTEM.def > $(objdir)/gm2/SYSTEM-pim.texi
++ $(STAMP) SYSTEM-pim-texi-check
++
++gm2/SYSTEM-iso.texi: SYSTEM-iso.texi-check; @true
+
+-gm2/SYSTEM-iso.texi: $(objdir)/gm2/gm2-libs-iso/SYSTEM.def
++SYSTEM-iso.texi-check: $(objdir)/gm2/gm2-libs-iso/SYSTEM.def
+ $(srcdir)/gm2/tools-src/def2texi.py -b$(objdir)/gm2 -f$(objdir)/gm2/gm2-libs-iso/SYSTEM.def > $(objdir)/gm2/SYSTEM-iso.texi
++ $(STAMP) SYSTEM-iso.texi-check
++
++gm2/Builtins.texi: Builtins.texi-check; @true
+
+-gm2/Builtins.texi: gm2/gm2-libs/Builtins.def
++Builtins.texi-check: gm2/gm2-libs/Builtins.def
+ $(srcdir)/gm2/tools-src/def2texi.py -b./ -f$(srcdir)/gm2/gm2-libs/Builtins.def > $(objdir)/gm2/Builtins.texi
++ $(STAMP) Builtins.texi-check
+
+-gm2/version.texi: force
++gm2/version.texi: gm2-version.texi-check; @true
++
++gm2-version.texi-check:
+ cd gm2 ; bash ../$(srcdir)/gm2/tools-src/makeversion -t ../$(srcdir)
++ $(STAMP) gm2-version.texi-check
+
+ $(objdir)/gm2/gm2-tools:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-tools-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-compiler-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-ppg-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-pg-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-pge-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-boot:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libiberty:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-auto:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-gcc:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-compiler:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-iso:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-min:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-compiler-paranoid:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-paranoid:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-compiler-verify:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/boot-bin:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/ulm-lib-gm2:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+-$(objdir)/gm2/ulm-lib-gm2/sys:
+- mkdir $@
++$(objdir)/gm2/ulm-lib-gm2/sys: $(objdir)/gm2/ulm-lib-gm2
++ test -d $@ || mkdir -p $@
+
+-$(objdir)/gm2/ulm-lib-gm2/std:
+- mkdir $@
++$(objdir)/gm2/ulm-lib-gm2/std: $(objdir)/gm2/ulm-lib-gm2
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-pim:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ $(objdir)/gm2/gm2-libs-coroutines:
+- mkdir $@
++ test -d $@ || mkdir -p $@
+
+ stage1/gm2:
+- -mkdir -p stage1/gm2
++ test -d $@ || mkdir -p $@
+
+ stage2/gm2:
+- -mkdir -p stage2/gm2
++ test -d $@ || mkdir -p $@
+
+ stage3/gm2:
+- -mkdir -p stage3/gm2
++ test -d $@ || mkdir -p $@
+
+ stage4/gm2:
+- -mkdir -p stage4/gm2
++ test -d $@ || mkdir -p $@
+
+ # No gm2-specific selftests
+ selftest-gm2:
+@@ -435,14 +412,14 @@ gm2.uninstall:
+ -rm -rf $(bindir)/$(GM2_INSTALL_NAME)
+ -rm -rf $(bindir)/$(GM2_CROSS_NAME)
+
+-gm2.install-plugin: plugin/m2rte$(exeext).so
++gm2.install-plugin:
+ rm -f $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so
+ mkdir -p $(DESTDIR)$(plugin_bindir)
+ $(INSTALL_PROGRAM) plugin/m2rte$(exeext).so $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so
+ chmod a+x $(DESTDIR)$(plugin_bindir)/m2rte$(exeext).so
+
+ plugin/m2rte$(exeext).so: $(srcdir)/gm2/plugin/m2rte.c $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h
+- mkdir -p $(GM2_DIRS)
++ test -d $(objdir)/plugin || mkdir -p $(objdir)/plugin
+ $(PLUGINCC) $(PLUGINCFLAGS) -fno-rtti -I. -I$(srcdir) -I$(srcdir)/gm2 -I$(srcdir)/../include -I$(srcdir)/../libcpp/include -Wall -Wno-literal-suffix -fPIC -c -o plugin/m2rte.o $(srcdir)/gm2/plugin/m2rte.c
+ $(PLUGINCC) $(PLUGINCFLAGS) $(PLUGINLIBS) -fno-rtti plugin/m2rte.o -shared -o $@
+
+@@ -458,7 +435,7 @@ gm2.mostlyclean:
+ gm2.clean:
+ -rm -f gm2/*.o
+ -rm -f gm2/gm2-libs/config.*
+- -rm gm2/gm2-libs/gm2-libs-host.h gm2/gm2-libs/gm2-libs-target.h gm2/gm2config.h
++ -rm gm2/gm2-libs/gm2-libs-host.h gm2/gm2config.h
+ -rm -f gm2/gm2-libs/autoscan.log
+ -rm -f gm2.aux gm2.html gm2.dvi gm2.ps gm2.info gm2.log
+ -rm -fr gm2/stage?
+@@ -566,18 +543,7 @@ SO=-O0 -g -fPIC
+
+ # Language-specific object files for the gm2 compiler.
+
+-# rationale:
+-#
+-# we build gm2 twice. The first time the Modula-2 sources are
+-# converted into C via mc. The resulting compiler and utilities are
+-# placed into stage1/gm2 directories. Then this stage1 compiler is
+-# used to build the stage2 compiler which will be installed on the
+-# host as part of `make install'. Debugging the stage2 compiler is
+-# much prefered as the executable contains debugging info relating
+-# directly to the Modula-2 source.
+-
+- # the C implementation module bridging the Modula-2 -> GCC
+-GM2_C_OBJS = gm2/gm2-lang.o \
++GM2_C_OBJS = gm2/gm2-lang.o \
+ gm2/stor-layout.o \
+ gm2/m2pp.o \
+ gm2/gm2-gcc/m2assert.o \
+@@ -598,7 +564,6 @@ GM2_C_OBJS = gm2/gm2-lang.o \
+ gm2/gm2-gcc/init.o
+ GM2_LIBS = gm2/gm2-compiler/gm2.a ../$(target_subdir)/libgm2/libpim/.libs/libgm2.a gm2/gm2-libs-boot/choosetemp.o
+
+-# gm2/gm2-compiler/gm2.a gm2/gm2-libs/libgm2.a # the final Modula-2 front end
+ GM2_LIBS_BOOT = gm2/gm2-compiler-boot/gm2.a \
+ gm2/gm2-libs-boot/libgm2.a
+ GM2_LIBS_PARANOID = gm2/gm2-compiler-paranoid/gm2.a \
+@@ -640,9 +605,10 @@ stage2/gm2/cc1gm2$(exeext): stage1/gm2/cc1gm2$(exeext) gm2/gm2-compiler/m2flex.o
+ $(BACKEND) $(LIBS) \
+ $(BACKENDLIBS) $(LIBSTDCXX) -lm
+
+-stage1/gm2/cc1gm2$(exeext): $(GM2_DIRS) xgm2$(exeext) gm2/gm2-compiler-boot/m2flex.o \
++stage1/gm2/cc1gm2$(exeext): gm2/gm2-compiler-boot/m2flex.o \
+ $(P) $(GM2_C_OBJS) $(BACKEND) $(LIBDEPS) \
+- $(GM2_LIBS_BOOT) $(MC_LIBS) plugin/m2rte$(exeext).so
++ $(GM2_LIBS_BOOT) $(MC_LIBS)
++ $(__BREAKPOINT)
+ $(LINKER) $(ALL_CFLAGS) $(LDFLAGS) -o $@ $(GM2_C_OBJS) gm2/gm2-compiler-boot/m2flex.o \
+ attribs.o \
+ $(GM2_LIBS_BOOT) $(MC_LIBS) \
+@@ -654,7 +620,7 @@ gm2-gcc/m2builtins.o : $(srcdir)/gm2/gm2-gcc/m2builtins.c $(CONFIG_H) $(TREE_H)
+
+ gm2-gcc/m2except.o : $(srcdir)/gm2/gm2-gcc/m2except.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h gt-gm2-m2except.h
+
+-gm2/gm2-gcc/%.o: $(srcdir)/gm2/gm2-gcc/%.c $(TARGET_H)
++gm2/gm2-gcc/%.o: $(srcdir)/gm2/gm2-gcc/%.c $(MCDEPS) $(LIBDEPS) $(BUILD-BOOT-H) $(TIMEVAR_H) gm2/gm2config.h $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gtype-gm2.h
+ $(COMPILER) -c -g $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) $< $(OUTPUT_OPTION)
+
+ gm2/gm2-lang.o: $(srcdir)/gm2/gm2-lang.c $(CONFIG_H) $(TREE_H) $(RTL_H) $(TARGET_H) $(srcdir)/flags.h gt-gm2-gm2-lang.h
+@@ -998,7 +964,7 @@ gm2/gm2-libs-boot/%.o: $(srcdir)/gm2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H)
+ gm2/gm2-libs-boot/$(SRC_PREFIX)%.h: $(srcdir)/gm2/gm2-libs/%.def $(MCDEPS)
+ $(MC) -o=$@ $(srcdir)/gm2/gm2-libs/$*.def
+
+-gm2/gm2-libs-boot/pthdummy.o: $(srcdir)/gm2/gm2-libs-ch/pthdummy.c $(MCDEPS) gm2/gm2-libs/gm2-libs-host.h
++gm2/gm2-libs-boot/pthdummy.o: $(srcdir)/gm2/gm2-libs-ch/pthdummy.c gm2/gm2-libs/gm2-libs-host.h
+ $(CC) -c -DIN_GCC $(CFLAGS) -Igm2/gm2-libs -I$(srcdir)/gm2 -Igm2 -I. -Igm2/gm2-libs-boot $(INCLUDES) $< -o $@
+
+ gm2/gm2-libs-boot/wrapc.o: $(srcdir)/gm2/gm2-libs-ch/wrapc.c gm2/gm2-libs-boot/$(SRC_PREFIX)wrapc.h gm2/gm2-libs/gm2-libs-host.h
+@@ -1126,7 +1092,8 @@ gm2/gm2-tools/m2flex.o: gm2/gm2-compiler/m2flex.c $(BUILD-BOOT-H) $(TIMEVAR_H)
+ -Igm2 -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot $< -o $@
+
+ gm2/gm2-compiler-boot/m2flex.o: gm2/gm2-compiler/m2flex.c $(BUILD-BOOT-H) $(TIMEVAR_H) \
+- $(BUILD-LIBS-BOOT-H) gm2/gm2-compiler-boot/$(SRC_PREFIX)NameKey.h
++ $(BUILD-LIBS-BOOT-H) gm2/gm2-compiler-boot/$(SRC_PREFIX)NameKey.h \
++ $(CONFIG_H) gm2/gm2config.h $(TARGET_H)
+ $(COMPILER) -c -g $(ALL_COMPILERFLAGS) $(ALL_CPPFLAGS) $(INCLUDES) \
+ $(GM2GCC) $(INCLUDES) -I$(srcdir)/gm2 \
+ -Igm2 -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot $< -o $@
+@@ -1150,8 +1117,11 @@ gm2/gm2-compiler-boot/M2Version.o: gm2/gm2-compiler-boot/M2Version.mod $(MCDEPS)
+ $(MC) -o=gm2/gm2-compiler-boot/M2Version.c $<
+ $(COMPILER) -c $(ALL_CPPFLAGS) $(GM2GCC) -I. -Igm2/gm2-libs-boot -Igm2/gm2-compiler-boot -Igm2/gm2-libiberty $(INCLUDES) gm2/gm2-compiler-boot/M2Version.c -o $@
+
+-gm2/gm2-compiler-boot/M2Version.mod:
++gm2/gm2-compiler-boot/M2Version.mod: M2Version-check; @true
++
++M2Version-check:
+ cd gm2/gm2-compiler-boot ; bash ../../$(srcdir)/gm2/tools-src/makeversion -m ../../$(srcdir)
++ $(STAMP) M2Version-check
+
+
+ #
+@@ -1218,7 +1188,7 @@ gm2/gm2-compiler/M2Version.mod:
+ gm2/gm2-compiler/h2def.o: $(objdir)/gm2/gm2-compiler/h2def.mod
+ $(XGM2_1) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -I$(srcdir)/gm2/gm2-compiler -I$(srcdir)/gm2/gm2-libs -I$(srcdir)/gm2/gm2-gcc -I$(srcdir)/gm2/gm2-libiberty $< -o $@
+
+-gm2/gm2-libs-iso/%.o: $(srcdir)/gm2/gm2-libs-iso/%.c gm2/gm2-libs/gm2-libs-target.h
++gm2/gm2-libs-iso/%.o: $(srcdir)/gm2/gm2-libs-iso/%.c gm2/gm2-libs/gm2-libs-host.h
+ $(CC) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS -c $(CFLAGS) -Igm2/gm2-libs -I$(srcdir)/gm2 -Igm2/gm2-libs-boot $(INCLUDES) $< -o $@
+
+ gm2/gm2-libs-iso/%.o: $(srcdir)/gm2/gm2-libs-iso/%.mod
+@@ -1230,26 +1200,6 @@ gm2/gm2-libs-iso/%.o: $(srcdir)/gm2/gm2-libs-iso/%.mod
+ # itself.
+ #
+
+-gm2/gm2-libs/gm2-libs-target.h:
+- if echo $(INTERNAL_CFLAGS) | grep \\-DCROSS_COMPILE; then \
+- echo "Configuring to build libraries using cross compiler" ; \
+- CC="$(GCC_FOR_TARGET) $(GCC_CFLAGS) $(ALL_CPPFLAGS) -I. -I$(srcdir) -isystem include -isystem ${SYSTEM_HEADER_DIR}"; \
+- export CC; \
+- $(SHELL) -c \
+- '$(srcdir)/gm2/gm2-libs/config-target \
+- --srcdir=$(srcdir)/gm2/gm2-libs \
+- --target=$(target) \
+- --program-suffix=$(exeext) \
+- --includedir=${gcc_tooldir}/include' ; \
+- else \
+- echo "Configuring to build libraries using native compiler" ; \
+- cd gm2/gm2-libs ; \
+- $(SHELL) -c '../../$(srcdir)/gm2/gm2-libs/config-target \
+- --srcdir=../../$(srcdir)/gm2/gm2-libs \
+- --target=$(target) \
+- --program-suffix=$(exeext)' ; \
+- fi
+-
+ gm2/gm2-libs/gm2-libs-host.h:
+ echo "Configuring to build libraries using native compiler" ; \
+ cd gm2/gm2-libs ; \
+@@ -1265,7 +1215,7 @@ gm2/gm2config.h:
+ export AR ; \
+ RANLIB=`echo $(RANLIB_FOR_TARGET) | sed -e "s/^ //"` ; \
+ export RANLIB ; \
+- $(SHELL) -c '../$(srcdir)/gm2/configure --srcdir=../$(srcdir)/gm2 --target=$(target) --program-suffix=$(exeext) --includedir=$(SYSTEM_HEADER_DIR)' ; \
++ $(SHELL) -c '../$(srcdir)/gm2/configure --srcdir=../$(srcdir)/gm2 --target=$(target) --program-suffix=$(exeext) --includedir=$(SYSTEM_HEADER_DIR) --libdir=$(libdir) --libexecdir=$(libexecdir)' ; \
+ else \
+ $(SHELL) -c '../$(srcdir)/gm2/configure --srcdir=../$(srcdir)/gm2 --target=$(target) --program-suffix=$(exeext)' ; \
+ fi
+@@ -1307,127 +1257,17 @@ build-system: $(objdir)/gm2/gm2-libs-min/SYSTEM.def \
+ $(objdir)/gm2/gm2-libs-coroutines/SYSTEM.def
+ endif
+
+-build-libs-min: $(GM2-LIBS-MIN-MODS:%.mod=gm2/gm2-libs-min/%.o) \
+- $(GM2-LIBS-MIN-C:%.c=gm2/gm2-libs-min/%.o) \
+- $(GM2-LIBS-MIN-MODS:%.mod=gm2/gm2-libs-min/O2/%.o) \
+- $(GM2-LIBS-MIN-C:%.c=gm2/gm2-libs-min/O2/%.o)
+-
+-archive-libs-min: build-libs-min
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs-min/libgm2min.a \
+- $(GM2-LIBS-MIN-MODS:%.mod=gm2/gm2-libs-min/%.o) \
+- $(GM2-LIBS-MIN-C:%.c=gm2/gm2-libs-min/%.o)
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs-min/libgm2min.a
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs-min/O2/libgm2min.a \
+- $(GM2-LIBS-MIN-MODS:%.mod=gm2/gm2-libs-min/O2/%.o) \
+- $(GM2-LIBS-MIN-C:%.c=gm2/gm2-libs-min/O2/%.o)
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs-min/O2/libgm2min.a
+-
+-build-libs: gm2/gm2-libs/gm2-libs-host.h \
+- $(GM2-LIBS-MODS:%.mod=gm2/gm2-libs/%.o) \
+- $(GM2-LIBS-C:%.c=gm2/gm2-libs/%.o)
+-
+-archive-libs: build-libs
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs/libgm2.a \
+- $(GM2-LIBS-MODS:%.mod=gm2/gm2-libs/%.o) \
+- $(GM2-LIBS-C:%.c=gm2/gm2-libs/%.o)
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs/libgm2.a
+-
+ build-compiler: $(GM2-COMP-MODS:%.mod=gm2/gm2-compiler/%.o) \
+ $(GM2-AUTO-MODS:%.mod=gm2/gm2-compiler/%.o) \
+ gm2/gm2-compiler/M2Version.o \
+ gm2/gm2-compiler/m2flex.o
+
+-gm2/gm2-libs/libgm2.a: build-libs
+- $(AR_FOR_TARGET) cr $@ $(GM2-LIBS-MODS:%.mod=gm2/gm2-libs/%.o) \
+- $(GM2-LIBS-C:%.c=gm2/gm2-libs/%.o)
+- $(RANLIB) $@
+-
+ gm2/gm2-compiler/gm2.a: build-compiler xgm2$(exeext)
+ $(AR_FOR_TARGET) cr $@ $(GM2-COMP-MODS:%.mod=gm2/gm2-compiler/%.o) \
+ gm2/gm2-compiler/M2Version.o \
+ $(GM2-AUTO-MODS:%.mod=gm2/gm2-compiler/%.o)
+ $(RANLIB) $@
+
+-build-libs-iso: $(GM2-LIBS-ISO-MODS:%.mod=gm2/gm2-libs-iso/%.o) \
+- $(GM2-LIBS-ISO-C:%.c=gm2/gm2-libs-iso/%.o)
+-
+-archive-libs-iso: build-libs-iso
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs-iso/libgm2iso.a \
+- $(GM2-LIBS-ISO-MODS:%.mod=gm2/gm2-libs-iso/%.o) \
+- $(GM2-LIBS-ISO-C:%.c=gm2/gm2-libs-iso/%.o)
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs-iso/libgm2iso.a
+-
+-build-libs-ulm: $(GM2-LIBS-ULM-MODS-STD:%.mod=gm2/ulm-lib-gm2/std/%.o) \
+- $(GM2-LIBS-ULM-MODS-SYS:%.mod=gm2/ulm-lib-gm2/sys/%.o) \
+- gm2/ulm-lib-gm2/sys/SYSTEM.o
+-
+-archive-libs-ulm: build-libs-ulm
+- $(AR_CREATE_FOR_TARGET) gm2/ulm-lib-gm2/libgm2ulm.a \
+- $(GM2-LIBS-ULM-MODS-STD:%.mod=gm2/ulm-lib-gm2/std/%.o) \
+- $(GM2-LIBS-ULM-MODS-SYS:%.mod=gm2/ulm-lib-gm2/sys/%.o) \
+- gm2/ulm-lib-gm2/sys/SYSTEM.o
+- $(RANLIB_FOR_TARGET) gm2/ulm-lib-gm2/libgm2ulm.a
+-
+-build-libs-pim: $(GM2-LIBS-PIM-MODS:%.mod=gm2/gm2-libs-pim/%.o) \
+- gm2/gm2-libs-pim/Break.o
+-
+-archive-libs-pim: build-libs-pim
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs-pim/libgm2pim.a \
+- $(GM2-LIBS-PIM-MODS:%.mod=gm2/gm2-libs-pim/%.o) \
+- gm2/gm2-libs-pim/Break.o
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs-pim/libgm2pim.a
+-
+-build-libs-coroutines: $(GM2-LIBS-PIM-COR-MODS:%.mod=gm2/gm2-libs-coroutines/%.o) \
+- gm2/gm2-libs-coroutines/KeyBoardLEDs.o
+-
+-archive-libs-coroutines: build-libs-coroutines
+- $(AR_CREATE_FOR_TARGET) gm2/gm2-libs-coroutines/libgm2pco.a \
+- $(GM2-LIBS-PIM-COR-MODS:%.mod=gm2/gm2-libs-coroutines/%.o) \
+- gm2/gm2-libs-coroutines/KeyBoardLEDs.o
+- $(RANLIB_FOR_TARGET) gm2/gm2-libs-coroutines/libgm2pco.a
+-
+-gm2/gm2-libs-pim/Break.o: gm2/gm2-libs-pim/Break.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS -Igm2/gm2-libs -c $(CFLAGS) $< -o $@
+-
+-gm2/gm2-libs-coroutines/KeyBoardLEDs.o: gm2/gm2-libs-coroutines/KeyBoardLEDs.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS -Igm2/gm2-libs -c $(CFLAGS) $< -o $@
+-
+-gm2/gm2-libs-coroutines/O2/KeyBoardLEDs.o: gm2/gm2-libs-coroutines/KeyBoardLEDs.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS $(O2) -Igm2/gm2-libs -c $(CFLAGS) $< -o $@
+-
+-gm2/gm2-libs-coroutines/SO/KeyBoardLEDs.o: gm2/gm2-libs-coroutines/KeyBoardLEDs.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS $(SO) -Igm2/gm2-libs -c $(CFLAGS) $< -o $@
+-
+-gm2/gm2-libs-coroutines/SO_O2/KeyBoardLEDs.o: gm2/gm2-libs-coroutines/KeyBoardLEDs.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS $(SO_O2) -Igm2/gm2-libs -c $(CFLAGS) $< -o $@
+-
+-gm2/ulm-lib-gm2/sys/SYSTEM.o: gm2/ulm-lib-gm2/sys/SYSTEM.c
+- $(GCC_FOR_TARGET) -DBUILD_GM2_LIBS_TARGET -DBUILD_GM2_LIBS -c $(CFLAGS) $< -o $@
+-
+-gm2/ulm-lib-gm2/sys/SYSTEM.c:
+- bash $(srcdir)/gm2/tools-src/createUlmSys gm2/gm2-libs/gm2-libs-host.h > $@
+-
+-gm2/ulm-lib-gm2/sys/%.o: gm2/ulm-lib-gm2/sys/%.mod
+- $(XGM2_1) $(GM2_FLAGS) -c -B./stage1/gm2 -B./ -I$(srcdir)/gm2/ulm-lib-gm2/sys -I$(srcdir)/gm2/gm2-libs $< -o $@
+-
+-gm2/ulm-lib-gm2/std/%.o: gm2/ulm-lib-gm2/std/%.mod
+- $(XGM2_1) $(GM2_FLAGS) -c -B./stage1/gm2 -B./ -I$(srcdir)/gm2/ulm-lib-gm2/std:$(srcdir)/gm2/ulm-lib-gm2/sys:$(srcdir)/gm2/gm2-libs $< -o $@
+-
+-gm2/gm2-libs-pim/%.o: gm2/gm2-libs-pim/%.mod
+- $(XGM2_1) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -B./ -Igm2/gm2-libs:$(srcdir)/gm2/gm2-libs:$(srcdir)/gm2/gm2-libs-pim $< -o $@
+-
+-gm2/gm2-libs-coroutines/%.o: gm2/gm2-libs-coroutines/%.mod
+- $(XGM2_1) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -B./ -I$(srcdir)/gm2/gm2-libs-coroutines:$(srcdir)/gm2/gm2-libs:$(srcdir)/gm2/gm2-libs-pim:$(srcdir)/gm2/gm2-libs-iso $< -o $@
+-
+-gm2/gm2-libs-coroutines/O2/%.o: gm2/gm2-libs-coroutines/%.mod
+- $(XGM2_1) $(O2) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -B./ -I$(srcdir)/gm2/gm2-libs-coroutines:$(srcdir)/gm2/gm2-libs:$(srcdir)/gm2/gm2-libs-pim:$(srcdir)/gm2/gm2-libs-iso $< -o $@
+-
+-gm2/gm2-libs-coroutines/SO/%.o: gm2/gm2-libs-coroutines/%.mod
+- $(XGM2_1) $(SO) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -B./ -I$(srcdir)/gm2/gm2-libs-coroutines:$(srcdir)/gm2/gm2-libs:$(srcdir)/gm2/gm2-libs-pim:$(srcdir)/gm2/gm2-libs-iso $< -o $@
+-
+-gm2/gm2-libs-coroutines/SO_O2/%.o: gm2/gm2-libs-coroutines/%.mod
+- $(XGM2_1) $(SO_O2) $(GM2_FLAGS) -c -B$(XGM2BUILD1) -B./ -I$(srcdir)/gm2/gm2-libs-coroutines:$(srcdir)/gm2/gm2-libs:$(srcdir)/gm2/gm2-libs-pim:$(srcdir)/gm2/gm2-libs-iso $< -o $@
+-
+ gm2/gm2-libs-boot/libgm2.a: gm2/boot-bin/mc$(exeext) $(BUILD-LIBS-BOOT)
+ $(AR) cr $@ $(GM2-LIBS-BOOT-MODS:%.mod=gm2/gm2-libs-boot/%.o) \
+ $(GM2-LIBS-BOOT-C:%.c=gm2/gm2-libs-boot/%.o)
+@@ -1480,7 +1320,7 @@ MCLINK=-g
+ GM2SYS=/opt/gm2/lib/gcc/x86_64-linux-gnu/4.7.4/m2/pim
+ GM2PATH=$(srcdir)/gm2/mc:$(GM2SYS):$(srcdir)/gm2:gm2/gm2-auto:$(srcdir)/gm2/gm2-libs
+
+-mc: $(GM2_DIRS) mc-clean mc-devel
++mc: mc-clean mc-devel
+
+
+ #
+@@ -1696,19 +1536,19 @@ BUILD-MC-BOOT-O = $(MC-LIB-BOOT-C:%.c=gm2/mc-boot/$(SRC_PREFIX)%.o) \
+ BUILD-MC-INTERFACE-O = $(MC-INTERFACE-C:%.c=gm2/mc-boot-ch/$(SRC_PREFIX)%.o)
+
+
+-$(objdir)/plugin: force
+- mkdir -p $@
++$(objdir)/plugin:
++ test -d $@ || mkdir -p $@
+
+-$(objdir)/gm2/mc-boot: force
+- mkdir -p $@
++$(objdir)/gm2/mc-boot:
++ test -d $@ || mkdir -p $@
+
+-$(objdir)/gm2/mc-boot-ch: force
+- mkdir -p $@
++$(objdir)/gm2/mc-boot-ch:
++ test -d $@ || mkdir -p $@
+
+-$(objdir)/gm2/mc-boot-gen: force
+- mkdir -p $@
++$(objdir)/gm2/mc-boot-gen:
++ test -d $@ || mkdir -p $@
+
+-mc-autogen: $(GM2_DIRS) mc-clean mc-devel \
++mc-autogen: mc-clean mc-devel \
+ $(BUILD-MC-BOOT-H) $(BUILD-MC-BOOT-C) \
+ $(BUILD-MC-BOOT-AUTO-C)
+ cd gm2/mc-boot-gen ; for i in *.c ; do gcc -g -c -I../../$(srcdir)/gm2/mc-boot-ch $$i ; done
+@@ -1754,10 +1594,12 @@ gm2/mc-boot-ch/$(SRC_PREFIX)%.o: gm2/mc-boot-ch/$(SRC_PREFIX)%.c
+ # files will be checked into git by the maintainer.
+ #
+
+-mc-bootstrap: $(GM2_DIRS) mc-clean gm2/boot-bin/mc$(exeext)
++mc-bootstrap: mc-clean gm2/boot-bin/mc$(exeext)
+
+ gm2/boot-bin/mc$(exeext): $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o
+- $(CC) -g -o $@ $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) $(LDFLAGS) gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o -lm
++ $(CC) -g -o $@ $(BUILD-MC-BOOT-O) $(BUILD-MC-INTERFACE-O) $(LDFLAGS) \
++ gm2/mc-boot/main.o mcflex.o gm2/gm2-libs-boot/pthdummy.o -lm \
++ -lgcov
+
+ gm2/mc-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit
+ unset CC ; $(M2LINK) -s --gcc --exit --name mainmcinit.c $(srcdir)/gm2/init/mcinit
+@@ -2104,7 +1946,7 @@ gm2/gm2-ppg-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-compiler/%.mod $(MCDEPS) $(
+ -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-ppg-boot/$(SRC_PREFIX)$*.c -o $@
+
+ gm2/ppg$(exeext): gm2/boot-bin/mc $(BUILD-PPG-O) $(BUILD-MC-INTERFACE-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o
+- $(CC) -g -o $@ $(BUILD-PPG-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm
++ $(CC) -g -o $@ $(BUILD-PPG-O) gm2/gm2-ppg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm
+
+ gm2/gm2-ppg-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit
+ unset CC ; $(M2LINK) -s --gcc --exit --name mainppginit.c $(srcdir)/gm2/init/ppginit
+@@ -2112,7 +1954,7 @@ gm2/gm2-ppg-boot/main.o: $(M2LINK) $(srcdir)/gm2/init/mcinit
+ $(CC) -g -c -o $@ gm2/gm2-ppg-boot/main.c
+
+ gm2/gm2-auto:
+- mkdir gm2/gm2-auto
++ test -d $@ || mkdir -p $@
+
+ #
+ # gm2/pg$(exext) is the 2nd generation parser generator built from ebnf
+@@ -2150,7 +1992,7 @@ gm2/gm2-pg-boot/$(SRC_PREFIX)pg.o: gm2/gm2-auto/pg.mod $(MCDEPS) $(BUILD-BOOT-H
+ gm2/pg$(exeext): gm2/boot-bin/mc \
+ $(BUILD-PG-O) $(GM2-PPG-MODS:%.mod=gm2/gm2-pg-boot/%.o) \
+ $(BUILD-MC-INTERFACE-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o
+- $(CC) -g -o $@ $(BUILD-PG-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm
++ $(CC) -g -o $@ $(BUILD-PG-O) gm2/gm2-pg-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm
+
+ gm2/gm2-auto/pginit:
+ sed -e 's/ppg/pg/' < $(srcdir)/gm2/init/ppginit > $@
+@@ -2192,18 +2034,51 @@ gm2/gm2-auto/pge.mod: gm2/pg$(exeext)
+ gm2/gm2-pge-boot/$(SRC_PREFIX)%.h: $(srcdir)/gm2/gm2-libs/%.def $(MCDEPS)
+ $(MCC) -o=$@ $(srcdir)/gm2/gm2-libs/$*.def
+
+-gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: gm2/mc-boot-ch/$(SRC_PREFIX)%.c
++gm2/gm2-pge-boot/$(SRC_PREFIX)libc.o: $(srcdir)/gm2/mc-boot-ch/Glibc.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)mcrts.o: $(srcdir)/gm2/mc-boot-ch/Gmcrts.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)UnixArgs.o: $(srcdir)/gm2/mc-boot-ch/GUnixArgs.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)Selective.o: $(srcdir)/gm2/mc-boot-ch/GSelective.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)termios.o: $(srcdir)/gm2/mc-boot-ch/Gtermios.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)SysExceptions.o: $(srcdir)/gm2/mc-boot-ch/GSysExceptions.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)ldtoa.o: $(srcdir)/gm2/mc-boot-ch/Gldtoa.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)dtoa.o: $(srcdir)/gm2/mc-boot-ch/Gdtoa.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)wrapc.o: $(srcdir)/gm2/mc-boot-ch/Gwrapc.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)SYSTEM.o: $(srcdir)/gm2/mc-boot-ch/GSYSTEM.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)errno.o: $(srcdir)/gm2/mc-boot-ch/Gerrno.c
++ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
++
++gm2/gm2-pge-boot/$(SRC_PREFIX)pth.o: $(srcdir)/gm2/mc-boot-ch/Gpth.c
+ $(CC) -I$(srcdir)/gm2/mc-boot-ch -g -c $< -o $@
+
+ gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-libs/%.mod $(MCDEPS) $(BUILD-BOOT-H)
+- $(MCC) -o=gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-libs/$*.mod
+- $(CC) -Igm2/gm2-pg-boot -I$(srcdir)/gm2/mc-boot -I$(srcdir)/gm2/mc-boot-ch \
+- -g -c gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@
++ $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-libs/$*.mod
++ $(CC) -Igm2/gm2-pge-boot -I$(srcdir)/gm2/mc-boot -I$(srcdir)/gm2/mc-boot-ch \
++ -g -c gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c -o $@
+
+ gm2/gm2-pge-boot/$(SRC_PREFIX)%.o: $(srcdir)/gm2/gm2-compiler/%.mod $(MCDEPS) $(BUILD-BOOT-H)
+- $(MCC) -o=gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-compiler/$*.mod
++ $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c $(srcdir)/gm2/gm2-compiler/$*.mod
+ $(CC) -Igm2/mc-boot -Igm2/gm2-compiler-boot -Igm2/gm2-libs-boot \
+- -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-pg-boot/$(SRC_PREFIX)$*.c -o $@
++ -I$(srcdir)/gm2/mc-boot-ch -g -c gm2/gm2-pge-boot/$(SRC_PREFIX)$*.c -o $@
+
+ gm2/gm2-pge-boot/$(SRC_PREFIX)pge.o: gm2/gm2-auto/pge.mod $(MCDEPS) $(BUILD-BOOT-H)
+ $(MCC) -o=gm2/gm2-pge-boot/$(SRC_PREFIX)pge.c gm2/gm2-auto/pge.mod
+@@ -2213,7 +2088,7 @@ gm2/gm2-pge-boot/$(SRC_PREFIX)pge.o: gm2/gm2-auto/pge.mod $(MCDEPS) $(BUILD-BOO
+ gm2/pge$(exeext): gm2/boot-bin/mc \
+ $(BUILD-PGE-O) $(GM2-PPG-MODS:%.mod=gm2/gm2-pge-boot/%.o) \
+ $(BUILD-MC-INTERFACE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o
+- $(CC) -g -o $@ $(BUILD-PGE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lm
++ $(CC) -g -o $@ $(BUILD-PGE-O) gm2/gm2-pge-boot/main.o gm2/gm2-libs-boot/pthdummy.o -lgcov -lm
+ $(srcdir)/gm2/tools-src/buildpg $(srcdir)/gm2/gm2-compiler/ppg.mod t > gm2/gm2-auto/t.bnf
+ ./gm2/pge$(exeext) gm2/gm2-auto/t.bnf > gm2/gm2-auto/t1.mod
+ ./gm2/pg$(exeext) gm2/gm2-auto/t.bnf > gm2/gm2-auto/t2.mod
+@@ -2414,17 +2289,7 @@ check-modula-2: check-gm2
+ check_modula-2: check-gm2
+ check_modula-2: check-gm2
+
+-GM2TESTSUITEDIR=testsuite
+-
+-check-gm2: $(GM2TESTSUITEDIR)/site.exp
+- -(rootme=`${PWD_COMMAND}`; export rootme; \
+- srcdir=`cd ${srcdir}; ${PWD_COMMAND}` ; export srcdir ; \
+- cd $(TESTSUITEDIR); \
+- EXPECT=${EXPECT} ; export EXPECT ; \
+- if [ -f $${rootme}/../expect/expect ] ; then \
+- TCL_LIBRARY=`cd .. ; cd ${srcdir}/../tcl/library ; ${PWD_COMMAND}` ; \
+- export TCL_LIBRARY ; fi ; \
+- $(RUNTEST) --tool gm2 $(RUNTESTFLAGS))
++lang_checks += check-gm2
+
+ check-gm2-local: $(GM2TESTSUITEDIR)/site.exp
+ -(rootme=`${PWD_COMMAND}`; export rootme; \
+@@ -2472,7 +2337,7 @@ gm2.maintainer-help: force
+ @echo "make gm2.maintainer-reconfigure rebuild the configure scripts"
+ @echo "make gm2.maintainer-clean clean pre-built images and texi files"
+
+-GM2DISTFILES = CVS ChangeLog gm2/Make-lang.in README bnf config-lang.in \
++GM2DISTFILES = ChangeLog gm2/Make-lang.in README bnf config-lang.in \
+ el gccgdbinit gccgm2.c gm2-gcc \
+ gm2-auto gm2-compiler gm2-compiler-boot \
+ gm2-gccinit gm2-libs gm2-libs-boot gm2-libs-ch gm2.texi gm2spec.c \
+--- a/src/gcc/gm2/config-lang.in
++++ b/src/gcc/gm2/config-lang.in
+@@ -79,3 +79,32 @@ outputs=" \
+ gm2/man/Makefile \
+ gm2/www/Makefile \
+ "
++
++mkdir -p gm2/gm2-compiler-boot
++mkdir -p gm2/gm2-libs-boot
++mkdir -p gm2/gm2-ppg-boot
++mkdir -p gm2/gm2-pge-boot
++mkdir -p gm2/gm2-pg-boot
++mkdir -p gm2/gm2-tools-boot
++mkdir -p gm2/gm2-tools
++mkdir -p gm2/gm2-libiberty
++mkdir -p gm2/gm2-gcc
++mkdir -p gm2/gm2-auto
++mkdir -p gm2/gm2-compiler
++mkdir -p gm2/gm2-libs
++mkdir -p gm2/gm2-libs-iso
++mkdir -p gm2/gm2-compiler-paranoid
++mkdir -p gm2/gm2-libs-paranoid
++mkdir -p gm2/gm2-compiler-verify
++mkdir -p gm2/boot-bin
++mkdir -p gm2/ulm-lib-gm2
++mkdir -p gm2/ulm-lib-gm2/sys
++mkdir -p gm2/ulm-lib-gm2/std
++mkdir -p gm2/gm2-libs-pim
++mkdir -p gm2/gm2-libs-coroutines
++mkdir -p gm2/gm2-libs-min
++mkdir -p gm2/mc-boot
++mkdir -p gm2/mc-boot-ch
++mkdir -p gm2/mc-boot-gen
++mkdir -p plugin
++mkdir -p stage1/gm2 stage2/gm2 stage3/gm2 stage4/gm2
+--- a/src/gcc/gm2/examples/gravity/Makefile.in
++++ b/src/gcc/gm2/examples/gravity/Makefile.in
+@@ -54,7 +54,7 @@ else
+ LIBDIR=$(prefix)/lib
+ endif
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+
+ all: force
+@@ -64,7 +64,7 @@ all: force
+ pre-install: libtwoDsim.la
+
+ run: pre-install
+- PYTHONPATH=`pwd` python $(srcdir)/testsim2.py
++ PYTHONPATH=`pwd` python$(PYTHON_VERSION) $(srcdir)/testsim2.py
+ $(SHELL) $(srcdir)/produce-avi
+
+ libtwoDsim.la: $(TWODSIM:%.mod=%.lo)
+--- a/src/gcc/gm2/examples/gravity/README
++++ b/src/gcc/gm2/examples/gravity/README
+@@ -5,4 +5,4 @@ netpbm.
+
+ On Debian or Ubuntu you can:
+
+-$ sudo apt-get install groff imagemagick python2.8-dev python swig gs netpbm mplayer
++$ sudo apt-get install groff imagemagick python3-dev swig gs netpbm mplayer
+--- a/src/gcc/gm2/examples/gravity/testsim.py
++++ b/src/gcc/gm2/examples/gravity/testsim.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2010
+ # Free Software Foundation, Inc.
+@@ -33,9 +33,9 @@ c2 = fix(c2)
+ gravity(-9.81)
+ fps(24.0*4.0)
+ replayRate(24.0)
+-print "creating frames"
++print("creating frames")
+ try:
+ simulateFor(1.0)
+- print "all done"
++ print("all done")
+ except:
+- print "exception raised"
++ print("exception raised")
+--- a/src/gcc/gm2/examples/gravity/testsim2.py
++++ b/src/gcc/gm2/examples/gravity/testsim2.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2010
+ # Free Software Foundation, Inc.
+@@ -43,9 +43,9 @@ for x in [0.4, 0.7]:
+ gravity(-9.81)
+ fps(24.0*4.0)
+ replayRate(24.0)
+-print "creating frames"
++print("creating frames")
+ try:
+ simulateFor(3.0)
+- print "all done"
++ print("all done")
+ except:
+- print "exception raised"
++ print("exception raised")
+--- a/src/gcc/gm2/examples/pge/Makefile.in
++++ b/src/gcc/gm2/examples/pge/Makefile.in
+@@ -56,7 +56,7 @@ OBJ_PATH=.:../../gm2-libs-iso:../../gm2/gm2-libs
+ XGM2=../../../xgm2 -B../../../
+ XGCC=../../../xgcc -B../../../
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "you need to use 'make pre-install' to build the examples using the locally built compiler"
+@@ -70,7 +70,7 @@ all: force
+ maxima -b $< > $@
+
+ %.m: $(srcdir)/%.mxm
+- python $(srcdir)/max2code.py -o $@ $<
++ python$(PYTHON_VERSION) $(srcdir)/max2code.py -o $@ $<
+
+ $(srcdir)/twoDsim.mod: circles.m rotating-line.m rotating-circles.m
+
+@@ -90,10 +90,10 @@ twoDsim.o: $(srcdir)/twoDsim.mod
+ libtool --tag=CC --mode=compile gcc -g -I$(srcdir) -c $< -o $@
+
+ run-whole-world: force
+- ( python ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./whole-world
++ ( python$(PYTHON_VERSION) ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./whole-world
+
+ run-post-world: force
+- ( python ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./post-world
++ ( python$(PYTHON_VERSION) ../../../../../combined/gm2/gcc-versionno/gcc/gm2/examples/pge/pgepygame.py & ) ; sleep 1 ; ./post-world
+
+ post-whole-world: circles.m force
+ gm2 -fm2-statistics -O3 -fsources -fiso -fcpp -I$(srcdir) -fm2-whole-program -fextended-opaque -g -o whole-world $(srcdir)/world.mod
+@@ -117,13 +117,13 @@ libpgeif.la: $(PGELIBSOURCES:%.mod=%.lo) buffers.lo
+ cp .libs/libpgeif.so _pgeif.so
+
+ output.raw: libpgeif.la
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/examples/exampleBoxes.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/examples/exampleBoxes.py
+
+ playback: force
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/pgeplayback.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/pgeplayback.py
+
+ boxes.raw: libpgeif.la
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/examples/boxes.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/examples/boxes.py
+
+ foo: circles.m $(OBJECTS)
+ gm2 $(GM2FLAGS) -fonlylink $(srcdir)/foo.mod
+--- a/src/gcc/gm2/examples/pge/debugthis
++++ b/src/gcc/gm2/examples/pge/debugthis
+@@ -1,5 +1,5 @@
+-#!/bin/bash
++#!/bin/sh
+
+ # python -m pdb max2code.py -v -o t.mod test.mxm
+-python -m pdb fig.py foo.fig foo.mod
++python3 -m pdb fig.py foo.fig foo.mod
+
+--- a/src/gcc/gm2/examples/pge/examples/boxes.py
++++ b/src/gcc/gm2/examples/pge/examples/boxes.py
+@@ -1,8 +1,8 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import pge, sys
+
+-print "starting boxes"
++print("starting boxes")
+ pge.batch ()
+
+ wood_light = pge.rgb (166.0/256.0, 124.0/256.0, 54.0/256.0)
+@@ -14,7 +14,7 @@ boarder = 0.01
+
+
+ def placeBoarders (thickness, color):
+- print "placeBoarders"
++ print("placeBoarders")
+ pge.box (0.0, 0.0, 1.0, thickness, color).fix ()
+ pge.box (0.0, 0.0, thickness, 1.0, color).fix ()
+ pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix ()
+@@ -31,5 +31,5 @@ def main ():
+ pge.run (3.0)
+ pge.finish ()
+
+-print "before main()"
++print("before main()")
+ main ()
+--- a/src/gcc/gm2/examples/pge/examples/exampleBoxes.py
++++ b/src/gcc/gm2/examples/pge/examples/exampleBoxes.py
+@@ -1,9 +1,9 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import pge, sys
+ # import pgemacro
+
+-print "starting exampleBoxes"
++print("starting exampleBoxes")
+ pge.batch ()
+
+ t = pge.rgb (1.0/2.0, 2.0/3.0, 3.0/4.0)
+@@ -21,19 +21,19 @@ gap = 0.01
+
+
+ def play_wood (o):
+- print "play_wood - wants to play bounce.wav"
++ print("play_wood - wants to play bounce.wav")
+ pge.play ("/home/gaius/Sandpit/cluedo/sounds/bounce.wav")
+
+ def play_crack (o):
+- print "play_crack - wants to play crack-single.wav"
++ print("play_crack - wants to play crack-single.wav")
+ pge.play ("/home/gaius/Sandpit/penguin-tower/sounds/crack-single.wav")
+
+ def play_bounce (o):
+- print "play_bounce - wants to play cardsnap.wav"
++ print("play_bounce - wants to play cardsnap.wav")
+ pge.play ("/home/gaius/Sandpit/cluedo/sounds/cardsnap.wav")
+
+ def placeBoarders (thickness, color):
+- print "placeBoarders"
++ print("placeBoarders")
+ e1 = pge.box (0.0, 0.0, 1.0, thickness, color).fix ()
+ e2 = pge.box (0.0, 0.0, thickness, 1.0, color).fix ()
+ e3 = pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix ()
+@@ -56,34 +56,34 @@ def is_odd (e):
+ def crate_split (p):
+ global gap
+
+- print "crate_split", p
++ print(("crate_split", p))
+ pge.dump_world ()
+ e = p.get_param ()
+- print "after get_param"
++ print("after get_param")
+ w = e[1] / 2
+ wg = w - gap
+ if wg<0.0:
+- print "error gap must be >= 0.0 and not", wg
++ print(("error gap must be >= 0.0 and not", wg))
+ sys.exit (1)
+ if e != None:
+ if e[0] == 0:
+- print "crate piece completely gone"
++ print("crate piece completely gone")
+ # at the end of 6 collisions the crates disappear
+ p.rm ()
+ play_crack (p)
+ elif is_odd (e[0]):
+ pge.process_event () # update the velocities of objects (immediately after collision)
+- print "crate sub divides"
++ print("crate sub divides")
+ # subdivide into smaller crates, every odd bounce
+ m = p.get_mass ()
+- print "mass of crate is", m
++ print(("mass of crate is", m))
+ pge.dump_world ()
+- print "get crate colour"
++ print("get crate colour")
+ c = p.get_colour ()
+- print "colour of crate is", c
++ print(("colour of crate is", c))
+ pge.dump_world ()
+- print e
+- print "get_xpos"
++ print(e)
++ print("get_xpos")
+ x = p.get_xpos () - e[1]/2
+ pge.dump_world ()
+ y = p.get_ypos () - e[1]/2
+@@ -91,22 +91,22 @@ def crate_split (p):
+ vy = p.get_yvel ()
+ ax = p.get_xaccel ()
+ ay = p.get_yaccel ()
+- print "**************** x, y, w, wg = ", x, y, w, wg, vx, vy, ax, ay
++ print(("**************** x, y, w, wg = ", x, y, w, wg, vx, vy, ax, ay))
+ pge.dump_world ()
+- print "rm", p
++ print(("rm", p))
+ p.rm ()
+- print "finished rm, python dumping world"
++ print("finished rm, python dumping world")
+ pge.dump_world ()
+ for v in [[0, 0], [0, w], [w, 0], [w, w]]:
+- print "creating sub box", v, "gap =", wg
++ print(("creating sub box", v, "gap =", wg))
+ b = pge.box (v[0]+x, v[1]+y, wg, wg, c).mass (m).on_collision (crate_split).velocity (vx, vy).accel (ax, ay)
+- print "set_param", [e[0]-1, w]
++ print(("set_param", [e[0]-1, w]))
+ b.set_param ([e[0]-1, w])
+ pge.dump_world ()
+- print "play_crack", p
++ print(("play_crack", p))
+ play_crack (p)
+ else:
+- print "crate bounces without breaking"
++ print("crate bounces without breaking")
+ # allow collision (bounce) without splitting every even bounce
+ p.set_param ([e[0]-1, e[1]])
+ play_bounce (p)
+@@ -118,11 +118,11 @@ def main ():
+ # b = placeBall (0.5, 0.5, 0.02)
+ # b.mass (1.0).on_collision (play_bounce).velocity (0.9, 0.0)
+ crate (0.6, 0.6, 0.2)
+- print "before run"
++ print("before run")
+ pge.gravity ()
+ pge.dump_world ()
+ pge.run (10.0)
+ pge.finish ()
+
+-print "before main()"
++print("before main()")
+ main ()
+--- a/src/gcc/gm2/examples/pge/examples/exampleBoxes.py~
++++ b/src/gcc/gm2/examples/pge/examples/exampleBoxes.py~
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import pge
+ # import pgemacro
+--- a/src/gcc/gm2/examples/pge/examples/triangle.py
++++ b/src/gcc/gm2/examples/pge/examples/triangle.py
+@@ -1,8 +1,8 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import pge, sys
+
+-print "starting triangle"
++print("starting triangle")
+ pge.batch ()
+
+ t = pge.rgb (1.0/2.0, 2.0/3.0, 3.0/4.0)
+@@ -17,7 +17,7 @@ gap = 0.01
+
+
+ def placeBoarders (thickness, color):
+- print "placeBoarders"
++ print("placeBoarders")
+ e1 = pge.box (0.0, 0.0, 1.0, thickness, color).fix ()
+ e2 = pge.box (0.0, 0.0, thickness, 1.0, color).fix ()
+ e3 = pge.box (1.0-thickness, 0.0, thickness, 1.0, color).fix ()
+@@ -38,11 +38,11 @@ def main ():
+ c = placeBall (0.41, 0.89, 0.05).mass (1)
+ l = placeTriangle ([0.3, 0.3], [0.5, 0.3], [0.4, 0.4])
+ b1, b2, b3, b4 = placeBoarders (boarder, wood_dark)
+- print "before run"
++ print("before run")
+ pge.gravity ()
+ pge.dump_world ()
+ pge.run (3.0)
+ pge.finish ()
+
+-print "before main()"
++print("before main()")
+ main ()
+--- a/src/gcc/gm2/examples/pge/fig.py
++++ b/src/gcc/gm2/examples/pge/fig.py
+@@ -1,14 +1,14 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import sys
+ import getopt
+
+ # object codes
+-fig_o_customColor, fig_o_ellipse, fig_o_polygon, fig_o_spline, fig_o_text, fig_o_arc, fig_o_compound_begin = range(7)
++fig_o_customColor, fig_o_ellipse, fig_o_polygon, fig_o_spline, fig_o_text, fig_o_arc, fig_o_compound_begin = list(range(7))
+ fig_o_compound_end = -6
+
+ # polygon type constants
+-fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox = range(1, 6)
++fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox = list(range(1, 6))
+
+
+ #
+@@ -16,7 +16,7 @@ fig_pt_polyline, fig_pt_box, fig_pt_polygon, fig_pt_arcbox, fig_pt_picturebbox =
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+ colorNo = 0
+
+@@ -54,7 +54,7 @@ class fig:
+ #
+ def readContents (self):
+ self.contents = open(self.filename, 'r').readlines()
+- print self.contents
++ print(self.contents)
+
+ def error (self, message):
+ printf("%s:%d:%s\n", self.filename, self.lineno, message)
+@@ -133,19 +133,19 @@ class fig:
+ self.skipLine ()
+ if characteristics[-1] == "2":
+ points = self.contents[0].split()
+- print "force points are", points
++ print("force points are", points)
+ if characteristics[-3] == "0" and characteristics[-2] == "1":
+- print "found force backward"
++ print("found force backward")
+ self.forces += [["force", "backward", points]]
+ elif characteristics[-3] == "1" and characteristics[-2] == "0":
+- print "found force forward"
++ print("found force forward")
+ self.forces += [["force", "forward", points]]
+ elif characteristics[2] == "0":
+ # solid, we treat as fixed
+- print "found fixed polygon", points
++ print("found fixed polygon", points)
+ self.objects += [["fixed", "polygon", points]]
+ else:
+- print "found non fixed polygon", points
++ print("found non fixed polygon", points)
+ self.objects += [["nonfixed", "polygon", points]]
+
+
+@@ -156,12 +156,12 @@ class fig:
+ def parseEllipse32 (self):
+ ellipse = self.contents[0].split ()
+ if ellipse[2] == "0":
+- print "found fixed circle", ellipse[-8:-4]
++ print("found fixed circle", ellipse[-8:-4])
+ # solid (ellipse) treat as a fixed circle
+ self.objects += [["fixed", "circle", ellipse[-8:-4]]]
+ else:
+ # treat as a nonfixed circle
+- print "found non fixed circle", ellipse[-8:-4]
++ print("found non fixed circle", ellipse[-8:-4])
+ self.objects += [["nonfixed", "circle", ellipse[-8:-4]]]
+ self.skipLine ()
+
+@@ -260,7 +260,7 @@ class fig:
+ def findExtents (self):
+ self.minp, self.maxp = -1, -1
+ for o in self.objects:
+- print "finding extent of", o
++ print("finding extent of", o)
+ self.minp, self.maxp = self.examineExtent(o)
+ return self.minp, self.maxp
+
+@@ -276,7 +276,7 @@ class fig:
+
+ def doFract (self, n):
+ if (n<-100) or (n>100):
+- print n, "error"
++ print(n, "error")
+ # self.error("incorrect position calculated")
+ if n == 0:
+ self.fo.write("zero()")
+@@ -336,7 +336,7 @@ class fig:
+ popWorld.mass(cardinal(1)) ;
+ """)
+ if self.forces != []:
+- print self.forces[0]
++ print(self.forces[0])
+ self.doForce (self.forces[0])
+ self.fo.write("""
+ popWorld.populate(m, FALSE, TRUE) ;
+@@ -345,16 +345,16 @@ class fig:
+
+ def checkVectorSum (self, x0, x1, x2):
+ ox = x0
+- print "x:", x0, x1, x2,
++ print("x:", x0, x1, x2, end=' ')
+ tx = x0 + x1 + x2
+ if tx<0:
+ x0 += (-tx)
+ elif tx>100:
+ x0 -= (tx-100)
+ if ox == x0:
+- print
++ print()
+ else:
+- print " ->", x0, x1, x2
++ print(" ->", x0, x1, x2)
+ return x0, x1, x2
+
+
+@@ -429,9 +429,9 @@ class fig:
+
+ def generateModula2 (self):
+ if self.objects != []:
+- print "objects are: ", self.objects
++ print("objects are: ", self.objects)
+ self.minp, self.maxp = self.findExtents()
+- print "max extents are:", self.minp, self.maxp
++ print("max extents are:", self.minp, self.maxp)
+ self.createModule()
+
+ def doStyle (self, style):
+@@ -547,7 +547,7 @@ BEGIN
+ #
+
+ def usage (value):
+- print "fig [-h] inputfile outputfile"
++ print("fig [-h] inputfile outputfile")
+ sys.exit(value)
+
+
+--- a/src/gcc/gm2/examples/pge/max2code
++++ b/src/gcc/gm2/examples/pge/max2code
+@@ -1,3 +1,3 @@
+ #!/bin/bash
+
+-python max2code.py $*
++python3 max2code.py $*
+--- a/src/gcc/gm2/examples/pge/max2code.py
++++ b/src/gcc/gm2/examples/pge/max2code.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import sys, getopt
+
+@@ -20,7 +20,7 @@ verbose = False
+ #
+
+ def usage (value):
+- print "max2code [-h][-v][-o outputfile][-l c][-l m2][--lang=m2][--lang=c] inputfile"
++ print("max2code [-h][-v][-o outputfile][-l c][-l m2][--lang=m2][--lang=c] inputfile")
+ sys.exit(value)
+
+
+@@ -60,10 +60,10 @@ def main ():
+
+ parseArgs()
+ if outputFile == "":
+- print "no output file specified"
++ print("no output file specified")
+ usage(1)
+ if inputFile == "":
+- print "no input file specified"
++ print("no input file specified")
+ usage(1)
+ else:
+ p = parse(inputFile, outputFile, defaultLang, verbose)
+--- a/src/gcc/gm2/examples/pge/mxmmaxima.py
++++ b/src/gcc/gm2/examples/pge/mxmmaxima.py
+@@ -38,7 +38,7 @@ class parse:
+ def getPolynomials (self, nTerms):
+ if self.expression():
+ e = self.expressionStack.pop()
+- for n in reversed(range(nTerms)):
++ for n in reversed(list(range(nTerms))):
+ self.terms += [e.collectPolynomial(n, 't')]
+ self.terms.reverse()
+ return self.terms
+@@ -331,7 +331,7 @@ class parse:
+ def syntaxError (self, message):
+ mystop ()
+ printHeader(self.inputFile, self.lineNo)
+- print self.contents
++ print((self.contents))
+
+ j = self.columnNo-len(self.tok)
+ s = " " * j
+@@ -339,7 +339,7 @@ class parse:
+ s += " "
+ s += message
+ printHeader(self.inputFile, self.lineNo)
+- print s
++ print(s)
+ sys.exit(1)
+
+
+@@ -349,10 +349,10 @@ class parse:
+
+ def printToken (self, token):
+ printHeader(self.inputFile, self.lineNo-1)
+- print self.contents
++ print((self.contents))
+
+ j = self.columnNo-len(token)
+ s = " " * j
+ s += "^" * len(token)
+ printHeader(self.inputFile, self.lineNo)
+- print s
++ print(s)
+--- a/src/gcc/gm2/examples/pge/mxmout.py
++++ b/src/gcc/gm2/examples/pge/mxmout.py
+@@ -8,7 +8,7 @@
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+--- a/src/gcc/gm2/examples/pge/mxmparser.py
++++ b/src/gcc/gm2/examples/pge/mxmparser.py
+@@ -25,7 +25,7 @@ commentLeader = '//'
+
+ def internalError (message):
+ stop()
+- print message
++ print(message)
+ sys.exit(1)
+
+
+@@ -116,8 +116,8 @@ class parse:
+ o = "outfile.m"
+ m = open(o, 'r').readlines()
+ if verbose:
+- print "output from maxima is:"
+- print string.join(m, '')
++ print("output from maxima is:")
++ print((string.join(m, '')))
+ c = "rm %s\n" % i
+ os.system(c)
+ c = "rm %s\n" % o
+@@ -238,7 +238,7 @@ class parse:
+ else:
+ printf(alternative)
+ printf("\n")
+- print self.contents
++ print((self.contents))
+
+
+ #
+--- a/src/gcc/gm2/examples/pge/mxmtree.py
++++ b/src/gcc/gm2/examples/pge/mxmtree.py
+@@ -6,7 +6,7 @@ from mxmutils import *
+
+
+ defaultLang = "c"
+-atom, node = range(2)
++atom, node = list(range(2))
+ output = ""
+
+
+@@ -15,7 +15,7 @@ output = ""
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+--- a/src/gcc/gm2/examples/pge/pge.py
++++ b/src/gcc/gm2/examples/pge/pge.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/env python3
+
+ import pgeif
+ import pygame
+@@ -9,10 +9,10 @@ import math
+ from pygame.locals import *
+
+
+-colour_t, box_t, circle_t, fb_box_t, fb_circle_t, fb_text_t = range (6)
++colour_t, box_t, circle_t, fb_box_t, fb_circle_t, fb_text_t = list(range(6))
+ id2ob = {}
+ ob2id = {}
+-batch_d, pyg_d = range (2)
++batch_d, pyg_d = list(range(2))
+ device = None
+ opened = False
+ output = None
+@@ -49,14 +49,14 @@ font = None
+ #
+
+ def printf (format, *args):
+- print str (format) % args,
++ print(str (format) % args, end=' ')
+
+
+ def debugf (format, *args):
+ global debugging
+
+ if debugging:
+- print str (format) % args,
++ print(str (format) % args, end=' ')
+
+ def errorf (format, *args):
+ m = str (format) % args
+@@ -148,7 +148,7 @@ class object:
+
+ self._check_colour ()
+ i = pgeif.h2l (self._get_pgeif_colour ())
+- if idTOcol.has_key (i):
++ if i in idTOcol:
+ return idTOcol[i]
+ internalf ("3 colour triple should have been defined")
+
+@@ -197,7 +197,7 @@ class object:
+ _emit_fract (self.o [1]) # y pos
+ _emit_fract (self.o [2]) # radius
+ _emit_short (self.o [3]) # colour
+- print "_emit_fill_circle, colour is ", self.o [3], self.o [0], self.o [1], self.o [2]
++ print("_emit_fill_circle, colour is ", self.o [3], self.o [0], self.o [1], self.o [2])
+
+ def _emit_fill_polygon (self):
+ output.write (struct.pack ("3s", "dP"))
+@@ -225,7 +225,7 @@ class object:
+ self._check_type ([box_t, circle_t], "assign a velocity to a")
+ self._check_not_fixed ("assign a velocity")
+ self._check_not_deleted ("a velocity")
+- print "velocity for object", self.o, vx, vy
++ print("velocity for object", self.o, vx, vy)
+ self.o = self._check_same (pgeif.velocity (self.o, vx, vy))
+ return self
+
+@@ -242,7 +242,7 @@ class object:
+ self._check_no_mass ("cannot fix " + self._name () + " as it has a mass")
+ self.fixed = True
+ self.o = self._check_same (pgeif.fix (self.o))
+- print "fix", self.o
++ print("fix", self.o)
+ return self
+
+ def mass (self, m):
+@@ -253,7 +253,7 @@ class object:
+ errorf ("cannot give value None as the mass\n")
+ self.kg = m
+ self.o = self._check_same (pgeif.mass (self.o, m))
+- print "mass", self.o
++ print("mass", self.o)
+ return self
+
+ def apply_impulse (self, unit_vec, magnitude):
+@@ -262,13 +262,13 @@ class object:
+ self._check_not_deleted (" an impulse")
+ if (magnitude is None) or (unit_vec is None):
+ return
+- print "magnitude", magnitude, "vector", unit_vec
++ print("magnitude", magnitude, "vector", unit_vec)
+ pgeif.apply_impulse (self.o, unit_vec[0], unit_vec[1], magnitude)
+ return self
+
+ def on_collision_with (self, another, p):
+ if debugging:
+- print "ok registering call back", p, another
++ print("ok registering call back", p, another)
+ self.collisionp = p
+ self.collisionWith = another
+ return self
+@@ -318,14 +318,14 @@ class object:
+
+ def _collision (self, between, e):
+ if debugging:
+- print "collision seen, between:", between
++ print("collision seen, between:", between)
+ if self.collisionWith == []:
+ if self.collisionp != None:
+ if debugging:
+- print "before collisionp"
++ print("before collisionp")
+ self.collisionp (self, e)
+ if debugging:
+- print "after collisionp"
++ print("after collisionp")
+ else:
+ for c in self.collisionWith:
+ for b in between:
+@@ -396,7 +396,7 @@ class object:
+ return pgeif.get_yaccel (self.o)
+
+ def put_xvel (self, f):
+- print "put_xvel on a", self._name ()
++ print("put_xvel on a", self._name ())
+ self._check_type ([box_t, circle_t], "put the xvel")
+ return pgeif.put_xvel (self.o, f)
+
+@@ -425,14 +425,14 @@ def _colspace (f):
+ def rgb (r, g, b):
+ global idTOcol
+
+- print "in rgb (", r, g, b, ")"
++ print("in rgb (", r, g, b, ")")
+ c = pgeif.rgb (float(r), float(g), float(b))
+- print "after pgeif.rgb ->", c
++ print("after pgeif.rgb ->", c)
+ o = object (colour_t, [float(r), float(g), float(b), c])
+ o._check_colour ()
+ c = pgeif.h2l (c)
+ idTOcol[c] = (_colspace (r), _colspace (g), _colspace (b))
+- print "define colour triple as:", idTOcol[c]
++ print("define colour triple as:", idTOcol[c])
+ return o
+
+ def white ():
+@@ -462,18 +462,18 @@ def text (x, y, s, c, size, level):
+
+
+ def box (x, y, w, h, c, level = 0):
+- print "box:", x, y, w, h, c, level
++ print("box:", x, y, w, h, c, level)
+ c._param_colour ("fifth parameter to box is expected to be a colour")
+ if level == 0:
+ id = pgeif.box (x, y, w, h, c._get_pgeif_colour ())
+- print "box colour =", c, c._get_pgeif_colour ()
++ print("box colour =", c, c._get_pgeif_colour ())
+ ob = object (box_t, id, c, level)
+ ob.set_width (w)
+ debugf ("box ")
+ _register (id, ob)
+ else:
+ ob = object (fb_box_t, [x, y, x+w, y, x+w, y+h, x+w, y+h, x, y+h, c._get_pgeif_colour ()], c, level)
+- print "box colour =", c, c._get_pgeif_colour ()
++ print("box colour =", c, c._get_pgeif_colour ())
+ _add (ob, level)
+ return ob
+
+@@ -516,30 +516,30 @@ def _add (ob, level):
+ background += [level]
+ background.sort ()
+
+- if levels.has_key (level):
++ if level in levels:
+ levels[level] += [ob]
+ else:
+ levels[level] = [ob]
+- print levels[level]
++ print(levels[level])
+
+
+ def _sub (ob, level):
+ global foreground, background
+
+- if levels.has_key (level):
++ if level in levels:
+ levels[level].remove (ob)
+
+ if level > 0:
+ f = []
+ for l in foreground:
+- if levels.has_key (l):
++ if l in levels:
+ f += [l]
+ foreground = f
+ foreground.sort ()
+ else:
+ b = []
+ for l in background:
+- if levels.has_key (l):
++ if l in levels:
+ b += [l]
+ background = b
+ background.sort ()
+@@ -549,13 +549,13 @@ def circle (x, y, r, c, level = 0):
+ c._param_colour ("fourth parameter to box is expected to be a colour")
+ if level == 0:
+ id = pgeif.circle (x, y, r, c._get_pgeif_colour ())
+- print "circle id =", id
++ print("circle id =", id)
+ debugf ("circle ")
+ ob = object (circle_t, id, c, level)
+ _register (id, ob)
+ else:
+- print "circle, colour =", c
+- print "pge: colour", c._get_pgeif_colour ()
++ print("circle, colour =", c)
++ print("pge: colour", c._get_pgeif_colour ())
+ ob = object (fb_circle_t, [x, y, r, c._get_pgeif_colour ()], c, level)
+ _add (ob, level)
+ return ob
+@@ -636,7 +636,7 @@ def draw_background ():
+ for o in levels[l]:
+ o._draw ()
+
+-no_event, frame_event, collision_event, function_event, final_event = range (5)
++no_event, frame_event, collision_event, function_event, final_event = list(range(5))
+
+ class event:
+ def __init__ (self, t, d, l):
+@@ -706,14 +706,14 @@ class event:
+ self._handle_frame_buffer ()
+ _collision (self._between (), self)
+ elif self._type == function_event:
+- print "_process found timer_event", self.__id
++ print("_process found timer_event", self.__id)
+ i = self.__id
+- if id2func.has_key (i):
+- print "function", i, "about to be called"
++ if i in id2func:
++ print("function", i, "about to be called")
+ id2func [i] ()
+- print "function", i, "finished"
++ print("function", i, "finished")
+ else:
+- print "function", i, "has been cancelled"
++ print("function", i, "has been cancelled")
+ def _handle_frame_buffer (self):
+ cData = pgeif.get_cbuf ()
+ debugf ("cData len = %d\n", len (cData))
+@@ -741,7 +741,7 @@ class event:
+ def _get_time (self):
+ return self.__etime
+ def collision_between (self):
+- print self._between ()
++ print(self._between ())
+ return self._between ()
+ def cancel (self):
+ self._cancelled = True
+@@ -827,28 +827,28 @@ def _add_relative (r):
+ pge_event_queue = []
+
+ def display_element (e, t):
+- print "[", e[0], "ms ",
++ print("[", e[0], "ms ", end=' ')
+ if e[1]._type == frame_event:
+- print "displayframe",
++ print("displayframe", end=' ')
+ elif e[1]._type == collision_event:
+- print "collision",
++ print("collision", end=' ')
+ elif e[1]._type == function_event:
+- print "timer",
++ print("timer", end=' ')
+ else:
+- print "final",
+- print " at", e[0] + (int) (t * 1000.0), "ms",
+- print "], ",
++ print("final", end=' ')
++ print(" at", e[0] + (int) (t * 1000.0), "ms", end=' ')
++ print("], ", end=' ')
+
+ def display_event_queue (q):
+ if q == []:
+- print "event queue is empty"
++ print("event queue is empty")
+ else:
+- print "event queue: "
++ print("event queue: ")
+ t = pgeif.get_time ()
+ for e in q:
+ display_element (e, t)
+ t += e[1]._get_time ()
+- print ""
++ print("")
+
+ prev_event_time = 0.0
+
+@@ -869,7 +869,7 @@ def _wait_for_event ():
+ global pge_event_queue, slow_down_factor, device, _record, debugging
+
+ if debugging:
+- print "_wait_for_event, pge_event_queue ="
++ print("_wait_for_event, pge_event_queue =")
+ display_event_queue (pge_event_queue)
+ if device == pyg_d:
+ pygame.event.set_allowed (None)
+@@ -903,7 +903,7 @@ def at_time (t, p):
+
+ def at_cancel (i):
+ global id2func
+- if id2func.has_key (i):
++ if i in id2func:
+ del id2func[i]
+ else:
+ error ("at_cancel cannot delete function %d as it no longer exists\n", i)
+@@ -933,10 +933,10 @@ def pyg_draw_frame (cdata, clength, fdata, flength):
+ while f.left () >= 3:
+ header = struct.unpack ("3s", f.read (3))[0]
+ header = header[:2]
+- if call.has_key (header):
++ if header in call:
+ f = call[header] (f)
+ else:
+- print "not understood header =", header
++ print("not understood header =", header)
+ sys.exit (1)
+ # printf ("drawing foreground\n")
+ if flength > 0:
+@@ -1086,7 +1086,7 @@ def runpy (t=-1, ep=None):
+ _process (pe)
+ ev = _get_next_event ()
+ nev = _post_event (ev, ev._get_time ())
+- elif pyevent2func.has_key (e.type):
++ elif e.type in pyevent2func:
+ pyevent2func[e.type] (e)
+ # what does this code do??
+ # elif ep != None:
+@@ -1190,8 +1190,8 @@ def load_sound (name):
+ return NoneSound()
+ try:
+ sound = pygame.mixer.Sound(name)
+- except pygame.error, message:
+- print 'cannot load sound file:', name
++ except pygame.error as message:
++ print('cannot load sound file:', name)
+ return NoneSound()
+ return sound
+
+@@ -1342,7 +1342,7 @@ def doRegisterColour (f):
+ f, gf = readFract (f)
+ f, bf = readFract (f)
+ if debugging:
+- print rf, gf, bf
++ print(rf, gf, bf)
+ r = toCol (rf)
+ g = toCol (gf)
+ b = toCol (bf)
+@@ -1388,14 +1388,14 @@ def doDrawFillPolygon (f):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (resolution[0], xf)
+ y = mults (resolution[1], yf)
+ l += [[x, flip (y)]]
+
+ f, c = readColour (f)
+ if debugging:
+- print "drawFillPolygon (colour =", c, " l =", l, ")"
++ print("drawFillPolygon (colour =", c, " l =", l, ")")
+ pygame.draw.polygon (screen, c, l, 0)
+ return f
+
+@@ -1426,7 +1426,7 @@ def doDrawFillCircle (f):
+ f, c = readColour (f)
+ debugf("circle x = %d y = %d, r = %d\n", x, y, r)
+ if debugging:
+- print " colour =", c
++ print(" colour =", c)
+ pygame.draw.circle (screen, c, (x, flip (y)), r, 0)
+ return f
+
+@@ -1479,14 +1479,14 @@ def doDrawPolygon (f):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (resolution[0], xf)
+ y = mults (resolution[1], yf)
+ l += [[x, flip(y)]]
+
+ f, t = readFract (f)
+ if debugging:
+- print "draw polygon", l, "thickness", t
++ print("draw polygon", l, "thickness", t)
+ # pygame.draw.polygon (screen, c, l, 0)
+ return f
+
+--- a/src/gcc/gm2/examples/pge/pge2d.py
++++ a/src/gcc/gm2/examples/pge/pge2d.py
+@@ -1,10 +0,0 @@
+-#!/usr/bin/env python
+-
+-
+-
+-#
+-#
+-#
+-
+-def rgb (r, g, b):
+-
+--- a/src/gcc/gm2/examples/pge/pgeplayback.py
++++ b/src/gcc/gm2/examples/pge/pgeplayback.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import os, pygame, string, sys, getopt, math, struct, time
+ from pygame.locals import *
+@@ -73,7 +73,7 @@ class myfile:
+ def rewind_to (self, frameno):
+ global seekTable
+
+- if seekTable.has_key (frameno):
++ if frameno in seekTable:
+ self.pos = seekTable[frameno]
+ return True
+ else:
+@@ -87,14 +87,14 @@ class myfile:
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+ #
+ # error - issues an error message and exits.
+ #
+
+ def error (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+ sys.exit(1)
+
+
+@@ -105,7 +105,7 @@ def error (format, *args):
+ def debugf (format, *args):
+ global debugging
+ if debugging:
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -129,8 +129,8 @@ def load_sound(name):
+ return NoneSound ()
+ try:
+ sound = pygame.mixer.Sound (name)
+- except pygame.error, message:
+- print 'cannot load sound file:', name
++ except pygame.error as message:
++ print('cannot load sound file:', name)
+ return NoneSound ()
+ return sound
+
+@@ -148,11 +148,11 @@ def doPlay (f):
+ global sounds, wantedFrame, frameNo
+
+ name = getSoundName (f)
+- print "need to play", name
+- if not sounds.has_key (name):
++ print("need to play", name)
++ if name not in sounds:
+ sounds[name] = load_sound (name)
+ if frameNo == wantedFrame:
+- print "playing", name
++ print("playing", name)
+ sounds[name].play ()
+ return f
+
+@@ -201,7 +201,7 @@ def registerColour (f):
+ f, gf = readFract (f)
+ f, bf = readFract (f)
+ if debugging:
+- print rf, gf, bf
++ print(rf, gf, bf)
+ r = toCol (rf)
+ g = toCol (gf)
+ b = toCol (bf)
+@@ -243,7 +243,7 @@ def drawFillCircle (f):
+ if frameNo == wantedFrame:
+ debugf("circle x = %d y = %d, r = %d\n", x, y, r)
+ if debugging:
+- print " colour =", c
++ print(" colour =", c)
+ pygame.draw.circle (screen, c, (x, flip (y)), r, 0)
+ return f
+
+@@ -258,19 +258,19 @@ def drawPolygon (f):
+ f, n = readShort (f)
+ l = []
+ if debugging:
+- print "drawPolygon", n,
++ print("drawPolygon", n, end=' ')
+ for i in range (n):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (resolution[0], xf)
+ y = mults (resolution[1], yf)
+ l += [[x, flip(y)]]
+
+ f, t = readFract (f)
+ if debugging:
+- print "draw polygon", l, "thickness", t
++ print("draw polygon", l, "thickness", t)
+ if frameNo == wantedFrame:
+ # pygame.draw.polygon(screen, c, l, 0)
+ pass
+@@ -344,12 +344,12 @@ def drawFillPolygon (f):
+ f, n = readShort (f)
+ l = []
+ if debugging:
+- print "drawFillPolygon", n,
++ print("drawFillPolygon", n, end=' ')
+ for i in range (n):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (resolution[0], xf)
+ y = mults (resolution[1], yf)
+ l += [[x, flip(y)]]
+@@ -357,8 +357,8 @@ def drawFillPolygon (f):
+ f, c = readColour (f)
+ if frameNo == wantedFrame:
+ if debugging:
+- print ""
+- print "drawFillPolygon (colour =", c, " l =", l, ")"
++ print("")
++ print("drawFillPolygon (colour =", c, " l =", l, ")")
+ pygame.draw.polygon (screen, c, l, 0)
+ return f
+
+@@ -499,7 +499,7 @@ def readFile (name):
+ header = header[:2]
+ # print "readFile", header
+ # printf ("(frameNo = %d, wantedFrame = %d)\n", frameNo, wantedFrame)
+- if call.has_key (header):
++ if header in call:
+ f = call[header] (f)
+ pc = f.pos
+ header = struct.unpack ("3s", f.read (3))[0]
+@@ -588,9 +588,9 @@ def doSystem (s):
+ global verbose
+
+ if verbose:
+- print s
++ print(s)
+ if os.system (s) != 0:
+- print "shell failed:", s
++ print("shell failed:", s)
+ sys.exit (1)
+
+
+@@ -687,7 +687,7 @@ def finishMovie ():
+ else:
+ printf ("generating sound effect file\n")
+ commandArgs = ""
+- print soxSound
++ print(soxSound)
+ audio = "audio.wav"
+ for t, s, n in soxSound:
+ frameSound = "%6d-%3d.wav" % (t, n)
+@@ -783,7 +783,7 @@ def grRegisterColour (f):
+ f, gf = readFract (f)
+ f, bf = readFract (f)
+ if debugging:
+- print rf, gf, bf
++ print(rf, gf, bf)
+ r = toCol (rf)
+ g = toCol (gf)
+ b = toCol (bf)
+@@ -802,7 +802,7 @@ def doMessage (f):
+ while int(b) != 0:
+ text += b
+ b = f.read (1)
+- print "Time:", frameTime, text
++ print("Time:", frameTime, text)
+
+
+ def grMessage (f):
+@@ -813,7 +813,7 @@ def grMessage (f):
+ while int(b) != 0:
+ text += b
+ b = f.read (1)
+- print "Time:", frameTime, text
++ print("Time:", frameTime, text)
+
+
+ def grDrawPolygon (f):
+@@ -823,19 +823,19 @@ def grDrawPolygon (f):
+ f, n = readShort (f)
+ l = []
+ if debugging:
+- print "grDrawPolygon", n,
++ print("grDrawPolygon", n, end=' ')
+ for i in range (n):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (1.0, xf)
+ y = mults (1.0, yf)
+ l += [[x, flip(y)]]
+
+ f, t = readFract (f)
+ if debugging:
+- print "draw polygon", l, "thickness", t
++ print("draw polygon", l, "thickness", t)
+ return f
+
+
+@@ -847,12 +847,12 @@ def grDrawFillPolygon (f):
+ f, n = readShort (f)
+ l = []
+ if debugging:
+- print "grDrawFillPolygon", n,
++ print("grDrawFillPolygon", n, end=' ')
+ for i in range (n):
+ f, xf = readFract (f)
+ f, yf = readFract (f)
+ if debugging:
+- print xf, yf,
++ print(xf, yf, end=' ')
+ x = mults (1.0, xf)
+ y = mults (1.0, yf)
+ l += [[x, flip(y)]]
+--- a/src/gcc/gm2/examples/pge/pgepygame.py
++++ b/src/gcc/gm2/examples/pge/pgepygame.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+
+ import os, pygame, string, sys, getopt, math, struct
+ from pygame.locals import *
+@@ -33,14 +33,14 @@ maxColour = 0
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+ #
+ # error - issues an error message and exits.
+ #
+
+ def error (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+ sys.exit(1)
+
+
+@@ -51,7 +51,7 @@ def error (format, *args):
+ def debugf (format, *args):
+ global debugging
+ if debugging:
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -96,7 +96,7 @@ def registerColour (connection):
+ connection, bytes = get(connection, 3)
+ r, g, b = struct.unpack('BBB', bytes)
+ debugf("colour %d, %d, %d\n", r, g, b)
+- if not colTOid.has_key((r, g, b)):
++ if (r, g, b) not in colTOid:
+ maxColour += 1
+ colTOid[(r, g, b)] = maxColour
+ idTOcol[maxColour] = (r, g, b)
+@@ -200,7 +200,7 @@ def serveRPC ():
+ data = connection.recv(1)
+ debugf("received packet %c\n", data)
+ if data:
+- if call.has_key(data):
++ if data in call:
+ connection = call[data](connection)
+ else:
+ printf("error unexpected packet %c\n", data)
+--- a/src/gcc/gm2/examples/pge/runfig
++++ b/src/gcc/gm2/examples/pge/runfig
+@@ -16,11 +16,11 @@ killall a.out
+ rm *.png *.ms
+
+ xfig $source
+-if python fig.py $source $modname ; then
++if python3 fig.py $source $modname ; then
+ if gm2 -c -I. -g -fiso $modname ; then
+ rm `basename $modname .mod`.o
+ make foo.o ; make foo
+- python pge.py &
++ python3 pge.py &
+ sleep 1
+ ./a.out
+ # ./produce-avi
+--- a/src/gcc/gm2/examples/pge/runthis
++++ b/src/gcc/gm2/examples/pge/runthis
+@@ -1,3 +1,3 @@
+-#!/bin/bash
++#!/bin/sh
+
+-python max2code.py -v -o t.mod test.mxm
++python3 max2code.py -v -o t.mod test.mxm
+--- a/src/gcc/gm2/examples/pge/t.py
++++ b/src/gcc/gm2/examples/pge/t.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ import pygame
+ from pygame.locals import *
+@@ -24,6 +24,6 @@ pygame.draw.circle (screen, blue, (100, 100), 100, 0)
+ pygame.display.flip()
+
+
+-print "setting timer for 3 seconds"
++print("setting timer for 3 seconds")
+ time.sleep (3)
+-print "goodbye"
++print("goodbye")
+--- a/src/gcc/gm2/examples/server/client.py
++++ b/src/gcc/gm2/examples/server/client.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ import sys
+ from socket import *
+@@ -12,4 +12,4 @@ s.connect((serverHost, serverPort))
+ while 1:
+ s.send('h')
+ data = s.recv(1024)
+- print data
++ print(data)
+--- a/src/gcc/gm2/examples/swig/dual/Makefile.in
++++ b/src/gcc/gm2/examples/swig/dual/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../
+ XGPP=../../../../g++ -B../../../../
+ XGCC=../../../../xgcc -B../../../../
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "or you can use 'make post-install' to build the examples after installing the compiler"
+@@ -55,7 +55,7 @@ post-install: clean
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libfirst.la
+
+ cp .libs/libfirst.so _libfirst.so
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testdual.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testdual.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* *.i *.lst *.cpp *.lo *.la
+--- a/src/gcc/gm2/examples/swig/dual/testdual.py
++++ b/src/gcc/gm2/examples/swig/dual/testdual.py
+@@ -1,5 +1,5 @@
+ import libfirst
+
+-print "inside Python"
++print("inside Python")
+ libfirst.libfirst_out("calling out")
+-print "finishing Python"
++print("finishing Python")
+--- a/src/gcc/gm2/examples/swig/exceptions/Makefile.in
++++ b/src/gcc/gm2/examples/swig/exceptions/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../
+ XGPP=../../../../g++
+ XGCC=../../../../gcc
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "you can use 'make post-install' to build the examples after installing the compiler"
+@@ -54,8 +54,8 @@ post-install: clean
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libtiny.la
+
+ cp .libs/libtiny.so _libtiny.so
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testtiny.py
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/stresstiny.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testtiny.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/stresstiny.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* tiny.py tiny.i *_m2.cpp
+--- a/src/gcc/gm2/examples/swig/exceptions/stresstiny.py
++++ b/src/gcc/gm2/examples/swig/exceptions/stresstiny.py
+@@ -7,8 +7,8 @@ import sys
+ for i in range (10):
+ try:
+ libtiny.doSomething (i)
+- print "error exception should have been thrown"
++ print("error exception should have been thrown")
+ except:
+- print "caught exception in Python: i =", i
++ print(("caught exception in Python: i =", i))
+
+-print "stresstiny passed"
++print("stresstiny passed")
+--- a/src/gcc/gm2/examples/swig/exceptions/testtiny.py
++++ b/src/gcc/gm2/examples/swig/exceptions/testtiny.py
+@@ -5,6 +5,6 @@ import libtiny
+
+ try:
+ libtiny.doSomething(1)
+- print "error : should not arrive here"
++ print("error : should not arrive here")
+ except:
+- print "success: caught exception in Python"
++ print("success: caught exception in Python")
+--- a/src/gcc/gm2/examples/swig/full-strlib/Makefile.in
++++ b/src/gcc/gm2/examples/swig/full-strlib/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2
+ XGPP=../../../../g++
+ XGCC=../../../../xgcc
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "or you can use 'make post-install' to build the examples after installing the compiler"
+@@ -56,9 +56,9 @@ strlib: force
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrLib.la
+ cp .libs/libStrLib.so _StrLib.so
+
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testlen.py
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testequ.py
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testcopy.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testlen.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testequ.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testcopy.py
+
+ numberio: force
+ gm2 -I$(srcdir) -c -g -fswig $(srcdir)/../../../gm2-libs/NumberIO.mod
+@@ -75,7 +75,7 @@ numberio: force
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libNumberIO.la
+ cp .libs/libNumberIO.so _NumberIO.so
+
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testnum.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testnum.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* StrLib.py NumberIO.py *.i *_m2.cpp
+--- a/src/gcc/gm2/examples/swig/full-strlib/testcopy.py
++++ b/src/gcc/gm2/examples/swig/full-strlib/testcopy.py
+@@ -1,7 +1,7 @@
+ import StrLib
+
+
+-print StrLib.StrLib_StrLen("hello")
++print((StrLib.StrLib_StrLen("hello")))
+ a = "1234567890" # should really find a better method
+ StrLib.StrLib_StrCopy("hello", a) # for creating, a, which is also
+-print a # compatible with ARRAY OF CHAR
++print(a) # compatible with ARRAY OF CHAR
+--- a/src/gcc/gm2/examples/swig/full-strlib/testequ.py
++++ b/src/gcc/gm2/examples/swig/full-strlib/testequ.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2010
+ # Free Software Foundation, Inc.
+@@ -22,23 +22,23 @@
+
+ import StrLib
+
+-print 'we are going to call StrLib.StrLib_StrLess("abcd", "pqr") and we expect 1 in return'
+-print StrLib.StrLib_StrLess("abcd", "pqr")
++print('we are going to call StrLib.StrLib_StrLess("abcd", "pqr") and we expect 1 in return')
++print((StrLib.StrLib_StrLess("abcd", "pqr")))
+ if StrLib.StrLib_StrLess("abcd", "pqr")==1:
+- print "passed"
++ print("passed")
+ else:
+- print "failed"
++ print("failed")
+
+-print 'we are going to call StrLib.StrLib_StrLess("pqr", "abcd") and we expect 0 in return'
+-print StrLib.StrLib_StrLess("pqr", "abcd")
++print('we are going to call StrLib.StrLib_StrLess("pqr", "abcd") and we expect 0 in return')
++print((StrLib.StrLib_StrLess("pqr", "abcd")))
+ if StrLib.StrLib_StrLess("pqr", "abcd")==0:
+- print "passed"
++ print("passed")
+ else:
+- print "failed"
++ print("failed")
+
+-print 'we are going to call StrLib.StrLib_IsSubString("abcdefghijk", "fghi") and we expect 1 in return'
+-print StrLib.StrLib_IsSubString("abcdefghijk", "fghi")
++print('we are going to call StrLib.StrLib_IsSubString("abcdefghijk", "fghi") and we expect 1 in return')
++print((StrLib.StrLib_IsSubString("abcdefghijk", "fghi")))
+ if StrLib.StrLib_IsSubString("abcdefghijk", "fghi")==1:
+- print "passed"
++ print("passed")
+ else:
+- print "failed"
++ print("failed")
+--- a/src/gcc/gm2/examples/swig/full-strlib/testlen.py
++++ b/src/gcc/gm2/examples/swig/full-strlib/testlen.py
+@@ -1,4 +1,4 @@
+ import StrLib
+
+-print 'we are going to call StrLib.StrLib_StrLen("hello world") and we expect 11 in return'
+-print StrLib.StrLib_StrLen("hello world")
++print('we are going to call StrLib.StrLib_StrLen("hello world") and we expect 11 in return')
++print((StrLib.StrLib_StrLen("hello world")))
+--- a/src/gcc/gm2/examples/swig/full-strlib/testnum.py
++++ b/src/gcc/gm2/examples/swig/full-strlib/testnum.py
+@@ -1,3 +1,3 @@
+ import NumberIO
+
+-print "1234 x 2 =", NumberIO.NumberIO_StrToInt("1234")*2
++print(("1234 x 2 =", NumberIO.NumberIO_StrToInt("1234")*2))
+--- a/src/gcc/gm2/examples/swig/strio/Makefile.in
++++ b/src/gcc/gm2/examples/swig/strio/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2
+ XGPP=../../../../g++
+ XGCC=../../../../xgcc
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "or you can use 'make post-install' to build the examples after installing the compiler"
+@@ -55,7 +55,7 @@ strio: force
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrIO.la
+ cp .libs/libStrIO.so _StrIO.so
+
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/teststrio.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/teststrio.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* StrIO.py *.i *_m2.cpp
+--- a/src/gcc/gm2/examples/swig/strlen/Makefile
++++ b/src/gcc/gm2/examples/swig/strlen/Makefile
+@@ -1,11 +1,11 @@
+-PYTHON_VERSION=2.5
++PYTHON_VERSION=3
+
+ all: force
+ swig -python MyStrLib.i
+ gcc -c -fPIC MyStrLib_wrap.c -I/usr/include/python$(PYTHON_VERSION)
+ gm2 -fshared -c -fPIC -g MyStrLib.mod
+ gm2 -fmakeall -I. -fPIC -g -shared -fshared MyStrLib.mod MyStrLib_wrap.o -o _MyStrLib.so
+- python testlen.py
++ python$(PYTHON_VERSION) testlen.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* MyStrLib.py *.lst *_m2.cpp
+--- a/src/gcc/gm2/examples/swig/strlen/testlen.py
++++ b/src/gcc/gm2/examples/swig/strlen/testlen.py
+@@ -1,4 +1,4 @@
+ import MyStrLib
+
+-print 'we are going to call MyStrLib.MyStrLib_StrLen("hello world") and we expect 11 in return'
+-print MyStrLib.MyStrLib_StrLen("hello world")
++print('we are going to call MyStrLib.MyStrLib_StrLen("hello world") and we expect 11 in return')
++print((MyStrLib.MyStrLib_StrLen("hello world")))
+--- a/src/gcc/gm2/examples/swig/strlib/Makefile.in
++++ b/src/gcc/gm2/examples/swig/strlib/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../.. -B../../../../stage1/gm2
+ XGPP=../../../../g++
+ XGCC=../../../../xgcc
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "you can use 'make post-install' to build the examples after installing the compiler"
+@@ -54,7 +54,7 @@ post-install: clean
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libStrLib.la
+
+ cp .libs/libStrLib.so _libStrLib.so
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testlen.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testlen.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* libStrLib.py *.i *.lst libStrLib_m2.cpp
+--- a/src/gcc/gm2/examples/swig/strlib/testlen.py
++++ b/src/gcc/gm2/examples/swig/strlib/testlen.py
+@@ -1,4 +1,4 @@
+ import libStrLib
+
+-print 'we are going to call libStrLib.libStrLib_StrLen("hello world") and we expect 11 in return'
+-print libStrLib.libStrLib_StrLen("hello world")
++print('we are going to call libStrLib.libStrLib_StrLen("hello world") and we expect 11 in return')
++print((libStrLib.libStrLib_StrLen("hello world")))
+--- a/src/gcc/gm2/examples/swig/tiny/Makefile.in
++++ b/src/gcc/gm2/examples/swig/tiny/Makefile.in
+@@ -30,7 +30,7 @@ XGM2=../../../../xgm2 -B../../../../
+ XGPP=../../../../g++ -B../../../../
+ XGCC=../../../../xgcc -B../../../../
+
+-PYTHON_VERSION=2.7
++PYTHON_VERSION=3
+
+ all: force
+ @echo "or you can use 'make post-install' to build the examples after installing the compiler"
+@@ -54,7 +54,7 @@ post-install: clean
+ -rpath `pwd` -lgm2 -lstdc++ -lpth -lm -o libtiny.la
+
+ cp .libs/libtiny.so _libtiny.so
+- PYTHONPATH=.:$(srcdir) python $(srcdir)/testtiny.py
++ PYTHONPATH=.:$(srcdir) python$(PYTHON_VERSION) $(srcdir)/testtiny.py
+
+ clean: force
+ $(RM) -f *.o *.so a.out *.pyc *~ *_wrap* tiny.py *.i *.lst *.cpp
+--- a/src/gcc/gm2/examples/swig/tiny/testtiny.py
++++ b/src/gcc/gm2/examples/swig/tiny/testtiny.py
+@@ -1,5 +1,5 @@
+ import libtiny
+
+-print "inside Python"
++print("inside Python")
+ libtiny.libtiny_out("calling out")
+-print "finishing Python"
++print("finishing Python")
+--- a/src/gcc/gm2/gm2-compiler/M2Error.mod
++++ b/src/gcc/gm2/gm2-compiler/M2Error.mod
+@@ -709,7 +709,7 @@ BEGIN
+ END ;
+ IF FlushAll(head, TRUE)
+ THEN
+- ExitOnHalt(1) ;
++ ExitOnHalt (1) ;
+ HALT
+ END
+ END FlushErrors ;
+@@ -727,6 +727,7 @@ PROCEDURE FlushWarnings ;
+ BEGIN
+ IF FlushAll(head, FALSE)
+ THEN
++ ExitOnHalt (1)
+ END
+ END FlushWarnings ;
+
+--- a/src/gcc/gm2/gm2-compiler/M2Options.def
++++ b/src/gcc/gm2/gm2-compiler/M2Options.def
+@@ -77,7 +77,9 @@ EXPORT QUALIFIED SetReturnCheck, SetNilCheck, SetCaseCheck,
+ SetStatistics, SetWall,
+ CppProg, CppArg, CppCommandLine, CppRemember,
+ SetDebugFunctionLineNumbers, DebugFunctionLineNumbers,
+- SetGenerateStatementNote, GenerateStatementNote ;
++ SetGenerateStatementNote, GenerateStatementNote,
++ SetUnusedVariableChecking, SetUnusedParameterChecking,
++ SetIndex, SetRange, SetWholeDiv ;
+
+
+ VAR
+--- a/src/gcc/gm2/gm2-gcc/m2expr.c
++++ b/src/gcc/gm2/gm2-gcc/m2expr.c
+@@ -2592,7 +2592,7 @@ m2expr_BuildBinaryForeachWordDo (location_t location, tree type, tree op1,
+ }
+
+ /* Append DIGIT to NUM, a number of PRECISION bits being read in base
+-BASE. */
++ BASE. */
+
+ static int
+ append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high,
+@@ -2600,8 +2600,8 @@ append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high,
+ {
+ unsigned int shift;
+ int overflow;
+- HOST_WIDE_INT add_high, res_high;
+- unsigned HOST_WIDE_INT add_low, res_low;
++ HOST_WIDE_INT add_high, res_high, test_high;
++ unsigned HOST_WIDE_INT add_low, res_low, test_low;
+
+ switch (base)
+ {
+@@ -2643,13 +2643,16 @@ append_digit (unsigned HOST_WIDE_INT *low, HOST_WIDE_INT *high,
+ else
+ add_high = add_low = 0;
+
+- if (add_low + digit < add_low)
++ test_low = add_low + digit;
++ if (test_low < add_low)
+ add_high++;
+ add_low += digit;
+
+- if (res_low + add_low < res_low)
++ test_low = res_low + add_low;
++ if (test_low < res_low)
+ add_high++;
+- if (res_high + add_high < res_high)
++ test_high = res_high + add_high;
++ if (test_high < res_high)
+ overflow = TRUE;
+
+ *low = res_low + add_low;
+@@ -2711,15 +2714,16 @@ m2expr_interpret_integer (const char *str, unsigned int base,
+ }
+
+ /* Append DIGIT to NUM, a number of PRECISION bits being read in base
+-BASE. */
++ BASE. */
++
+ static int
+ append_m2_digit (unsigned int *low, int *high, unsigned int digit,
+ unsigned int base)
+ {
+ unsigned int shift;
+ int overflow;
+- int add_high, res_high;
+- unsigned int add_low, res_low;
++ int add_high, res_high, test_high;
++ unsigned int add_low, res_low, test_low;
+
+ switch (base)
+ {
+@@ -2761,13 +2765,16 @@ append_m2_digit (unsigned int *low, int *high, unsigned int digit,
+ else
+ add_high = add_low = 0;
+
+- if (add_low + digit < add_low)
++ test_low = add_low + digit;
++ if (test_low < add_low)
+ add_high++;
+ add_low += digit;
+
+- if (res_low + add_low < res_low)
++ test_low = res_low + add_low;
++ if (test_low < res_low)
+ add_high++;
+- if (res_high + add_high < res_high)
++ test_high = res_high + add_high;
++ if (test_high < res_high)
+ overflow = TRUE;
+
+ *low = res_low + add_low;
+@@ -2777,10 +2784,10 @@ append_m2_digit (unsigned int *low, int *high, unsigned int digit,
+ }
+
+ /* interpret_m2_integer convert an integer constant into two integer
+-constants. Heavily borrowed from gcc/cppexp.c. Note that this is a
+-copy of the above code except that it uses `int' rather than
+-HOST_WIDE_INT to allow gm2 to determine what Modula-2 base type to
+-use for this constant. */
++ constants. Heavily borrowed from gcc/cppexp.c. Note that this is a
++ copy of the above code except that it uses `int' rather than
++ HOST_WIDE_INT to allow gm2 to determine what Modula-2 base type to
++ use for this constant. */
+
+ int
+ m2expr_interpret_m2_integer (const char *str, unsigned int base,
+--- a/src/gcc/gm2/gm2-lang.c
++++ b/src/gcc/gm2/gm2-lang.c
+@@ -259,17 +259,15 @@ gm2_langhook_handle_option (
+ case OPT_fnil:
+ M2Options_SetNilCheck (value);
+ return 1;
+-#if 0
+- case OPT_fwholediv:
+- M2Options_SetWholeDiv (value);
+- return 1;
+- case OPT_findex:
+- M2Options_SetIndex (value);
+- return 1;
+- case OPT_frange:
+- M2Options_SetRange (value);
+- return 1;
+-#endif
++ case OPT_fwholediv:
++ M2Options_SetWholeDiv (value);
++ return 1;
++ case OPT_findex:
++ M2Options_SetIndex (value);
++ return 1;
++ case OPT_frange:
++ M2Options_SetRange (value);
++ return 1;
+ case OPT_ffloatvalue:
+ M2Options_SetFloatValueCheck (value);
+ return 1;
+--- a/src/gcc/gm2/gm2-libs-ch/dtoa.c
++++ b/src/gcc/gm2/gm2-libs-ch/dtoa.c
+@@ -118,7 +118,7 @@ dtoa_calcmaxsig (char *p, int ndigits)
+ return strlen (p) + x;
+ else
+ {
+- strncpy (o, o + 1, ndigits - (o - p));
++ memmove (o, o + 1, ndigits - (o - p));
+ return o - p + x;
+ }
+ }
+@@ -167,7 +167,7 @@ dtoa_calcsign (char *p, int str_size)
+ {
+ if (p[0] == '-')
+ {
+- strncpy (p, p + 1, str_size - 1);
++ memmove (p, p + 1, str_size - 1);
+ return TRUE;
+ }
+ else
+--- a/src/gcc/gm2/gm2-libs/Builtins.def
++++ b/src/gcc/gm2/gm2-libs/Builtins.def
+@@ -1,3 +1,22 @@
++(* Builtins.def defines all gm2 built-in functions.
++
++Copyright (C) 2001-2019 Free Software Foundation, Inc.
++Contributed by Gaius Mulley <gaius.mulley@southwales.ac.uk>.
++
++This file is part of GNU Modula-2.
++
++GNU Modula-2 is free software: you can redistribute it and/or modify
++it under the terms of the GNU Lesser General Public License as
++published by the Free Software Foundation, either version 3 of the
++License, or (at your option) any later version.
++
++GNU Modula-2 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
++Lesser General Public License for more details.
++
++You should have received a copy of the GNU Lesser General Public License
++along with GNU Modula-2. If not, see <https://www.gnu.org/licenses/>. *)
+
+ DEFINITION MODULE Builtins ;
+
+@@ -177,18 +196,6 @@ PROCEDURE __BUILTIN__ strcspn (s, accept: ADDRESS) : CARDINAL ;
+ PROCEDURE __BUILTIN__ strchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
+ PROCEDURE __BUILTIN__ strrchr (s: ADDRESS; c: INTEGER) : ADDRESS ;
+
+-(*
+- longjmp - this GCC builtin restricts the val to always 1.
+-*)
+-(* do not use these two builtins, as gcc, only really
+- anticipates that the Ada front end should use them
+- and it only uses them in its runtime exception handling.
+- We leave them here in the hope that someday they will
+- behave more like their libc counterparts. *)
+-
+-PROCEDURE __BUILTIN__ longjmp (env: ADDRESS; val: INTEGER) ;
+-PROCEDURE __BUILTIN__ setjmp (env: ADDRESS) : INTEGER ;
+-
+
+ (*
+ frame_address - returns the address of the frame.
+--- a/src/gcc/gm2/gm2-libs/Builtins.mod
++++ b/src/gcc/gm2/gm2-libs/Builtins.mod
+@@ -634,17 +634,6 @@ BEGIN
+ RETURN -1.0
+ END huge_valf ;
+
+-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_longjmp)) longjmp (env: ADDRESS; val: INTEGER) ;
+-BEGIN
+- (* empty, replaced internally by gcc *)
+-END longjmp ;
+-
+-PROCEDURE __ATTRIBUTE__ __BUILTIN__ ((__builtin_setjmp)) setjmp (env: ADDRESS) : INTEGER ;
+-BEGIN
+- (* empty, replaced internally by gcc *)
+- RETURN 0 (* keeps gm2 happy *)
+-END setjmp ;
+-
+
+ (*
+ frame_address - returns the address of the frame.
+--- a/src/gcc/gm2/gm2-libs/FIO.mod
++++ b/src/gcc/gm2/gm2-libs/FIO.mod
+@@ -630,21 +630,21 @@ VAR
+ n: INTEGER ;
+ p: POINTER TO CHAR ;
+ BEGIN
+- IF f#Error
++ IF f # Error
+ THEN
+- CheckAccess(f, openedforread, FALSE) ;
+- n := ReadFromBuffer(f, a, nBytes) ;
+- IF n<0
++ CheckAccess (f, openedforread, FALSE) ;
++ n := ReadFromBuffer (f, a, nBytes) ;
++ IF n <= 0
+ THEN
+- RETURN( 0 )
++ RETURN 0
+ ELSE
+ p := a ;
+- INC(p, n) ;
+- SetEndOfLine(f, p^) ;
+- RETURN( n )
++ INC (p, n-1) ;
++ SetEndOfLine (f, p^) ;
++ RETURN n
+ END
+ ELSE
+- RETURN( 0 )
++ RETURN 0
+ END
+ END ReadNBytes ;
+
+--- a/src/gcc/gm2/gm2-libs/config-host.in
++++ b/src/gcc/gm2/gm2-libs/config-host.in
+@@ -33,14 +33,14 @@ AC_HEADER_SYS_WAIT
+ AC_CHECK_HEADER([math.h],
+ [AC_DEFINE([HAVE_MATH_H], [1], [have math.h])])
+
+-AC_CHECK_HEADERS(limits.h stddef.h string.h strings.h stdlib.h \
+- time.h \
+- fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
+- sys/resource.h sys/param.h sys/times.h sys/stat.h \
+- sys/wait.h sys/ioctl.h errno.h sys/errno.h \
+- pwd.h direct.h dirent.h signal.h malloc.h langinfo.h \
+- pthread.h stdarg.h stdio.h sys/types.h termios.h \
+- netinet/in.h netdb.h)
++AC_CHECK_HEADERS([limits.h stddef.h string.h strings.h stdlib.h \
++ time.h \
++ fcntl.h unistd.h sys/file.h sys/time.h sys/mman.h \
++ sys/resource.h sys/param.h sys/times.h sys/stat.h \
++ sys/wait.h sys/ioctl.h errno.h sys/errno.h \
++ pwd.h direct.h dirent.h signal.h malloc.h langinfo.h \
++ pthread.h stdarg.h stdio.h sys/types.h termios.h \
++ netinet/in.h netdb.h])
+
+ # Checks for typedefs, structures, and compiler characteristics.
+
+--- a/src/gcc/gm2/lang-specs.h
++++ b/src/gcc/gm2/lang-specs.h
+@@ -31,7 +31,7 @@ Boston, MA 02110-1301, USA. */
+ %{MT*} %{MF*} -quiet "
+
+ #define GM2CC(INPUT,OUTPUT) \
+- "%{!fno-exceptions:cc1plus;:cc1} " GM2CC_OPTIONS " " INPUT " -o %b_m2.s \n\
++ "%{!fno-exceptions:cc1plus;:cc1} " GM2CC_OPTIONS " " INPUT " -o %d%b_m2.s \n\
+ " AS("%b_m2.s",OUTPUT) " "
+
+ #define GM2LCC(OBJECT,LST) \
+--- a/src/gcc/gm2/lang.opt
++++ b/src/gcc/gm2/lang.opt
+@@ -82,6 +82,18 @@ fcase
+ Modula-2
+ turns on runtime checking to check whether a CASE statement requires an ELSE clause when on was not specified
+
++frange
++Modula-2
++turns on all range checking for numerical values
++
++findex
++Modula-2
++turns on all range checking for numerical values
++
++fwholediv
++Modula-2
++turns on all division and modulus by zero checking for ordinal values
++
+ ffloatvalue
+ Modula-2
+ turns on runtime checking to check whether a floating point number is about to exceed range
+--- a/src/gcc/gm2/m2.flex
++++ b/src/gcc/gm2/m2.flex
+@@ -351,10 +351,10 @@ static void handleColumn (void)
+
+ static void handleDate (void)
+ {
+- time_t clock = time((long *)0);
+- char *sdate = ctime(&clock);
+- char *s = (char *)alloca(strlen(sdate)+2+1);
+- char *p = index(sdate, '\n');
++ time_t clock = time ((time_t *)0);
++ char *sdate = ctime (&clock);
++ char *s = (char *) alloca (strlen (sdate) + 2 + 1);
++ char *p = index (sdate, '\n');
+
+ if (p != NULL) {
+ *p = (char) 0;
+@@ -362,7 +362,7 @@ static void handleDate (void)
+ strcpy(s, "\"");
+ strcat(s, sdate);
+ strcat(s, "\"");
+- M2LexBuf_AddTokCharStar(M2Reserved_stringtok, s);
++ M2LexBuf_AddTokCharStar (M2Reserved_stringtok, s);
+ }
+
+ /*
+--- a/src/gcc/gm2/mc-boot-ch/Gdtoa.c
++++ b/src/gcc/gm2/mc-boot-ch/Gdtoa.c
+@@ -100,7 +100,7 @@ dtoa_calcmaxsig (char *p, int ndigits)
+ return strlen (p) + x;
+ else
+ {
+- strncpy (o, o + 1, ndigits - (o - p));
++ memmove (o, o + 1, ndigits - (o - p));
+ return o - p + x;
+ }
+ }
+@@ -149,7 +149,7 @@ dtoa_calcsign (char *p, int str_size)
+ {
+ if (p[0] == '-')
+ {
+- strncpy (p, p + 1, str_size - 1);
++ memmove (p, p + 1, str_size - 1);
+ return TRUE;
+ }
+ else
+--- a/src/gcc/gm2/mc-boot/GArgs.c
++++ b/src/gcc/gm2/mc-boot/GArgs.c
+@@ -79,7 +79,9 @@ unsigned int Args_GetArg (char *a, unsigned int _a_high, unsigned int i)
+ }
+ }
+ if (j <= High)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ return i < UnixArgs_ArgC;
+ }
+
+--- a/src/gcc/gm2/mc-boot/GCmdArgs.c
++++ b/src/gcc/gm2/mc-boot/GCmdArgs.c
+@@ -103,7 +103,9 @@ static unsigned int GetNextArg (char *CmdLine_, unsigned int _CmdLine_high, unsi
+ ArgIndex = 0;
+ /* Skip spaces */
+ while (((*CmdIndex) < HighC) && (Space (CmdLine[(*CmdIndex)])))
+- (*CmdIndex) += 1;
++ {
++ (*CmdIndex) += 1;
++ }
+ if ((*CmdIndex) < HighC)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+@@ -116,19 +118,27 @@ static unsigned int GetNextArg (char *CmdLine_, unsigned int _CmdLine_high, unsi
+ }
+ else if (DoubleQuote (CmdLine[(*CmdIndex)]))
+ {
++ /* avoid dangling else. */
+ /* Skip over the double quote */
+ (*CmdIndex) += 1;
+ CopyUntil ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA, dquote);
+ (*CmdIndex) += 1;
+ }
+ else
+- CopyUntilSpace ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA);
++ {
++ /* avoid dangling else. */
++ CopyUntilSpace ((char *) CmdLine, _CmdLine_high, CmdIndex, HighC, (char *) Arg, _Arg_high, &ArgIndex, HighA);
++ }
+ }
+ /* Skip spaces */
+ while (((*CmdIndex) < HighC) && (Space (CmdLine[(*CmdIndex)])))
+- (*CmdIndex) += 1;
++ {
++ (*CmdIndex) += 1;
++ }
+ if (ArgIndex < HighA)
+- Arg[ArgIndex] = ASCII_nul;
++ {
++ Arg[ArgIndex] = ASCII_nul;
++ }
+ return (*CmdIndex) < HighC;
+ }
+
+@@ -145,7 +155,9 @@ static void CopyUntilSpace (char *From_, unsigned int _From_high, unsigned int *
+ memcpy (From, From_, _From_high+1);
+
+ while ((((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh)) && (! (Space (From[(*FromIndex)]))))
+- CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh);
++ {
++ CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh);
++ }
+ }
+
+
+@@ -161,7 +173,9 @@ static void CopyUntil (char *From_, unsigned int _From_high, unsigned int *FromI
+ memcpy (From, From_, _From_high+1);
+
+ while ((((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh)) && (From[(*FromIndex)] != UntilChar))
+- CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh);
++ {
++ CopyChar ((char *) From, _From_high, FromIndex, FromHigh, (char *) To, _To_high, ToIndex, ToHigh);
++ }
+ }
+
+
+@@ -181,8 +195,10 @@ static void CopyChar (char *From_, unsigned int _From_high, unsigned int *FromIn
+ if (((*FromIndex) < FromHigh) && ((*ToIndex) < ToHigh))
+ {
+ if (Escape (From[(*FromIndex)]))
+- /* Skip over Escape Character */
+- (*FromIndex) += 1;
++ {
++ /* Skip over Escape Character */
++ (*FromIndex) += 1;
++ }
+ if ((*FromIndex) < FromHigh)
+ {
+ /* Copy Normal Character */
+@@ -260,7 +276,9 @@ unsigned int CmdArgs_Narg (char *CmdLine_, unsigned int _CmdLine_high)
+
+ ArgNo = 0;
+ while (CmdArgs_GetArg ((char *) CmdLine, _CmdLine_high, ArgNo, (char *) &a.array[0], 1000))
+- ArgNo += 1;
++ {
++ ArgNo += 1;
++ }
+ /*
+ IF ArgNo>0
+ THEN
+--- a/src/gcc/gm2/mc-boot/GDebug.c
++++ b/src/gcc/gm2/mc-boot/GDebug.c
+@@ -133,13 +133,16 @@ void Debug_DebugString (char *a_, unsigned int _a_high)
+ }
+ else if (a[n+1] == '\\')
+ {
++ /* avoid dangling else. */
+ StdIO_Write ('\\');
+ n += 1;
+ }
+ }
+ }
+ else
+- StdIO_Write (a[n]);
++ {
++ StdIO_Write (a[n]);
++ }
+ n += 1;
+ }
+ }
+--- a/src/gcc/gm2/mc-boot/GDynamicStrings.c
++++ b/src/gcc/gm2/mc-boot/GDynamicStrings.c
+@@ -693,7 +693,9 @@ static void DumpStringInfo (DynamicStrings_String s, unsigned int i)
+ static void doDSdbEnter (void)
+ {
+ if (CheckOn)
+- DynamicStrings_PushAllocation ();
++ {
++ DynamicStrings_PushAllocation ();
++ }
+ }
+
+
+@@ -704,7 +706,9 @@ static void doDSdbEnter (void)
+ static void doDSdbExit (DynamicStrings_String s)
+ {
+ if (CheckOn)
+- s = DynamicStrings_PopAllocationExemption (TRUE, s);
++ {
++ s = DynamicStrings_PopAllocationExemption (TRUE, s);
++ }
+ }
+
+
+@@ -748,9 +752,13 @@ static unsigned int Capture (DynamicStrings_String s)
+ static unsigned int Min (unsigned int a, unsigned int b)
+ {
+ if (a < b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -761,9 +769,13 @@ static unsigned int Min (unsigned int a, unsigned int b)
+ static unsigned int Max (unsigned int a, unsigned int b)
+ {
+ if (a > b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -792,9 +804,13 @@ static void writeCstring (void * a)
+ int i;
+
+ if (a == NULL)
+- writeString ((char *) "(null)", 6);
++ {
++ writeString ((char *) "(null)", 6);
++ }
+ else
+- i = libc_write (1, a, libc_strlen (a));
++ {
++ i = libc_write (1, a, libc_strlen (a));
++ }
+ }
+
+
+@@ -814,7 +830,7 @@ static void writeCard (unsigned int c)
+ }
+ else
+ {
+- ch = (char) (((unsigned int) ('0'))+c);
++ ch = ((char) ( ((unsigned int) ('0'))+c));
+ i = libc_write (1, &ch, (size_t) 1);
+ }
+ }
+@@ -836,12 +852,14 @@ static void writeLongcard (long unsigned int l)
+ }
+ else if (l < 10)
+ {
+- ch = (char) (((unsigned int) ('0'))+((unsigned int ) (l)));
++ /* avoid dangling else. */
++ ch = ((char) ( ((unsigned int) ('0'))+((unsigned int ) (l))));
+ i = libc_write (1, &ch, (size_t) 1);
+ }
+ else if (l < 16)
+ {
+- ch = (char) ((((unsigned int) ('a'))+((unsigned int ) (l)))-10);
++ /* avoid dangling else. */
++ ch = ((char) (( ((unsigned int) ('a'))+((unsigned int ) (l)))-10));
+ i = libc_write (1, &ch, (size_t) 1);
+ }
+ }
+@@ -906,7 +924,9 @@ static DynamicStrings_String AssignDebug (DynamicStrings_String s, char *file_,
+ static unsigned int IsOn (DynamicStrings_String list, DynamicStrings_String s)
+ {
+ while ((list != s) && (list != NULL))
+- list = list->debug.next;
++ {
++ list = list->debug.next;
++ }
+ return list == s;
+ }
+
+@@ -939,17 +959,25 @@ static void SubFrom (DynamicStrings_String *list, DynamicStrings_String s)
+ DynamicStrings_String p;
+
+ if ((*list) == s)
+- (*list) = s->debug.next;
++ {
++ (*list) = s->debug.next;
++ }
+ else
+ {
+ p = (*list);
+ while ((p->debug.next != NULL) && (p->debug.next != s))
+- p = p->debug.next;
++ {
++ p = p->debug.next;
++ }
+ if (p->debug.next == s)
+- p->debug.next = s->debug.next;
++ {
++ p->debug.next = s->debug.next;
++ }
+ else
+- /* not found, quit */
+- return;
++ {
++ /* not found, quit */
++ return;
++ }
+ }
+ s->debug.next = NULL;
+ }
+@@ -989,9 +1017,13 @@ static unsigned int IsOnAllocated (DynamicStrings_String s)
+ f = frameHead;
+ do {
+ if (IsOn (f->alloc, s))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ else
+- f = f->next;
++ {
++ f = f->next;
++ }
+ } while (! (f == NULL));
+ return FALSE;
+ }
+@@ -1009,9 +1041,13 @@ static unsigned int IsOnDeallocated (DynamicStrings_String s)
+ f = frameHead;
+ do {
+ if (IsOn (f->dealloc, s))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ else
+- f = f->next;
++ {
++ f = f->next;
++ }
+ } while (! (f == NULL));
+ return FALSE;
+ }
+@@ -1034,7 +1070,9 @@ static void SubAllocated (DynamicStrings_String s)
+ return;
+ }
+ else
+- f = f->next;
++ {
++ f = f->next;
++ }
+ } while (! (f == NULL));
+ }
+
+@@ -1056,7 +1094,9 @@ static void SubDeallocated (DynamicStrings_String s)
+ return;
+ }
+ else
+- f = f->next;
++ {
++ f = f->next;
++ }
+ } while (! (f == NULL));
+ }
+
+@@ -1079,8 +1119,10 @@ static void SubDebugInfo (DynamicStrings_String s)
+ AddDeallocated (s);
+ }
+ else
+- /* string has not been allocated */
+- Assertion_Assert (! DebugOn);
++ {
++ /* string has not been allocated */
++ Assertion_Assert (! DebugOn);
++ }
+ }
+
+
+@@ -1095,7 +1137,9 @@ static void AddDebugInfo (DynamicStrings_String s)
+ s->debug.line = 0;
+ s->debug.proc = NULL;
+ if (CheckOn)
+- AddAllocated (s);
++ {
++ AddAllocated (s);
++ }
+ }
+
+
+@@ -1131,7 +1175,9 @@ static void ConcatContents (Contents *c, char *a_, unsigned int _a_high, unsigne
+ (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 701, (char *) "ConcatContents", 14);
+ }
+ else
+- (*c).len = i;
++ {
++ (*c).len = i;
++ }
+ }
+
+
+@@ -1144,7 +1190,9 @@ static void DeallocateCharStar (DynamicStrings_String s)
+ if ((s != NULL) && (s->head != NULL))
+ {
+ if (s->head->charStarUsed && (s->head->charStar != NULL))
+- Storage_DEALLOCATE (&s->head->charStar, s->head->charStarSize);
++ {
++ Storage_DEALLOCATE (&s->head->charStar, s->head->charStarSize);
++ }
+ s->head->charStarUsed = FALSE;
+ s->head->charStar = NULL;
+ s->head->charStarSize = 0;
+@@ -1160,7 +1208,9 @@ static void DeallocateCharStar (DynamicStrings_String s)
+ static DynamicStrings_String CheckPoisoned (DynamicStrings_String s)
+ {
+ if (((PoisonOn && (s != NULL)) && (s->head != NULL)) && (s->head->state == poisoned))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ return s;
+ }
+
+@@ -1172,9 +1222,13 @@ static DynamicStrings_String CheckPoisoned (DynamicStrings_String s)
+ static void MarkInvalid (DynamicStrings_String s)
+ {
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (s->head != NULL)
+- s->head->charStarValid = FALSE;
++ {
++ s->head->charStarValid = FALSE;
++ }
+ }
+
+
+@@ -1210,7 +1264,9 @@ static void ConcatContentsAddress (Contents *c, void * a, unsigned int h)
+ ConcatContentsAddress (&(*c).next->contents, (void *) p, h-j);
+ AddDebugInfo ((*c).next);
+ if (TraceOn)
+- (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 896, (char *) "ConcatContentsAddress", 21);
++ {
++ (*c).next = AssignDebug ((*c).next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 896, (char *) "ConcatContentsAddress", 21);
++ }
+ }
+ else
+ {
+@@ -1245,11 +1301,15 @@ static DynamicStrings_String AddToGarbage (DynamicStrings_String a, DynamicStrin
+ {
+ c = a;
+ while (c->head->garbage != NULL)
+- c = c->head->garbage;
++ {
++ c = c->head->garbage;
++ }
+ c->head->garbage = b;
+ b->head->state = onlist;
+ if (CheckOn)
+- SubDebugInfo (b);
++ {
++ SubDebugInfo (b);
++ }
+ }
+ return a;
+ }
+@@ -1262,11 +1322,19 @@ static DynamicStrings_String AddToGarbage (DynamicStrings_String a, DynamicStrin
+ static unsigned int IsOnGarbage (DynamicStrings_String e, DynamicStrings_String s)
+ {
+ if ((e != NULL) && (s != NULL))
+- while (e->head->garbage != NULL)
+- if (e->head->garbage == s)
+- return TRUE;
+- else
+- e = e->head->garbage;
++ {
++ while (e->head->garbage != NULL)
++ {
++ if (e->head->garbage == s)
++ {
++ return TRUE;
++ }
++ else
++ {
++ e = e->head->garbage;
++ }
++ }
++ }
+ return FALSE;
+ }
+
+@@ -1331,11 +1399,19 @@ static void DumpStringSynopsis (DynamicStrings_String s)
+ writeString ((char *) " ", 1);
+ DumpState (s);
+ if (IsOnAllocated (s))
+- writeString ((char *) " globally allocated", 19);
++ {
++ writeString ((char *) " globally allocated", 19);
++ }
+ else if (IsOnDeallocated (s))
+- writeString ((char *) " globally deallocated", 21);
++ {
++ /* avoid dangling else. */
++ writeString ((char *) " globally deallocated", 21);
++ }
+ else
+- writeString ((char *) " globally unknown", 17);
++ {
++ /* avoid dangling else. */
++ writeString ((char *) " globally unknown", 17);
++ }
+ writeLn ();
+ }
+
+@@ -1407,7 +1483,9 @@ DynamicStrings_String DynamicStrings_InitString (char *a_, unsigned int _a_high)
+ s->head->state = inuse;
+ AddDebugInfo (s);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 737, (char *) "InitString", 10);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 737, (char *) "InitString", 10);
++ }
+ return s;
+ }
+
+@@ -1422,23 +1500,32 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s)
+ DynamicStrings_String t;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (s != NULL)
+ {
+ if (CheckOn)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (IsOnAllocated (s))
+- SubAllocated (s);
++ {
++ SubAllocated (s);
++ }
+ else if (IsOnDeallocated (s))
+- SubDeallocated (s);
++ {
++ /* avoid dangling else. */
++ SubDeallocated (s);
++ }
+ }
+ if (s->head != NULL)
+ {
+ s->head->state = poisoned;
+ s->head->garbage = DynamicStrings_KillString (s->head->garbage);
+ if (! PoisonOn)
+- DeallocateCharStar (s);
++ {
++ DeallocateCharStar (s);
++ }
+ if (! PoisonOn)
+ {
+ Storage_DEALLOCATE ((void **) &s->head, sizeof (descriptor));
+@@ -1447,7 +1534,9 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s)
+ }
+ t = DynamicStrings_KillString (s->contents.next);
+ if (! PoisonOn)
+- Storage_DEALLOCATE ((void **) &s, sizeof (stringRecord));
++ {
++ Storage_DEALLOCATE ((void **) &s, sizeof (stringRecord));
++ }
+ }
+ return NULL;
+ }
+@@ -1462,7 +1551,9 @@ DynamicStrings_String DynamicStrings_KillString (DynamicStrings_String s)
+ void DynamicStrings_Fin (DynamicStrings_String s)
+ {
+ if ((DynamicStrings_KillString (s)) != NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -1478,7 +1569,9 @@ DynamicStrings_String DynamicStrings_InitStringCharStar (void * a)
+ s->contents.len = 0;
+ s->contents.next = NULL;
+ if (a != NULL)
+- ConcatContentsAddress (&s->contents, a, (unsigned int) libc_strlen (a));
++ {
++ ConcatContentsAddress (&s->contents, a, (unsigned int) libc_strlen (a));
++ }
+ Storage_ALLOCATE ((void **) &s->head, sizeof (descriptor));
+ s->head->charStarUsed = FALSE;
+ s->head->charStar = NULL;
+@@ -1488,7 +1581,9 @@ DynamicStrings_String DynamicStrings_InitStringCharStar (void * a)
+ s->head->state = inuse;
+ AddDebugInfo (s);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 936, (char *) "InitStringCharStar", 18);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 936, (char *) "InitStringCharStar", 18);
++ }
+ return s;
+ }
+
+@@ -1509,7 +1604,9 @@ DynamicStrings_String DynamicStrings_InitStringChar (char ch)
+ a.array[1] = ASCII_nul;
+ s = DynamicStrings_InitString ((char *) &a.array[0], 1);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 956, (char *) "InitStringChar", 14);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 956, (char *) "InitStringChar", 14);
++ }
+ return s;
+ }
+
+@@ -1521,9 +1618,13 @@ DynamicStrings_String DynamicStrings_InitStringChar (char ch)
+ DynamicStrings_String DynamicStrings_Mark (DynamicStrings_String s)
+ {
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if ((s != NULL) && (s->head->state == inuse))
+- s->head->state = marked;
++ {
++ s->head->state = marked;
++ }
+ return s;
+ }
+
+@@ -1535,9 +1636,13 @@ DynamicStrings_String DynamicStrings_Mark (DynamicStrings_String s)
+ unsigned int DynamicStrings_Length (DynamicStrings_String s)
+ {
+ if (s == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- return s->contents.len+(DynamicStrings_Length (s->contents.next));
++ {
++ return s->contents.len+(DynamicStrings_Length (s->contents.next));
++ }
+ }
+
+
+@@ -1555,22 +1660,29 @@ DynamicStrings_String DynamicStrings_ConCat (DynamicStrings_String a, DynamicStr
+ b = CheckPoisoned (b);
+ }
+ if (a == b)
+- return DynamicStrings_ConCat (a, DynamicStrings_Mark (DynamicStrings_Dup (b)));
++ {
++ return DynamicStrings_ConCat (a, DynamicStrings_Mark (DynamicStrings_Dup (b)));
++ }
+ else if (a != NULL)
+ {
++ /* avoid dangling else. */
+ a = AddToGarbage (a, b);
+ MarkInvalid (a);
+ t = a;
+ while (b != NULL)
+ {
+ while ((t->contents.len == MaxBuf) && (t->contents.next != NULL))
+- t = t->contents.next;
++ {
++ t = t->contents.next;
++ }
+ ConcatContents (&t->contents, (char *) &b->contents.buf.array[0], (MaxBuf-1), b->contents.len, 0);
+ b = b->contents.next;
+ }
+ }
+ if ((a == NULL) && (b != NULL))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ return a;
+ }
+
+@@ -1588,13 +1700,17 @@ DynamicStrings_String DynamicStrings_ConCatChar (DynamicStrings_String a, char c
+ DynamicStrings_String t;
+
+ if (PoisonOn)
+- a = CheckPoisoned (a);
++ {
++ a = CheckPoisoned (a);
++ }
+ b.array[0] = ch;
+ b.array[1] = ASCII_nul;
+ t = a;
+ MarkInvalid (a);
+ while ((t->contents.len == MaxBuf) && (t->contents.next != NULL))
+- t = t->contents.next;
++ {
++ t = t->contents.next;
++ }
+ ConcatContents (&t->contents, (char *) &b.array[0], 1, 1, 0);
+ return a;
+ }
+@@ -1628,10 +1744,14 @@ DynamicStrings_String DynamicStrings_Assign (DynamicStrings_String a, DynamicStr
+ DynamicStrings_String DynamicStrings_Dup (DynamicStrings_String s)
+ {
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ s = DynamicStrings_Assign (DynamicStrings_InitString ((char *) "", 0), s);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1152, (char *) "Dup", 3);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1152, (char *) "Dup", 3);
++ }
+ return s;
+ }
+
+@@ -1649,7 +1769,9 @@ DynamicStrings_String DynamicStrings_Add (DynamicStrings_String a, DynamicString
+ }
+ a = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "", 0), a), b);
+ if (TraceOn)
+- a = AssignDebug (a, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1172, (char *) "Add", 3);
++ {
++ a = AssignDebug (a, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1172, (char *) "Add", 3);
++ }
+ return a;
+ }
+
+@@ -1676,11 +1798,17 @@ unsigned int DynamicStrings_Equal (DynamicStrings_String a, DynamicStrings_Strin
+ while (i < a->contents.len)
+ {
+ if (a->contents.buf.array[i] != a->contents.buf.array[i])
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ if (b->contents.buf.array[i] != b->contents.buf.array[i])
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ if (a->contents.buf.array[i] != b->contents.buf.array[i])
+- return FALSE;
++ {
++ return FALSE;
++ }
+ i += 1;
+ }
+ a = a->contents.next;
+@@ -1689,7 +1817,9 @@ unsigned int DynamicStrings_Equal (DynamicStrings_String a, DynamicStrings_Strin
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -1703,10 +1833,14 @@ unsigned int DynamicStrings_EqualCharStar (DynamicStrings_String s, void * a)
+ DynamicStrings_String t;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ t = DynamicStrings_InitStringCharStar (a);
+ if (TraceOn)
+- t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1237, (char *) "EqualCharStar", 13);
++ {
++ t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1237, (char *) "EqualCharStar", 13);
++ }
+ t = AddToGarbage (t, s);
+ if (DynamicStrings_Equal (t, s))
+ {
+@@ -1735,10 +1869,14 @@ unsigned int DynamicStrings_EqualArray (DynamicStrings_String s, char *a_, unsig
+ memcpy (a, a_, _a_high+1);
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ t = DynamicStrings_InitString ((char *) a, _a_high);
+ if (TraceOn)
+- t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1267, (char *) "EqualArray", 10);
++ {
++ t = AssignDebug (t, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1267, (char *) "EqualArray", 10);
++ }
+ t = AddToGarbage (t, s);
+ if (DynamicStrings_Equal (t, s))
+ {
+@@ -1760,13 +1898,21 @@ unsigned int DynamicStrings_EqualArray (DynamicStrings_String s, char *a_, unsig
+ DynamicStrings_String DynamicStrings_Mult (DynamicStrings_String s, unsigned int n)
+ {
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (n <= 0)
+- s = AddToGarbage (DynamicStrings_InitString ((char *) "", 0), s);
++ {
++ s = AddToGarbage (DynamicStrings_InitString ((char *) "", 0), s);
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_Mult (s, n-1), s);
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_Mult (s, n-1), s);
++ }
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1299, (char *) "Mult", 4);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1299, (char *) "Mult", 4);
++ }
+ return s;
+ }
+
+@@ -1792,54 +1938,76 @@ DynamicStrings_String DynamicStrings_Slice (DynamicStrings_String s, int low, in
+ int o;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (low < 0)
+- low = ((int ) (DynamicStrings_Length (s)))+low;
++ {
++ low = ((int ) (DynamicStrings_Length (s)))+low;
++ }
+ if (high <= 0)
+- high = ((int ) (DynamicStrings_Length (s)))+high;
++ {
++ high = ((int ) (DynamicStrings_Length (s)))+high;
++ }
+ else
+- /* make sure high is <= Length (s) */
+- high = Min (DynamicStrings_Length (s), (unsigned int) high);
++ {
++ /* make sure high is <= Length (s) */
++ high = Min (DynamicStrings_Length (s), (unsigned int) high);
++ }
+ d = DynamicStrings_InitString ((char *) "", 0);
+ d = AddToGarbage (d, s);
+ o = 0;
+ t = d;
+ while (s != NULL)
+- if (low < (o+((int ) (s->contents.len))))
+- if (o > high)
+- s = NULL;
+- else
++ {
++ if (low < (o+((int ) (s->contents.len))))
+ {
+- /* found sliceable unit */
+- if (low < o)
+- start = 0;
++ if (o > high)
++ {
++ s = NULL;
++ }
+ else
+- start = low-o;
+- end = Max (Min (MaxBuf, (unsigned int) high-o), 0);
+- while (t->contents.len == MaxBuf)
+ {
+- if (t->contents.next == NULL)
++ /* found sliceable unit */
++ if (low < o)
+ {
+- Storage_ALLOCATE ((void **) &t->contents.next, sizeof (stringRecord));
+- t->contents.next->head = NULL;
+- t->contents.next->contents.len = 0;
+- AddDebugInfo (t->contents.next);
+- if (TraceOn)
+- t->contents.next = AssignDebug (t->contents.next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1367, (char *) "Slice", 5);
++ start = 0;
+ }
+- t = t->contents.next;
++ else
++ {
++ start = low-o;
++ }
++ end = Max (Min (MaxBuf, (unsigned int) high-o), 0);
++ while (t->contents.len == MaxBuf)
++ {
++ if (t->contents.next == NULL)
++ {
++ Storage_ALLOCATE ((void **) &t->contents.next, sizeof (stringRecord));
++ t->contents.next->head = NULL;
++ t->contents.next->contents.len = 0;
++ AddDebugInfo (t->contents.next);
++ if (TraceOn)
++ {
++ t->contents.next = AssignDebug (t->contents.next, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1367, (char *) "Slice", 5);
++ }
++ }
++ t = t->contents.next;
++ }
++ ConcatContentsAddress (&t->contents, &s->contents.buf.array[start], (unsigned int) end-start);
++ o += s->contents.len;
++ s = s->contents.next;
+ }
+- ConcatContentsAddress (&t->contents, &s->contents.buf.array[start], (unsigned int) end-start);
++ }
++ else
++ {
+ o += s->contents.len;
+ s = s->contents.next;
+ }
+- else
+- {
+- o += s->contents.len;
+- s = s->contents.next;
+- }
++ }
+ if (TraceOn)
+- d = AssignDebug (d, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1384, (char *) "Slice", 5);
++ {
++ d = AssignDebug (d, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1384, (char *) "Slice", 5);
++ }
+ return d;
+ }
+
+@@ -1856,19 +2024,25 @@ int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned int o)
+ unsigned int k;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ k = 0;
+ while (s != NULL)
+ {
+ if ((k+s->contents.len) < o)
+- k += s->contents.len;
++ {
++ k += s->contents.len;
++ }
+ else
+ {
+ i = o-k;
+ while (i < s->contents.len)
+ {
+ if (s->contents.buf.array[i] == ch)
+- return k+i;
++ {
++ return k+i;
++ }
+ i += 1;
+ }
+ k += i;
+@@ -1893,23 +2067,33 @@ int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned int o)
+ int j;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ j = -1;
+ k = 0;
+ while (s != NULL)
+ {
+ if ((k+s->contents.len) < o)
+- k += s->contents.len;
++ {
++ k += s->contents.len;
++ }
+ else
+ {
+ if (o < k)
+- i = 0;
++ {
++ i = 0;
++ }
+ else
+- i = o-k;
++ {
++ i = o-k;
++ }
+ while (i < s->contents.len)
+ {
+ if (s->contents.buf.array[i] == ch)
+- j = k;
++ {
++ j = k;
++ }
+ k += 1;
+ i += 1;
+ }
+@@ -1934,11 +2118,18 @@ DynamicStrings_String DynamicStrings_RemoveComment (DynamicStrings_String s, cha
+
+ i = DynamicStrings_Index (s, comment, 0);
+ if (i == 0)
+- s = DynamicStrings_InitString ((char *) "", 0);
++ {
++ s = DynamicStrings_InitString ((char *) "", 0);
++ }
+ else if (i > 0)
+- s = DynamicStrings_RemoveWhitePostfix (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i));
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_RemoveWhitePostfix (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i));
++ }
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1496, (char *) "RemoveComment", 13);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1496, (char *) "RemoveComment", 13);
++ }
+ return s;
+ }
+
+@@ -1954,10 +2145,14 @@ DynamicStrings_String DynamicStrings_RemoveWhitePrefix (DynamicStrings_String s)
+
+ i = 0;
+ while (IsWhite (DynamicStrings_char (s, (int) i)))
+- i += 1;
++ {
++ i += 1;
++ }
+ s = DynamicStrings_Slice (s, (int ) (i), 0);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1608, (char *) "RemoveWhitePrefix", 17);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1608, (char *) "RemoveWhitePrefix", 17);
++ }
+ return s;
+ }
+
+@@ -1973,10 +2168,14 @@ DynamicStrings_String DynamicStrings_RemoveWhitePostfix (DynamicStrings_String s
+
+ i = ((int ) (DynamicStrings_Length (s)))-1;
+ while ((i >= 0) && (IsWhite (DynamicStrings_char (s, i))))
+- i -= 1;
++ {
++ i -= 1;
++ }
+ s = DynamicStrings_Slice (s, 0, i+1);
+ if (TraceOn)
+- s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1630, (char *) "RemoveWhitePostfix", 18);
++ {
++ s = AssignDebug (s, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/DynamicStrings.mod", 55, 1630, (char *) "RemoveWhitePostfix", 18);
++ }
+ return s;
+ }
+
+@@ -2004,7 +2203,9 @@ DynamicStrings_String DynamicStrings_ToUpper (DynamicStrings_String s)
+ {
+ ch = t->contents.buf.array[i];
+ if ((ch >= 'a') && (ch <= 'z'))
+- t->contents.buf.array[i] = (char) ((((unsigned int) (ch))-((unsigned int) ('a')))+((unsigned int) ('A')));
++ {
++ t->contents.buf.array[i] = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('a')))+ ((unsigned int) ('A'))));
++ }
+ i += 1;
+ }
+ t = t->contents.next;
+@@ -2037,7 +2238,9 @@ DynamicStrings_String DynamicStrings_ToLower (DynamicStrings_String s)
+ {
+ ch = t->contents.buf.array[i];
+ if ((ch >= 'A') && (ch <= 'Z'))
+- t->contents.buf.array[i] = (char) ((((unsigned int) (ch))-((unsigned int) ('A')))+((unsigned int) ('a')));
++ {
++ t->contents.buf.array[i] = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('A')))+ ((unsigned int) ('a'))));
++ }
+ i += 1;
+ }
+ t = t->contents.next;
+@@ -2056,15 +2259,17 @@ void DynamicStrings_CopyOut (char *a, unsigned int _a_high, DynamicStrings_Strin
+ unsigned int i;
+ unsigned int l;
+
+- l = Min ((_a_high)+1, DynamicStrings_Length (s));
++ l = Min (_a_high+1, DynamicStrings_Length (s));
+ i = 0;
+ while (i < l)
+ {
+ a[i] = DynamicStrings_char (s, (int) i);
+ i += 1;
+ }
+- if (i <= (_a_high))
+- a[i] = ASCII_nul;
++ if (i <= _a_high)
++ {
++ a[i] = ASCII_nul;
++ }
+ }
+
+
+@@ -2077,20 +2282,30 @@ char DynamicStrings_char (DynamicStrings_String s, int i)
+ unsigned int c;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (i < 0)
+- c = (unsigned int ) (((int ) (DynamicStrings_Length (s)))+i);
++ {
++ c = (unsigned int ) (((int ) (DynamicStrings_Length (s)))+i);
++ }
+ else
+- c = i;
++ {
++ c = i;
++ }
+ while ((s != NULL) && (c >= s->contents.len))
+ {
+ c -= s->contents.len;
+ s = s->contents.next;
+ }
+ if ((s == NULL) || (c >= s->contents.len))
+- return ASCII_nul;
++ {
++ return ASCII_nul;
++ }
+ else
+- return s->contents.buf.array[c];
++ {
++ return s->contents.buf.array[c];
++ }
+ }
+
+
+@@ -2106,9 +2321,13 @@ void * DynamicStrings_string (DynamicStrings_String s)
+ char * p;
+
+ if (PoisonOn)
+- s = CheckPoisoned (s);
++ {
++ s = CheckPoisoned (s);
++ }
+ if (s == NULL)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+ {
+ if (! s->head->charStarValid)
+@@ -2291,7 +2510,9 @@ DynamicStrings_String DynamicStrings_PopAllocationExemption (unsigned int halt,
+
+ Init ();
+ if (frameHead == NULL)
+- writeString ((char *) "mismatched number of PopAllocation's compared to PushAllocation's", 65);
++ {
++ writeString ((char *) "mismatched number of PopAllocation's compared to PushAllocation's", 65);
++ }
+ else
+ {
+ if (frameHead->alloc != NULL)
+@@ -2313,7 +2534,9 @@ DynamicStrings_String DynamicStrings_PopAllocationExemption (unsigned int halt,
+ s = s->debug.next;
+ }
+ if (b && halt)
+- libc_exit (1);
++ {
++ libc_exit (1);
++ }
+ }
+ frameHead = frameHead->next;
+ }
+--- a/src/gcc/gm2/mc-boot/GEnvironment.c
++++ b/src/gcc/gm2/mc-boot/GEnvironment.c
+@@ -65,7 +65,9 @@ unsigned int Environment_GetEnvironment (char *Env_, unsigned int _Env_high, cha
+ i += 1;
+ }
+ if (i < High)
+- a[i] = ASCII_nul;
++ {
++ a[i] = ASCII_nul;
++ }
+ return Addr != NULL;
+ }
+
+--- a/src/gcc/gm2/mc-boot/GFIO.c
++++ b/src/gcc/gm2/mc-boot/GFIO.c
+@@ -479,9 +479,13 @@ static void Init (void);
+ static unsigned int Max (unsigned int a, unsigned int b)
+ {
+ if (a > b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -492,9 +496,13 @@ static unsigned int Max (unsigned int a, unsigned int b)
+ static unsigned int Min (unsigned int a, unsigned int b)
+ {
+ if (a < b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -517,7 +525,9 @@ static FIO_File GetNextFreeDescriptor (void)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd == NULL)
+- return f;
++ {
++ return f;
++ }
+ }
+ f += 1;
+ if (f > h)
+@@ -591,7 +601,9 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength,
+ fd->buffer->position = 0;
+ fd->buffer->filled = 0;
+ if (fd->buffer->size == 0)
+- fd->buffer->address = NULL;
++ {
++ fd->buffer->address = NULL;
++ }
+ else
+ {
+ Storage_ALLOCATE (&fd->buffer->address, fd->buffer->size);
+@@ -602,9 +614,13 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength,
+ }
+ }
+ if (towrite)
+- fd->buffer->left = fd->buffer->size;
++ {
++ fd->buffer->left = fd->buffer->size;
++ }
+ else
+- fd->buffer->left = 0;
++ {
++ fd->buffer->left = 0;
++ }
+ fd->buffer->contents = fd->buffer->address; /* provides easy access for reading characters */
+ fd->state = fstate; /* provides easy access for reading characters */
+ }
+@@ -627,14 +643,24 @@ static void ConnectToUnix (FIO_File f, unsigned int towrite, unsigned int newfil
+ if (fd != NULL)
+ {
+ if (towrite)
+- if (newfile)
+- fd->unixfd = libc_creat (fd->name.address, CreatePermissions);
+- else
+- fd->unixfd = libc_open (fd->name.address, UNIXWRITEONLY, 0);
++ {
++ if (newfile)
++ {
++ fd->unixfd = libc_creat (fd->name.address, CreatePermissions);
++ }
++ else
++ {
++ fd->unixfd = libc_open (fd->name.address, UNIXWRITEONLY, 0);
++ }
++ }
+ else
+- fd->unixfd = libc_open (fd->name.address, UNIXREADONLY, 0);
++ {
++ fd->unixfd = libc_open (fd->name.address, UNIXREADONLY, 0);
++ }
+ if (fd->unixfd < 0)
+- fd->state = connectionfailure;
++ {
++ fd->state = connectionfailure;
++ }
+ }
+ }
+ }
+@@ -665,38 +691,40 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f); /* how many bytes have we read */
+ /* extract from the buffer first */
+ if ((fd->buffer != NULL) && fd->buffer->valid)
+- if (fd->buffer->left > 0)
+- {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if (nBytes == 1)
+- {
+- /* too expensive to call memcpy for 1 character */
+- p = a;
+- (*p) = (*fd->buffer->contents).array[fd->buffer->position];
+- fd->buffer->left -= 1; /* remove consumed bytes */
+- fd->buffer->position += 1; /* move onwards n bytes */
+- nBytes = 0; /* reduce the amount for future direct */
+- /* read */
+- return 1;
+- }
+- else
+- {
+- n = Min (fd->buffer->left, nBytes);
+- t = fd->buffer->address;
+- t += fd->buffer->position;
+- p = libc_memcpy (a, t, (size_t) n);
+- fd->buffer->left -= n; /* remove consumed bytes */
+- fd->buffer->position += n; /* move onwards n bytes */
+- /* move onwards ready for direct reads */
+- a += n;
+- nBytes -= n; /* reduce the amount for future direct */
+- /* read */
+- total += n;
+- return total; /* much cleaner to return now, */
+- }
+- /* difficult to record an error if */
+- }
+- /* the read below returns -1 */
++ {
++ if (fd->buffer->left > 0)
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if (nBytes == 1)
++ {
++ /* too expensive to call memcpy for 1 character */
++ p = a;
++ (*p) = (*fd->buffer->contents).array[fd->buffer->position];
++ fd->buffer->left -= 1; /* remove consumed bytes */
++ fd->buffer->position += 1; /* move onwards n bytes */
++ nBytes = 0; /* reduce the amount for future direct */
++ /* read */
++ return 1;
++ }
++ else
++ {
++ n = Min (fd->buffer->left, nBytes);
++ t = fd->buffer->address;
++ t += fd->buffer->position;
++ p = libc_memcpy (a, t, (size_t) n);
++ fd->buffer->left -= n; /* remove consumed bytes */
++ fd->buffer->position += n; /* move onwards n bytes */
++ /* move onwards ready for direct reads */
++ a += n;
++ nBytes -= n; /* reduce the amount for future direct */
++ /* read */
++ total += n;
++ return total; /* much cleaner to return now, */
++ }
++ /* difficult to record an error if */
++ }
++ /* the read below returns -1 */
++ }
+ if (nBytes > 0)
+ {
+ /* still more to read */
+@@ -708,15 +736,21 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
+ fd->abspos += result;
+ /* now disable the buffer as we read directly into, a. */
+ if (fd->buffer != NULL)
+- fd->buffer->valid = FALSE;
++ {
++ fd->buffer->valid = FALSE;
++ }
+ }
+ else
+ {
+ if (result == 0)
+- /* eof reached */
+- fd->state = endoffile;
++ {
++ /* eof reached */
++ fd->state = endoffile;
++ }
+ else
+- fd->state = failed;
++ {
++ fd->state = failed;
++ }
+ /* indicate buffer is empty */
+ if (fd->buffer != NULL)
+ {
+@@ -724,7 +758,9 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
+ fd->buffer->left = 0;
+ fd->buffer->position = 0;
+ if (fd->buffer->address != NULL)
+- (*fd->buffer->contents).array[fd->buffer->position] = ASCII_nul;
++ {
++ (*fd->buffer->contents).array[fd->buffer->position] = ASCII_nul;
++ }
+ }
+ return -1;
+ }
+@@ -732,7 +768,9 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
+ return total;
+ }
+ else
+- return -1;
++ {
++ return -1;
++ }
+ }
+
+
+@@ -759,72 +797,82 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a)
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ total = 0; /* how many bytes have we read */
+ if (fd != NULL) /* how many bytes have we read */
+- /* extract from the buffer first */
+- if (fd->buffer != NULL)
+- {
+- while (nBytes > 0)
+- if ((fd->buffer->left > 0) && fd->buffer->valid)
+- if (nBytes == 1)
+- {
+- /* too expensive to call memcpy for 1 character */
+- p = a;
+- (*p) = (*fd->buffer->contents).array[fd->buffer->position];
+- fd->buffer->left -= 1; /* remove consumed byte */
+- fd->buffer->position += 1; /* move onwards n byte */
+- total += 1; /* move onwards n byte */
+- return total;
+- }
+- else
+- {
+- n = Min (fd->buffer->left, nBytes);
+- t = fd->buffer->address;
+- t += fd->buffer->position;
+- p = libc_memcpy (a, t, (size_t) n);
+- fd->buffer->left -= n; /* remove consumed bytes */
+- fd->buffer->position += n; /* move onwards n bytes */
+- /* move onwards ready for direct reads */
+- a += n;
+- nBytes -= n; /* reduce the amount for future direct */
+- /* read */
+- total += n;
+- }
+- else
++ {
++ /* extract from the buffer first */
++ if (fd->buffer != NULL)
++ {
++ while (nBytes > 0)
+ {
+- /* refill buffer */
+- n = libc_read (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->size);
+- if (n >= 0)
++ if ((fd->buffer->left > 0) && fd->buffer->valid)
+ {
+- /* avoid dangling else. */
+- fd->buffer->valid = TRUE;
+- fd->buffer->position = 0;
+- fd->buffer->left = n;
+- fd->buffer->filled = n;
+- fd->buffer->bufstart = fd->abspos;
+- fd->abspos += n;
+- if (n == 0)
++ if (nBytes == 1)
+ {
+- /* eof reached */
+- fd->state = endoffile;
+- return -1;
++ /* too expensive to call memcpy for 1 character */
++ p = a;
++ (*p) = (*fd->buffer->contents).array[fd->buffer->position];
++ fd->buffer->left -= 1; /* remove consumed byte */
++ fd->buffer->position += 1; /* move onwards n byte */
++ total += 1; /* move onwards n byte */
++ return total;
++ }
++ else
++ {
++ n = Min (fd->buffer->left, nBytes);
++ t = fd->buffer->address;
++ t += fd->buffer->position;
++ p = libc_memcpy (a, t, (size_t) n);
++ fd->buffer->left -= n; /* remove consumed bytes */
++ fd->buffer->position += n; /* move onwards n bytes */
++ /* move onwards ready for direct reads */
++ a += n;
++ nBytes -= n; /* reduce the amount for future direct */
++ /* read */
++ total += n;
+ }
+ }
+ else
+ {
+- fd->buffer->valid = FALSE;
+- fd->buffer->position = 0;
+- fd->buffer->left = 0;
+- fd->buffer->filled = 0;
+- fd->state = failed;
+- return total;
++ /* refill buffer */
++ n = libc_read (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->size);
++ if (n >= 0)
++ {
++ /* avoid dangling else. */
++ fd->buffer->valid = TRUE;
++ fd->buffer->position = 0;
++ fd->buffer->left = n;
++ fd->buffer->filled = n;
++ fd->buffer->bufstart = fd->abspos;
++ fd->abspos += n;
++ if (n == 0)
++ {
++ /* eof reached */
++ fd->state = endoffile;
++ return -1;
++ }
++ }
++ else
++ {
++ fd->buffer->valid = FALSE;
++ fd->buffer->position = 0;
++ fd->buffer->left = 0;
++ fd->buffer->filled = 0;
++ fd->state = failed;
++ return total;
++ }
+ }
+ }
+- return total;
+- }
+- else
+- return -1;
++ return total;
++ }
++ else
++ {
++ return -1;
++ }
++ }
+ }
+ else
+- return -1;
++ {
++ return -1;
++ }
+ }
+
+
+@@ -852,6 +900,7 @@ static void HandleEscape (char *dest, unsigned int _dest_high, char *src_, unsig
+ }
+ else if (src[(*i)+1] == 't')
+ {
++ /* avoid dangling else. */
+ /* requires a tab (yuck) tempted to fake this but I better not.. */
+ dest[(*j)] = ASCII_tab;
+ (*j) += 1;
+@@ -859,6 +908,7 @@ static void HandleEscape (char *dest, unsigned int _dest_high, char *src_, unsig
+ }
+ else
+ {
++ /* avoid dangling else. */
+ /* copy escaped character */
+ (*i) += 1;
+ dest[(*j)] = src[(*i)];
+@@ -881,11 +931,17 @@ static void Cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns
+ /* make a local copy of each unbounded array. */
+ memcpy (b, b_, _b_high+1);
+
+- if ((_a_high) == (_b_high))
+- for (i=0; i<=_a_high; i++)
+- a[i] = b[i];
++ if (_a_high == _b_high)
++ {
++ for (i=0; i<=_a_high; i++)
++ {
++ a[i] = b[i];
++ }
++ }
+ else
+- FormatError ((char *) "cast failed", 11);
++ {
++ FormatError ((char *) "cast failed", 11);
++ }
+ }
+
+
+@@ -918,14 +974,18 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi
+ i = 0;
+ j = 0;
+ while ((((i < HighSrc) && (src[i] != ASCII_nul)) && (j < HighDest)) && (src[i] != '%'))
+- if (src[i] == '\\')
+- HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest);
+- else
+- {
+- dest[j] = src[i];
+- i += 1;
+- j += 1;
+- }
++ {
++ if (src[i] == '\\')
++ {
++ HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest);
++ }
++ else
++ {
++ dest[j] = src[i];
++ i += 1;
++ j += 1;
++ }
++ }
+ if ((((i+1) < HighSrc) && (src[i] == '%')) && (j < HighDest))
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+@@ -939,12 +999,15 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi
+ p += 1;
+ }
+ if (j < HighDest)
+- dest[j] = ASCII_nul;
++ {
++ dest[j] = ASCII_nul;
++ }
+ j = StrLib_StrLen ((char *) dest, _dest_high);
+ i += 2;
+ }
+ else if (src[i+1] == 'd')
+ {
++ /* avoid dangling else. */
+ dest[j] = ASCII_nul;
+ Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high);
+ NumberIO_CardToStr (c, 0, (char *) &str.array[0], MaxErrorString);
+@@ -954,6 +1017,7 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi
+ }
+ else
+ {
++ /* avoid dangling else. */
+ dest[j] = src[i];
+ i += 1;
+ j += 1;
+@@ -961,16 +1025,22 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, char *src_, unsi
+ }
+ /* and finish off copying src into dest */
+ while (((i < HighSrc) && (src[i] != ASCII_nul)) && (j < HighDest))
+- if (src[i] == '\\')
+- HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest);
+- else
+- {
+- dest[j] = src[i];
+- i += 1;
+- j += 1;
+- }
++ {
++ if (src[i] == '\\')
++ {
++ HandleEscape ((char *) dest, _dest_high, (char *) src, _src_high, &i, &j, HighSrc, HighDest);
++ }
++ else
++ {
++ dest[j] = src[i];
++ i += 1;
++ j += 1;
++ }
++ }
+ if (j < HighDest)
+- dest[j] = ASCII_nul;
++ {
++ dest[j] = ASCII_nul;
++ }
+ }
+
+
+@@ -1051,36 +1121,45 @@ static void CheckAccess (FIO_File f, FileUsage use, unsigned int towrite)
+ if (fd == NULL)
+ {
+ if (f != FIO_StdErr)
+- FormatError ((char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96);
++ {
++ FormatError ((char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96);
++ }
+ M2RTS_HALT (-1);
+ }
+ else
+- if ((use == openedforwrite) && (fd->usage == openedforread))
+- {
+- FormatError1 ((char *) "this file (%s) has been opened for reading but is now being written\\n", 69, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+- M2RTS_HALT (-1);
+- }
+- else if ((use == openedforread) && (fd->usage == openedforwrite))
+- {
+- FormatError1 ((char *) "this file (%s) has been opened for writing but is now being read\\n", 66, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+- M2RTS_HALT (-1);
+- }
+- else if (fd->state == connectionfailure)
+- {
+- FormatError1 ((char *) "this file (%s) was not successfully opened\\n", 44, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+- M2RTS_HALT (-1);
+- }
+- else if (towrite != fd->output)
+- if (fd->output)
++ {
++ if ((use == openedforwrite) && (fd->usage == openedforread))
+ {
+- FormatError1 ((char *) "this file (%s) was opened for writing but is now being read\\n", 61, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ FormatError1 ((char *) "this file (%s) has been opened for reading but is now being written\\n", 69, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+ M2RTS_HALT (-1);
+ }
+- else
++ else if ((use == openedforread) && (fd->usage == openedforwrite))
+ {
+- FormatError1 ((char *) "this file (%s) was opened for reading but is now being written\\n", 64, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ /* avoid dangling else. */
++ FormatError1 ((char *) "this file (%s) has been opened for writing but is now being read\\n", 66, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+ M2RTS_HALT (-1);
+ }
++ else if (fd->state == connectionfailure)
++ {
++ /* avoid dangling else. */
++ FormatError1 ((char *) "this file (%s) was not successfully opened\\n", 44, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ M2RTS_HALT (-1);
++ }
++ else if (towrite != fd->output)
++ {
++ /* avoid dangling else. */
++ if (fd->output)
++ {
++ FormatError1 ((char *) "this file (%s) was opened for writing but is now being read\\n", 61, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ M2RTS_HALT (-1);
++ }
++ else
++ {
++ FormatError1 ((char *) "this file (%s) was opened for reading but is now being written\\n", 64, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ M2RTS_HALT (-1);
++ }
++ }
++ }
+ }
+ else
+ {
+@@ -1103,9 +1182,13 @@ static void SetEndOfLine (FIO_File f, char ch)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (ch == ASCII_nl)
+- fd->state = endofline;
++ {
++ fd->state = endofline;
++ }
+ else
+- fd->state = successful;
++ {
++ fd->state = successful;
++ }
+ }
+ }
+
+@@ -1137,36 +1220,42 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a)
+ {
+ /* place into the buffer first */
+ while (nBytes > 0)
+- if (fd->buffer->left > 0)
+- if (nBytes == 1)
++ {
++ if (fd->buffer->left > 0)
+ {
+- /* too expensive to call memcpy for 1 character */
+- p = a;
+- (*fd->buffer->contents).array[fd->buffer->position] = (*p);
+- fd->buffer->left -= 1; /* reduce space */
+- fd->buffer->position += 1; /* move onwards n byte */
+- total += 1; /* move onwards n byte */
+- return total;
++ if (nBytes == 1)
++ {
++ /* too expensive to call memcpy for 1 character */
++ p = a;
++ (*fd->buffer->contents).array[fd->buffer->position] = (*p);
++ fd->buffer->left -= 1; /* reduce space */
++ fd->buffer->position += 1; /* move onwards n byte */
++ total += 1; /* move onwards n byte */
++ return total;
++ }
++ else
++ {
++ n = Min (fd->buffer->left, nBytes);
++ t = fd->buffer->address;
++ t += fd->buffer->position;
++ p = libc_memcpy (a, t, (size_t) (unsigned int ) (n));
++ fd->buffer->left -= n; /* remove consumed bytes */
++ fd->buffer->position += n; /* move onwards n bytes */
++ /* move ready for further writes */
++ a += n;
++ nBytes -= n; /* reduce the amount for future writes */
++ total += n; /* reduce the amount for future writes */
++ }
+ }
+ else
+ {
+- n = Min (fd->buffer->left, nBytes);
+- t = fd->buffer->address;
+- t += fd->buffer->position;
+- p = libc_memcpy (a, t, (size_t) (unsigned int ) (n));
+- fd->buffer->left -= n; /* remove consumed bytes */
+- fd->buffer->position += n; /* move onwards n bytes */
+- /* move ready for further writes */
+- a += n;
+- nBytes -= n; /* reduce the amount for future writes */
+- total += n; /* reduce the amount for future writes */
++ FIO_FlushBuffer (f);
++ if ((fd->state != successful) && (fd->state != endofline))
++ {
++ nBytes = 0;
++ }
+ }
+- else
+- {
+- FIO_FlushBuffer (f);
+- if ((fd->state != successful) && (fd->state != endofline))
+- nBytes = 0;
+- }
++ }
+ return total;
+ }
+ }
+@@ -1195,15 +1284,23 @@ static void PreInitialize (FIO_File f, char *fname_, unsigned int _fname_high, F
+ {
+ fe = Indexing_GetIndice (FileInfo, (unsigned int) FIO_StdErr);
+ if (fe == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- fd->unixfd = fe->unixfd; /* the error channel */
++ {
++ fd->unixfd = fe->unixfd; /* the error channel */
++ }
+ }
+ else
+- fd->unixfd = osfd;
++ {
++ fd->unixfd = osfd;
++ }
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -1223,7 +1320,9 @@ static void Init (void)
+ FIO_StdErr = 3;
+ PreInitialize (FIO_StdErr, (char *) "<stderr>", 8, (FileStatus) successful, (FileUsage) openedforwrite, TRUE, 2, MaxBufferLength);
+ if (! (M2RTS_InstallTerminationProcedure ((PROC ) {(PROC_t) FIO_FlushOutErr})))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -1236,7 +1335,9 @@ unsigned int FIO_IsNoError (FIO_File f)
+ FileDescriptor fd;
+
+ if (f == Error)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+@@ -1252,9 +1353,13 @@ unsigned int FIO_IsNoError (FIO_File f)
+ unsigned int FIO_IsActive (FIO_File f)
+ {
+ if (f == Error)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+- return (Indexing_GetIndice (FileInfo, (unsigned int) f)) != NULL;
++ {
++ return (Indexing_GetIndice (FileInfo, (unsigned int) f)) != NULL;
++ }
+ }
+
+ unsigned int FIO_Exists (char *fname_, unsigned int _fname_high)
+@@ -1321,17 +1426,23 @@ void FIO_Close (FIO_File f)
+ {
+ FIO_FlushBuffer (f);
+ if (fd->unixfd >= 0)
+- if ((libc_close (fd->unixfd)) != 0)
+- {
+- FormatError1 ((char *) "failed to close file (%s)\\n", 27, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
+- fd->state = failed; /* --fixme-- too late to notify user (unless we return a BOOLEAN) */
+- }
++ {
++ if ((libc_close (fd->unixfd)) != 0)
++ {
++ FormatError1 ((char *) "failed to close file (%s)\\n", 27, (unsigned char *) &fd->name.address, (sizeof (fd->name.address)-1));
++ fd->state = failed; /* --fixme-- too late to notify user (unless we return a BOOLEAN) */
++ }
++ }
+ if (fd->name.address != NULL)
+- Storage_DEALLOCATE (&fd->name.address, fd->name.size);
++ {
++ Storage_DEALLOCATE (&fd->name.address, fd->name.size);
++ }
+ if (fd->buffer != NULL)
+ {
+ if (fd->buffer->address != NULL)
+- Storage_DEALLOCATE (&fd->buffer->address, fd->buffer->size);
++ {
++ Storage_DEALLOCATE (&fd->buffer->address, fd->buffer->size);
++ }
+ Storage_DEALLOCATE ((void **) &fd->buffer, sizeof (buf));
+ fd->buffer = NULL;
+ }
+@@ -1377,7 +1488,9 @@ FIO_File FIO_openToRead (void * fname, unsigned int flength)
+
+ f = GetNextFreeDescriptor ();
+ if (f == Error)
+- SetState (f, (FileStatus) toomanyfilesopen);
++ {
++ SetState (f, (FileStatus) toomanyfilesopen);
++ }
+ else
+ {
+ f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforread, FALSE, MaxBufferLength);
+@@ -1400,7 +1513,9 @@ FIO_File FIO_openToWrite (void * fname, unsigned int flength)
+
+ f = GetNextFreeDescriptor ();
+ if (f == Error)
+- SetState (f, (FileStatus) toomanyfilesopen);
++ {
++ SetState (f, (FileStatus) toomanyfilesopen);
++ }
+ else
+ {
+ f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforwrite, TRUE, MaxBufferLength);
+@@ -1425,7 +1540,9 @@ FIO_File FIO_openForRandom (void * fname, unsigned int flength, unsigned int tow
+
+ f = GetNextFreeDescriptor ();
+ if (f == Error)
+- SetState (f, (FileStatus) toomanyfilesopen);
++ {
++ SetState (f, (FileStatus) toomanyfilesopen);
++ }
+ else
+ {
+ f = InitializeFile (f, fname, flength, (FileStatus) successful, (FileUsage) openedforrandom, towrite, MaxBufferLength);
+@@ -1447,17 +1564,23 @@ void FIO_FlushBuffer (FIO_File f)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- if (fd->output && (fd->buffer != NULL))
+- if ((fd->buffer->position == 0) || ((libc_write (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->position)) == ((int ) (fd->buffer->position))))
++ {
++ if (fd->output && (fd->buffer != NULL))
+ {
+- fd->abspos += fd->buffer->position;
+- fd->buffer->bufstart = fd->abspos;
+- fd->buffer->position = 0;
+- fd->buffer->filled = 0;
+- fd->buffer->left = fd->buffer->size;
++ if ((fd->buffer->position == 0) || ((libc_write (fd->unixfd, fd->buffer->address, (size_t) fd->buffer->position)) == ((int ) (fd->buffer->position))))
++ {
++ fd->abspos += fd->buffer->position;
++ fd->buffer->bufstart = fd->abspos;
++ fd->buffer->position = 0;
++ fd->buffer->filled = 0;
++ fd->buffer->left = fd->buffer->size;
++ }
++ else
++ {
++ fd->state = failed;
++ }
+ }
+- else
+- fd->state = failed;
++ }
+ }
+ }
+
+@@ -1478,18 +1601,22 @@ unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void * a)
+ {
+ CheckAccess (f, (FileUsage) openedforread, FALSE);
+ n = ReadFromBuffer (f, a, nBytes);
+- if (n < 0)
+- return 0;
++ if (n <= 0)
++ {
++ return 0;
++ }
+ else
+ {
+ p = a;
+- p += n;
++ p += n-1;
+ SetEndOfLine (f, (*p));
+ return n;
+ }
+ }
+ else
+- return 0;
++ {
++ return 0;
++ }
+ }
+
+
+@@ -1502,8 +1629,10 @@ unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void * a)
+ void FIO_ReadAny (FIO_File f, unsigned char *a, unsigned int _a_high)
+ {
+ CheckAccess (f, (FileUsage) openedforread, FALSE);
+- if ((BufferedRead (f, _a_high, a)) == (_a_high))
+- SetEndOfLine (f, (char) a[_a_high]);
++ if ((BufferedRead (f, _a_high, a)) == _a_high)
++ {
++ SetEndOfLine (f, (char) a[_a_high]);
++ }
+ }
+
+
+@@ -1537,7 +1666,9 @@ unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void * a)
+ {
+ fd->abspos += (unsigned int ) (total);
+ if (fd->buffer != NULL)
+- fd->buffer->bufstart = fd->abspos;
++ {
++ fd->buffer->bufstart = fd->abspos;
++ }
+ return (unsigned int ) (total);
+ }
+ }
+@@ -1555,7 +1686,7 @@ unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void * a)
+ void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high)
+ {
+ CheckAccess (f, (FileUsage) openedforwrite, TRUE);
+- if ((BufferedWrite (f, _a_high, a)) == (_a_high))
++ if ((BufferedWrite (f, _a_high, a)) == _a_high)
+ {} /* empty. */
+ }
+
+@@ -1567,7 +1698,7 @@ void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high)
+ void FIO_WriteChar (FIO_File f, char ch)
+ {
+ CheckAccess (f, (FileUsage) openedforwrite, TRUE);
+- if ((BufferedWrite (f, (unsigned int) sizeof (ch), &ch)) == (sizeof (ch)))
++ if ((BufferedWrite (f, sizeof (ch), &ch)) == sizeof (ch))
+ {} /* empty. */
+ }
+
+@@ -1585,7 +1716,9 @@ unsigned int FIO_EOF (FIO_File f)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- return fd->state == endoffile;
++ {
++ return fd->state == endoffile;
++ }
+ }
+ return TRUE;
+ }
+@@ -1610,13 +1743,17 @@ unsigned int FIO_EOLN (FIO_File f)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- if ((fd->state == successful) || (fd->state == endofline))
+- {
+- ch = FIO_ReadChar (f);
+- if ((fd->state == successful) || (fd->state == endofline))
+- FIO_UnReadChar (f, ch);
+- return ch == ASCII_nl;
+- }
++ {
++ if ((fd->state == successful) || (fd->state == endofline))
++ {
++ ch = FIO_ReadChar (f);
++ if ((fd->state == successful) || (fd->state == endofline))
++ {
++ FIO_UnReadChar (f, ch);
++ }
++ return ch == ASCII_nl;
++ }
++ }
+ }
+ return FALSE;
+ }
+@@ -1632,7 +1769,9 @@ unsigned int FIO_WasEOLN (FIO_File f)
+
+ CheckAccess (f, (FileUsage) openedforread, FALSE);
+ if (f == Error)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+@@ -1652,13 +1791,15 @@ char FIO_ReadChar (FIO_File f)
+ char ch;
+
+ CheckAccess (f, (FileUsage) openedforread, FALSE);
+- if ((BufferedRead (f, (unsigned int) sizeof (ch), &ch)) == (sizeof (ch)))
++ if ((BufferedRead (f, sizeof (ch), &ch)) == sizeof (ch))
+ {
+ SetEndOfLine (f, ch);
+ return ch;
+ }
+ else
+- return ASCII_nul;
++ {
++ return ASCII_nul;
++ }
+ }
+
+
+@@ -1704,22 +1845,28 @@ void FIO_UnReadChar (FIO_File f, char ch)
+ (*fd->buffer->contents).array[fd->buffer->position] = ch;
+ }
+ else
+- /* if possible make room and store ch */
+- if (fd->buffer->filled == fd->buffer->size)
+- FormatError1 ((char *) "performing too many UnReadChar calls on file (%d)\\n", 51, (unsigned char *) &f, (sizeof (f)-1));
+- else
+- {
+- n = fd->buffer->filled-fd->buffer->position;
+- b = &(*fd->buffer->contents).array[fd->buffer->position];
+- a = &(*fd->buffer->contents).array[fd->buffer->position+1];
+- a = libc_memcpy (a, b, (size_t) n);
+- fd->buffer->filled += 1;
+- (*fd->buffer->contents).array[fd->buffer->position] = ch;
+- }
++ {
++ /* if possible make room and store ch */
++ if (fd->buffer->filled == fd->buffer->size)
++ {
++ FormatError1 ((char *) "performing too many UnReadChar calls on file (%d)\\n", 51, (unsigned char *) &f, (sizeof (f)-1));
++ }
++ else
++ {
++ n = fd->buffer->filled-fd->buffer->position;
++ b = &(*fd->buffer->contents).array[fd->buffer->position];
++ a = &(*fd->buffer->contents).array[fd->buffer->position+1];
++ a = libc_memcpy (a, b, (size_t) n);
++ fd->buffer->filled += 1;
++ (*fd->buffer->contents).array[fd->buffer->position] = ch;
++ }
++ }
+ }
+ }
+ else
+- FormatError1 ((char *) "UnReadChar can only be called if the previous read was successful or end of file, error on file (%d)\\n", 102, (unsigned char *) &f, (sizeof (f)-1));
++ {
++ FormatError1 ((char *) "UnReadChar can only be called if the previous read was successful or end of file, error on file (%d)\\n", 102, (unsigned char *) &f, (sizeof (f)-1));
++ }
+ }
+ }
+
+@@ -1826,7 +1973,9 @@ int FIO_GetUnixFileDescriptor (FIO_File f)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- return fd->unixfd;
++ {
++ return fd->unixfd;
++ }
+ }
+ FormatError1 ((char *) "file %d has not been opened or is out of range\\n", 48, (unsigned char *) &f, (sizeof (f)-1));
+ return -1;
+@@ -1846,34 +1995,42 @@ void FIO_SetPositionFromBeginning (FIO_File f, long int pos)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- /* always force the lseek, until we are confident that abspos is always correct,
++ {
++ /* always force the lseek, until we are confident that abspos is always correct,
+ basically it needs some hard testing before we should remove the OR TRUE. */
+- if ((fd->abspos != pos) || TRUE)
+- {
+- FIO_FlushBuffer (f);
+- if (fd->buffer != NULL)
+- {
+- if (fd->output)
+- fd->buffer->left = fd->buffer->size;
+- else
+- fd->buffer->left = 0;
+- fd->buffer->position = 0;
+- fd->buffer->filled = 0;
+- }
+- offset = libc_lseek (fd->unixfd, pos, SEEK_SET);
+- if ((offset >= 0) && (pos == offset))
+- fd->abspos = pos;
+- else
+- {
+- fd->state = failed;
+- fd->abspos = 0;
+- }
+- if (fd->buffer != NULL)
+- {
+- fd->buffer->valid = FALSE;
+- fd->buffer->bufstart = fd->abspos;
+- }
+- }
++ if ((fd->abspos != pos) || TRUE)
++ {
++ FIO_FlushBuffer (f);
++ if (fd->buffer != NULL)
++ {
++ if (fd->output)
++ {
++ fd->buffer->left = fd->buffer->size;
++ }
++ else
++ {
++ fd->buffer->left = 0;
++ }
++ fd->buffer->position = 0;
++ fd->buffer->filled = 0;
++ }
++ offset = libc_lseek (fd->unixfd, pos, SEEK_SET);
++ if ((offset >= 0) && (pos == offset))
++ {
++ fd->abspos = pos;
++ }
++ else
++ {
++ fd->state = failed;
++ fd->abspos = 0;
++ }
++ if (fd->buffer != NULL)
++ {
++ fd->buffer->valid = FALSE;
++ fd->buffer->bufstart = fd->abspos;
++ }
++ }
++ }
+ }
+ }
+
+@@ -1896,15 +2053,21 @@ void FIO_SetPositionFromEnd (FIO_File f, long int pos)
+ if (fd->buffer != NULL)
+ {
+ if (fd->output)
+- fd->buffer->left = fd->buffer->size;
++ {
++ fd->buffer->left = fd->buffer->size;
++ }
+ else
+- fd->buffer->left = 0;
++ {
++ fd->buffer->left = 0;
++ }
+ fd->buffer->position = 0;
+ fd->buffer->filled = 0;
+ }
+ offset = libc_lseek (fd->unixfd, pos, SEEK_END);
+ if (offset >= 0)
+- fd->abspos = offset;
++ {
++ fd->abspos = offset;
++ }
+ else
+ {
+ fd->state = failed;
+@@ -1933,10 +2096,16 @@ long int FIO_FindPosition (FIO_File f)
+ {
+ fd = Indexing_GetIndice (FileInfo, (unsigned int) f);
+ if (fd != NULL)
+- if ((fd->buffer == NULL) || ! fd->buffer->valid)
+- return fd->abspos;
+- else
+- return fd->buffer->bufstart+((long int ) (fd->buffer->position));
++ {
++ if ((fd->buffer == NULL) || ! fd->buffer->valid)
++ {
++ return fd->abspos;
++ }
++ else
++ {
++ return fd->buffer->bufstart+((long int ) (fd->buffer->position));
++ }
++ }
+ }
+ return 0;
+ }
+@@ -1961,19 +2130,23 @@ void FIO_GetFileName (FIO_File f, char *a, unsigned int _a_high)
+ M2RTS_HALT (-1);
+ }
+ else
+- if (fd->name.address == NULL)
+- StrLib_StrCopy ((char *) "", 0, (char *) a, _a_high);
+- else
+- {
+- p = fd->name.address;
+- i = 0;
+- while (((*p) != ASCII_nul) && (i <= (_a_high)))
+- {
+- a[i] = (*p);
+- p += 1;
+- i += 1;
+- }
+- }
++ {
++ if (fd->name.address == NULL)
++ {
++ StrLib_StrCopy ((char *) "", 0, (char *) a, _a_high);
++ }
++ else
++ {
++ p = fd->name.address;
++ i = 0;
++ while (((*p) != ASCII_nul) && (i <= _a_high))
++ {
++ a[i] = (*p);
++ p += 1;
++ i += 1;
++ }
++ }
++ }
+ }
+ }
+
+@@ -1995,7 +2168,9 @@ void * FIO_getFileName (FIO_File f)
+ M2RTS_HALT (-1);
+ }
+ else
+- return fd->name.address;
++ {
++ return fd->name.address;
++ }
+ }
+ }
+
+@@ -2017,7 +2192,9 @@ unsigned int FIO_getFileNameLength (FIO_File f)
+ M2RTS_HALT (-1);
+ }
+ else
+- return fd->name.size;
++ {
++ return fd->name.size;
++ }
+ }
+ }
+
+@@ -2032,9 +2209,13 @@ unsigned int FIO_getFileNameLength (FIO_File f)
+ void FIO_FlushOutErr (void)
+ {
+ if (FIO_IsNoError (FIO_StdOut))
+- FIO_FlushBuffer (FIO_StdOut);
++ {
++ FIO_FlushBuffer (FIO_StdOut);
++ }
+ if (FIO_IsNoError (FIO_StdErr))
+- FIO_FlushBuffer (FIO_StdErr);
++ {
++ FIO_FlushBuffer (FIO_StdErr);
++ }
+ }
+
+ void _M2_FIO_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GFormatStrings.c
++++ b/src/gcc/gm2/mc-boot/GFormatStrings.c
+@@ -28,6 +28,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
+ # define FALSE (1==0)
+ # endif
+
++#include <stddef.h>
+ #include <string.h>
+ #include <limits.h>
+ #define _FormatStrings_H
+@@ -45,32 +46,32 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA *
+ escape sequences translated.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s);
++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt);
+
+ /*
+ Sprintf1 - returns a String containing, s, together with encapsulated
+ entity, w. It only formats the first %s or %d with n.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high);
++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high);
+
+ /*
+ Sprintf2 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
+
+ /*
+ Sprintf3 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
+
+ /*
+ Sprintf4 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
+
+ /*
+ doDSdbEnter -
+@@ -121,7 +122,29 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s);
+ A new string is returned.
+ */
+
+-static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high);
++static DynamicStrings_String FormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high);
++
++/*
++ FormatString - returns a String containing, s, together with encapsulated
++ entity, w. It only formats the first %s or %d or %u with n.
++ A new string is returned.
++*/
++
++static DynamicStrings_String PerformFormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high);
++
++/*
++ Copy - copies, fmt[start:end] -> in and returns in. Providing that start >= 0.
++*/
++
++static DynamicStrings_String Copy (DynamicStrings_String fmt, DynamicStrings_String in, int start, int end);
++
++/*
++ HandlePercent - pre-condition: s, is a string.
++ Post-condition: a new string is returned which is a copy of,
++ s, except %% is transformed into %.
++*/
++
++static DynamicStrings_String HandlePercent (DynamicStrings_String fmt, DynamicStrings_String s, int startpos);
+
+
+ /*
+@@ -184,11 +207,17 @@ static void Cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns
+ /* make a local copy of each unbounded array. */
+ memcpy (b, b_, _b_high+1);
+
+- if ((_a_high) == (_b_high))
+- for (i=0; i<=_a_high; i++)
+- a[i] = b[i];
++ if (_a_high == _b_high)
++ {
++ for (i=0; i<=_a_high; i++)
++ {
++ a[i] = b[i];
++ }
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -211,18 +240,28 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s)
+ while (i >= 0)
+ {
+ if (i > 0)
+- /* initially i might be zero which means the end of the string, which is not what we want */
+- d = DynamicStrings_ConCat (d, DynamicStrings_Slice (s, j, i));
++ {
++ /* initially i might be zero which means the end of the string, which is not what we want */
++ d = DynamicStrings_ConCat (d, DynamicStrings_Slice (s, j, i));
++ }
+ ch = DynamicStrings_char (s, i+1);
+ if (ch == 'n')
+- /* requires a newline */
+- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_nl)));
++ {
++ /* requires a newline */
++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_nl)));
++ }
+ else if (ch == 't')
+- /* requires a tab (yuck) */
+- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_tab)));
++ {
++ /* avoid dangling else. */
++ /* requires a tab (yuck) */
++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ASCII_tab)));
++ }
+ else
+- /* copy escaped character */
+- d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch)));
++ {
++ /* avoid dangling else. */
++ /* copy escaped character */
++ d = DynamicStrings_ConCat (d, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch)));
++ }
+ i += 2;
+ j = i;
+ i = DynamicStrings_Index (s, '\\', (unsigned int ) (i));
+@@ -240,15 +279,43 @@ static DynamicStrings_String HandleEscape (DynamicStrings_String s)
+ A new string is returned.
+ */
+
+-static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high)
++static DynamicStrings_String FormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high)
++{
++ DynamicStrings_String s;
++ unsigned char w[_w_high+1];
++
++ /* make a local copy of each unbounded array. */
++ memcpy (w, w_, _w_high+1);
++
++ DSdbEnter ();
++ if ((*startpos) >= 0)
++ {
++ s = PerformFormatString (fmt, startpos, in, (unsigned char *) w, _w_high);
++ }
++ else
++ {
++ s = DynamicStrings_Dup (in);
++ }
++ DSdbExit (s);
++ return s;
++}
++
++
++/*
++ FormatString - returns a String containing, s, together with encapsulated
++ entity, w. It only formats the first %s or %d or %u with n.
++ A new string is returned.
++*/
++
++static DynamicStrings_String PerformFormatString (DynamicStrings_String fmt, int *startpos, DynamicStrings_String in, unsigned char *w_, unsigned int _w_high)
+ {
+ unsigned int left;
+ unsigned int u;
+ int c;
+ int width;
+- int i;
+- int j;
+- int k;
++ int nextperc;
++ int afterperc;
++ int endpos;
+ char leader;
+ char ch;
+ char ch2;
+@@ -258,81 +325,199 @@ static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned cha
+ /* make a local copy of each unbounded array. */
+ memcpy (w, w_, _w_high+1);
+
+- DSdbEnter ();
+- i = 0;
+- j = DynamicStrings_Index (s, '%', 0);
+- if (j == 0)
+- k = -(DynamicStrings_Length (s));
+- else
+- k = j;
+- if (j >= 0)
++ while ((*startpos) >= 0)
+ {
+- if ((DynamicStrings_char (s, j+1)) == '-')
++ nextperc = DynamicStrings_Index (fmt, '%', (unsigned int) (*startpos));
++ afterperc = nextperc;
++ if (nextperc >= 0)
+ {
+- left = TRUE;
+- j += 1;
+- }
+- else
+- left = FALSE;
+- ch = DynamicStrings_char (s, j+1);
+- if (ch == '0')
+- leader = '0';
+- else
+- leader = ' ';
+- width = 0;
+- while (IsDigit (ch))
+- {
+- width = (width*10)+((int ) (((unsigned int) (ch))-((unsigned int) ('0'))));
+- j += 1;
+- ch = DynamicStrings_char (s, j+1);
+- }
+- if ((ch == 'c') || (ch == 's'))
+- {
+- if (ch == 'c')
++ afterperc += 1;
++ if ((DynamicStrings_char (fmt, afterperc)) == '-')
++ {
++ left = TRUE;
++ afterperc += 1;
++ }
++ else
++ {
++ left = FALSE;
++ }
++ ch = DynamicStrings_char (fmt, afterperc);
++ if (ch == '0')
+ {
+- ch2 = w[0];
+- p = DynamicStrings_ConCatChar (DynamicStrings_InitString ((char *) "", 0), ch2);
++ leader = '0';
+ }
+ else
+ {
+- Cast ((unsigned char *) &p, (sizeof (p)-1), (unsigned char *) w, _w_high);
+- p = DynamicStrings_Dup (p);
++ leader = ' ';
+ }
+- if ((width > 0) && (((int ) (DynamicStrings_Length (p))) < width))
++ width = 0;
++ while (IsDigit (ch))
+ {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if (left)
+- /* place trailing spaces after, p */
+- p = DynamicStrings_ConCat (p, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p))))));
++ width = (width*10)+((int ) ( ((unsigned int) (ch))- ((unsigned int) ('0'))));
++ afterperc += 1;
++ ch = DynamicStrings_char (fmt, afterperc);
++ }
++ if ((ch == 'c') || (ch == 's'))
++ {
++ afterperc += 1;
++ if (ch == 'c')
++ {
++ ch2 = w[0];
++ p = DynamicStrings_ConCatChar (DynamicStrings_InitString ((char *) "", 0), ch2);
++ }
+ else
+- /* padd string, p, with leading spaces */
+- p = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))), DynamicStrings_Mark (p));
++ {
++ Cast ((unsigned char *) &p, (sizeof (p)-1), (unsigned char *) w, _w_high);
++ p = DynamicStrings_Dup (p);
++ }
++ if ((width > 0) && (((int ) (DynamicStrings_Length (p))) < width))
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if (left)
++ {
++ /* place trailing spaces after, p. */
++ p = DynamicStrings_ConCat (p, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p))))));
++ }
++ else
++ {
++ /* padd string, p, with leading spaces. */
++ p = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) " ", 1)), (unsigned int) width-((int ) (DynamicStrings_Length (p)))), DynamicStrings_Mark (p));
++ }
++ }
++ /* include string, p, into, in. */
++ if (nextperc > 0)
++ {
++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc));
++ }
++ in = DynamicStrings_ConCat (in, p);
++ (*startpos) = afterperc;
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
++ }
++ else if (ch == 'd')
++ {
++ /* avoid dangling else. */
++ afterperc += 1;
++ Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high);
++ in = Copy (fmt, in, (*startpos), nextperc);
++ in = DynamicStrings_ConCat (in, StringConvert_IntegerToString (c, (unsigned int) width, leader, FALSE, 10, FALSE));
++ (*startpos) = afterperc;
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
++ }
++ else if (ch == 'x')
++ {
++ /* avoid dangling else. */
++ afterperc += 1;
++ Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high);
++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc));
++ in = DynamicStrings_ConCat (in, StringConvert_CardinalToString (u, (unsigned int) width, leader, 16, TRUE));
++ (*startpos) = afterperc;
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
++ }
++ else if (ch == 'u')
++ {
++ /* avoid dangling else. */
++ afterperc += 1;
++ Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high);
++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc));
++ in = DynamicStrings_ConCat (in, StringConvert_CardinalToString (u, (unsigned int) width, leader, 10, FALSE));
++ (*startpos) = afterperc;
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ afterperc += 1;
++ /* copy format string. */
++ if (nextperc > 0)
++ {
++ in = DynamicStrings_ConCat (in, DynamicStrings_Slice (fmt, (*startpos), nextperc));
++ }
++ /* and the character after the %. */
++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_InitStringChar (ch)));
+ }
+- /* include string, p, into s */
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), DynamicStrings_Mark (p)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0)));
++ (*startpos) = afterperc;
+ }
+- else if (ch == 'd')
++ else
+ {
+- Cast ((unsigned char *) &c, (sizeof (c)-1), (unsigned char *) w, _w_high);
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_IntegerToString (c, (unsigned int) width, leader, FALSE, 10, FALSE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0)));
++ /* nothing to do. */
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
+ }
+- else if (ch == 'x')
++ }
++ DSdbExit ((DynamicStrings_String) NULL);
++ return in;
++}
++
++
++/*
++ Copy - copies, fmt[start:end] -> in and returns in. Providing that start >= 0.
++*/
++
++static DynamicStrings_String Copy (DynamicStrings_String fmt, DynamicStrings_String in, int start, int end)
++{
++ if (start >= 0)
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if (end > 0)
+ {
+- Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high);
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_CardinalToString (u, (unsigned int) width, leader, 16, TRUE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0)));
++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_Slice (fmt, start, end)));
+ }
+- else if (ch == 'u')
++ else if (end < 0)
+ {
+- Cast ((unsigned char *) &u, (sizeof (u)-1), (unsigned char *) w, _w_high);
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), StringConvert_CardinalToString (u, (unsigned int) width, leader, 10, FALSE)), DynamicStrings_Mark (DynamicStrings_Slice (s, j+2, 0)));
++ /* avoid dangling else. */
++ in = DynamicStrings_ConCat (in, DynamicStrings_Mark (DynamicStrings_Slice (fmt, start, 0)));
+ }
+- else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, i, k), DynamicStrings_Mark (DynamicStrings_InitStringChar (ch))), DynamicStrings_Mark (DynamicStrings_Slice (s, j+1, 0)));
++ }
++ return in;
++}
++
++
++/*
++ HandlePercent - pre-condition: s, is a string.
++ Post-condition: a new string is returned which is a copy of,
++ s, except %% is transformed into %.
++*/
++
++static DynamicStrings_String HandlePercent (DynamicStrings_String fmt, DynamicStrings_String s, int startpos)
++{
++ int prevpos;
++ DynamicStrings_String result;
++
++ if ((startpos == (DynamicStrings_Length (fmt))) || (startpos < 0))
++ {
++ return s;
+ }
+ else
+- s = DynamicStrings_Dup (s);
+- DSdbExit (s);
+- return s;
++ {
++ prevpos = startpos;
++ while ((startpos >= 0) && (prevpos < ((int ) (DynamicStrings_Length (fmt)))))
++ {
++ startpos = DynamicStrings_Index (fmt, '%', (unsigned int) startpos);
++ if (startpos >= prevpos)
++ {
++ if (startpos > 0)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Slice (fmt, prevpos, startpos)));
++ }
++ startpos += 1;
++ if ((DynamicStrings_char (fmt, startpos)) == '%')
++ {
++ s = DynamicStrings_ConCatChar (s, '%');
++ startpos += 1;
++ }
++ prevpos = startpos;
++ }
++ }
++ if (prevpos < ((int ) (DynamicStrings_Length (fmt))))
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Slice (fmt, prevpos, 0)));
++ }
++ return s;
++ }
+ }
+
+
+@@ -341,10 +526,13 @@ static DynamicStrings_String FormatString (DynamicStrings_String s, unsigned cha
+ escape sequences translated.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s)
++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt)
+ {
++ DynamicStrings_String s;
++
+ DSdbEnter ();
+- s = HandleEscape (s);
++ fmt = HandleEscape (fmt);
++ s = HandlePercent (fmt, DynamicStrings_InitString ((char *) "", 0), 0);
+ DSdbExit (s);
+ return s;
+ }
+@@ -355,15 +543,20 @@ DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s)
+ entity, w. It only formats the first %s or %d with n.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high)
++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high)
+ {
++ int i;
++ DynamicStrings_String s;
+ unsigned char w[_w_high+1];
+
+ /* make a local copy of each unbounded array. */
+ memcpy (w, w_, _w_high+1);
+
+ DSdbEnter ();
+- s = FormatString (HandleEscape (s), (unsigned char *) w, _w_high);
++ fmt = HandleEscape (fmt);
++ i = 0;
++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w, _w_high);
++ s = HandlePercent (fmt, s, i);
+ DSdbExit (s);
+ return s;
+ }
+@@ -373,8 +566,10 @@ DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned
+ Sprintf2 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high)
++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high)
+ {
++ int i;
++ DynamicStrings_String s;
+ unsigned char w1[_w1_high+1];
+ unsigned char w2[_w2_high+1];
+
+@@ -383,7 +578,11 @@ DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned
+ memcpy (w2, w2_, _w2_high+1);
+
+ DSdbEnter ();
+- s = FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high);
++ fmt = HandleEscape (fmt);
++ i = 0;
++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high);
++ s = HandlePercent (fmt, s, i);
+ DSdbExit (s);
+ return s;
+ }
+@@ -393,8 +592,10 @@ DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned
+ Sprintf3 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high)
++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high)
+ {
++ int i;
++ DynamicStrings_String s;
+ unsigned char w1[_w1_high+1];
+ unsigned char w2[_w2_high+1];
+ unsigned char w3[_w3_high+1];
+@@ -405,7 +606,12 @@ DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned
+ memcpy (w3, w3_, _w3_high+1);
+
+ DSdbEnter ();
+- s = FormatString (FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high), (unsigned char *) w3, _w3_high);
++ fmt = HandleEscape (fmt);
++ i = 0;
++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w3, _w3_high);
++ s = HandlePercent (fmt, s, i);
+ DSdbExit (s);
+ return s;
+ }
+@@ -415,8 +621,10 @@ DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned
+ Sprintf4 - returns a string, s, which has been formatted.
+ */
+
+-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high)
++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high)
+ {
++ int i;
++ DynamicStrings_String s;
+ unsigned char w1[_w1_high+1];
+ unsigned char w2[_w2_high+1];
+ unsigned char w3[_w3_high+1];
+@@ -429,7 +637,13 @@ DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned
+ memcpy (w4, w4_, _w4_high+1);
+
+ DSdbEnter ();
+- s = FormatString (FormatString (FormatString (FormatString (HandleEscape (s), (unsigned char *) w1, _w1_high), (unsigned char *) w2, _w2_high), (unsigned char *) w3, _w3_high), (unsigned char *) w4, _w4_high);
++ fmt = HandleEscape (fmt);
++ i = 0;
++ s = FormatString (fmt, &i, DynamicStrings_InitString ((char *) "", 0), (unsigned char *) w1, _w1_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w2, _w2_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w3, _w3_high);
++ s = FormatString (fmt, &i, s, (unsigned char *) w4, _w4_high);
++ s = HandlePercent (fmt, s, i);
+ DSdbExit (s);
+ return s;
+ }
+--- a/src/gcc/gm2/mc-boot/GFormatStrings.h
++++ b/src/gcc/gm2/mc-boot/GFormatStrings.h
+@@ -23,36 +23,36 @@ extern "C" {
+
+
+ /*
+- Sprintf0 - returns a String containing, s, after it has had its
++ Sprintf0 - returns a String containing, fmt, after it has had its
+ escape sequences translated.
+ */
+
+-EXTERN DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s);
++EXTERN DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt);
+
+ /*
+- Sprintf1 - returns a String containing, s, together with encapsulated
++ Sprintf1 - returns a String containing, fmt, together with encapsulated
+ entity, w. It only formats the first %s or %d with n.
+ */
+
+-EXTERN DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high);
++EXTERN DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high);
+
+ /*
+- Sprintf2 - returns a string, s, which has been formatted.
++ Sprintf2 - returns a string, fmt, which has been formatted.
+ */
+
+-EXTERN DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
++EXTERN DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
+
+ /*
+- Sprintf3 - returns a string, s, which has been formatted.
++ Sprintf3 - returns a string, fmt, which has been formatted.
+ */
+
+-EXTERN DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
++EXTERN DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
+
+ /*
+- Sprintf4 - returns a string, s, which has been formatted.
++ Sprintf4 - returns a string, fmt, which has been formatted.
+ */
+
+-EXTERN DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
++EXTERN DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
+ # ifdef __cplusplus
+ }
+ # endif
+--- a/src/gcc/gm2/mc-boot/GIO.c
++++ b/src/gcc/gm2/mc-boot/GIO.c
+@@ -157,24 +157,31 @@ static void doWrite (int fd, FIO_File f, char ch)
+ {
+ /* avoid dangling else. */
+ if (! fdState.array[fd].IsEof)
+- for (;;)
+ {
+- r = libc_write (FIO_GetUnixFileDescriptor (f), &ch, (size_t) 1);
+- if (r == 1)
+- return;
+- else if (r == -1)
+- {
+- r = errno_geterrno ();
+- if ((r != errno_EAGAIN) && (r != errno_EINTR))
+- {
+- fdState.array[fd].IsEof = TRUE;
+- return;
+- }
+- }
++ for (;;)
++ {
++ r = libc_write (FIO_GetUnixFileDescriptor (f), &ch, (size_t) 1);
++ if (r == 1)
++ {
++ return;
++ }
++ else if (r == -1)
++ {
++ /* avoid dangling else. */
++ r = errno_geterrno ();
++ if ((r != errno_EAGAIN) && (r != errno_EINTR))
++ {
++ fdState.array[fd].IsEof = TRUE;
++ return;
++ }
++ }
++ }
+ }
+ }
+ else
+- FIO_WriteChar (f, ch);
++ {
++ FIO_WriteChar (f, ch);
++ }
+ }
+
+
+@@ -285,27 +292,38 @@ void IO_Read (char *ch)
+ FIO_FlushBuffer (FIO_StdOut);
+ FIO_FlushBuffer (FIO_StdErr);
+ if (fdState.array[0].IsRaw)
+- if (fdState.array[0].IsEof)
+- (*ch) = ASCII_eof;
+- else
+- for (;;)
+- {
+- r = libc_read (FIO_GetUnixFileDescriptor (FIO_StdIn), ch, (size_t) 1);
+- if (r == 1)
+- return;
+- else if (r == -1)
++ {
++ if (fdState.array[0].IsEof)
++ {
++ (*ch) = ASCII_eof;
++ }
++ else
++ {
++ for (;;)
+ {
+- r = errno_geterrno ();
+- if (r != errno_EAGAIN)
++ r = libc_read (FIO_GetUnixFileDescriptor (FIO_StdIn), ch, (size_t) 1);
++ if (r == 1)
+ {
+- fdState.array[0].IsEof = TRUE;
+- (*ch) = ASCII_eof;
+ return;
+ }
++ else if (r == -1)
++ {
++ /* avoid dangling else. */
++ r = errno_geterrno ();
++ if (r != errno_EAGAIN)
++ {
++ fdState.array[0].IsEof = TRUE;
++ (*ch) = ASCII_eof;
++ return;
++ }
++ }
+ }
+- }
++ }
++ }
+ else
+- (*ch) = FIO_ReadChar (FIO_StdIn);
++ {
++ (*ch) = FIO_ReadChar (FIO_StdIn);
++ }
+ }
+
+
+@@ -336,15 +354,21 @@ void IO_UnBufferedMode (int fd, unsigned int input)
+ int r;
+
+ if (IsDefaultFd (fd))
+- fdState.array[fd].IsRaw = TRUE;
++ {
++ fdState.array[fd].IsRaw = TRUE;
++ }
+ term = termios_InitTermios ();
+ if ((termios_tcgetattr (fd, term)) == 0)
+ {
+ doraw (term);
+ if (input)
+- r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ }
+ else
+- r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ }
+ }
+ term = termios_KillTermios (term);
+ }
+@@ -355,15 +379,21 @@ void IO_BufferedMode (int fd, unsigned int input)
+ int r;
+
+ if (IsDefaultFd (fd))
+- fdState.array[fd].IsRaw = FALSE;
++ {
++ fdState.array[fd].IsRaw = FALSE;
++ }
+ term = termios_InitTermios ();
+ if ((termios_tcgetattr (fd, term)) == 0)
+ {
+ dononraw (term);
+ if (input)
+- r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ }
+ else
+- r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ }
+ }
+ term = termios_KillTermios (term);
+ }
+@@ -387,9 +417,13 @@ void IO_EchoOn (int fd, unsigned int input)
+ {
+ setFlag (term, (termios_Flag) termios_lecho, TRUE);
+ if (input)
+- r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ }
+ else
+- r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ }
+ }
+ term = termios_KillTermios (term);
+ }
+@@ -413,9 +447,13 @@ void IO_EchoOff (int fd, unsigned int input)
+ {
+ setFlag (term, (termios_Flag) termios_lecho, FALSE);
+ if (input)
+- r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsflush (), term);
++ }
+ else
+- r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ {
++ r = termios_tcsetattr (fd, termios_tcsdrain (), term);
++ }
+ }
+ term = termios_KillTermios (term);
+ }
+--- a/src/gcc/gm2/mc-boot/GIndexing.c
++++ b/src/gcc/gm2/mc-boot/GIndexing.c
+@@ -202,9 +202,13 @@ Indexing_Index Indexing_DebugIndex (Indexing_Index i)
+ unsigned int Indexing_InBounds (Indexing_Index i, unsigned int n)
+ {
+ if (i == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- return (n >= i->Low) && (n <= i->High);
++ {
++ return (n >= i->Low) && (n <= i->High);
++ }
+ }
+
+
+@@ -215,9 +219,13 @@ unsigned int Indexing_InBounds (Indexing_Index i, unsigned int n)
+ unsigned int Indexing_HighIndice (Indexing_Index i)
+ {
+ if (i == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- return i->High;
++ {
++ return i->High;
++ }
+ }
+
+
+@@ -228,9 +236,13 @@ unsigned int Indexing_HighIndice (Indexing_Index i)
+ unsigned int Indexing_LowIndice (Indexing_Index i)
+ {
+ if (i == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- return i->Low;
++ {
++ return i->Low;
++ }
+ }
+
+
+@@ -248,12 +260,16 @@ void Indexing_PutIndice (Indexing_Index i, unsigned int n, void * a)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (n < i->Low)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ oldSize = i->ArraySize;
+- while (((n-i->Low)*(sizeof (void *))) >= i->ArraySize)
+- i->ArraySize = i->ArraySize*2;
++ while (((n-i->Low)*sizeof (void *)) >= i->ArraySize)
++ {
++ i->ArraySize = i->ArraySize*2;
++ }
+ if (oldSize != i->ArraySize)
+ {
+ /*
+@@ -274,13 +290,17 @@ void Indexing_PutIndice (Indexing_Index i, unsigned int n, void * a)
+ }
+ }
+ b = i->ArrayStart;
+- b += (n-i->Low)*(sizeof (void *));
++ b += (n-i->Low)*sizeof (void *);
+ p = b;
+ (*p) = a;
+ i->Used += 1;
+ if (i->Debug)
+- if (n < 32)
+- i->Map |= (1 << (n ));
++ {
++ if (n < 32)
++ {
++ i->Map |= (1 << (n ));
++ }
++ }
+ }
+
+
+@@ -294,13 +314,19 @@ void * Indexing_GetIndice (Indexing_Index i, unsigned int n)
+ PtrToAddress p;
+
+ if (! (Indexing_InBounds (i, n)))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ b = i->ArrayStart;
+- b += (n-i->Low)*(sizeof (void *));
++ b += (n-i->Low)*sizeof (void *);
+ p = (PtrToAddress) (b);
+ if (i->Debug)
+- if (((n < 32) && (! ((((1 << (n)) & (i->Map)) != 0)))) && ((*p) != NULL))
+- M2RTS_HALT (-1);
++ {
++ if (((n < 32) && (! ((((1 << (n)) & (i->Map)) != 0)))) && ((*p) != NULL))
++ {
++ M2RTS_HALT (-1);
++ }
++ }
+ return (*p);
+ }
+
+@@ -321,7 +347,9 @@ unsigned int Indexing_IsIndiceInIndex (Indexing_Index i, void * a)
+ {
+ p = (PtrToAddress) (b);
+ if ((*p) == a)
+- return TRUE;
++ {
++ return TRUE;
++ }
+ /* we must not INC(p, ..) as p2c gets confused */
+ b += sizeof (void *);
+ j += 1;
+@@ -348,7 +376,9 @@ void Indexing_RemoveIndiceFromIndex (Indexing_Index i, void * a)
+ p = (PtrToAddress) (b);
+ b += sizeof (void *);
+ if ((*p) == a)
+- Indexing_DeleteIndice (i, j);
++ {
++ Indexing_DeleteIndice (i, j);
++ }
+ j += 1;
+ }
+ }
+@@ -366,15 +396,17 @@ void Indexing_DeleteIndice (Indexing_Index i, unsigned int j)
+ if (Indexing_InBounds (i, j))
+ {
+ b = i->ArrayStart;
+- b += (sizeof (void *))*(j-i->Low);
++ b += sizeof (void *)*(j-i->Low);
+ p = (PtrToAddress) (b);
+ b += sizeof (void *);
+- p = libc_memmove ((void *) p, (void *) b, (size_t) (i->High-j)*(sizeof (void *)));
++ p = libc_memmove ((void *) p, (void *) b, (size_t) (i->High-j)*sizeof (void *));
+ i->High -= 1;
+ i->Used -= 1;
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -389,9 +421,13 @@ void Indexing_IncludeIndiceIntoIndex (Indexing_Index i, void * a)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (i->Used == 0)
+- Indexing_PutIndice (i, Indexing_LowIndice (i), a);
++ {
++ Indexing_PutIndice (i, Indexing_LowIndice (i), a);
++ }
+ else
+- Indexing_PutIndice (i, (Indexing_HighIndice (i))+1, a);
++ {
++ Indexing_PutIndice (i, (Indexing_HighIndice (i))+1, a);
++ }
+ }
+ }
+
+--- a/src/gcc/gm2/mc-boot/GM2EXCEPTION.c
++++ b/src/gcc/gm2/mc-boot/GM2EXCEPTION.c
+@@ -45,9 +45,13 @@ M2EXCEPTION_M2Exceptions M2EXCEPTION_M2Exception (void)
+ e = RTExceptions_GetExceptionBlock ();
+ n = RTExceptions_GetNumber (e);
+ if (n == (UINT_MAX))
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), "../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.mod", 39, 6, "M2Exception", "current coroutine is not in the exceptional execution state");
++ {
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), "../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.mod", 39, 6, "M2Exception", "current coroutine is not in the exceptional execution state");
++ }
+ else
+- return (M2EXCEPTION_M2Exceptions) (n);
++ {
++ return (M2EXCEPTION_M2Exceptions) (n);
++ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/gm2-libs/M2EXCEPTION.def", 8, 1);
+ }
+
+--- a/src/gcc/gm2/mc-boot/GM2RTS.c
++++ b/src/gcc/gm2/mc-boot/GM2RTS.c
+@@ -209,7 +209,9 @@ void M2RTS_ExecuteTerminationProcedures (void)
+ unsigned int M2RTS_InstallTerminationProcedure (PROC p)
+ {
+ if (tPtr > MaxProcedures)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ TerminateProc.array[tPtr] = p;
+@@ -245,7 +247,9 @@ void M2RTS_ExecuteInitialProcedures (void)
+ unsigned int M2RTS_InstallInitialProcedure (PROC p)
+ {
+ if (iPtr > MaxProcedures)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ InitialProc.array[iPtr] = p;
+@@ -287,17 +291,23 @@ void M2RTS_HALT (int exitcode)
+ ExitValue = exitcode;
+ }
+ if (isHalting)
+- /* double HALT found */
+- libc_exit (-1);
++ {
++ /* double HALT found */
++ libc_exit (-1);
++ }
+ else
+ {
+ isHalting = TRUE;
+ M2RTS_ExecuteTerminationProcedures ();
+ }
+ if (CallExit)
+- libc_exit (ExitValue);
++ {
++ libc_exit (ExitValue);
++ }
+ else
+- libc_abort ();
++ {
++ libc_abort ();
++ }
+ }
+
+
+@@ -389,7 +399,9 @@ unsigned int M2RTS_Length (char *a_, unsigned int _a_high)
+ l = 0;
+ h = _a_high;
+ while ((l <= h) && (a[l] != ASCII_nul))
+- l += 1;
++ {
++ l += 1;
++ }
+ return l;
+ }
+
+@@ -398,117 +410,117 @@ void M2RTS_AssignmentException (void * filename, unsigned int line, unsigned int
+ /*
+ The following are the runtime exception handler routines.
+ */
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during assignment");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during assignment");
+ }
+
+ void M2RTS_ReturnException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "return value from procedure function exceeds range");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "return value from procedure function exceeds range");
+ }
+
+ void M2RTS_IncException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during INC statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during INC statement");
+ }
+
+ void M2RTS_DecException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "variable exceeds range during DEC statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "variable exceeds range during DEC statement");
+ }
+
+ void M2RTS_InclException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during INCL statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during INCL statement");
+ }
+
+ void M2RTS_ExclException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during EXCL statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during EXCL statement");
+ }
+
+ void M2RTS_ShiftException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during SHIFT statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during SHIFT statement");
+ }
+
+ void M2RTS_RotateException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "bit exceeds set range during ROTATE statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "bit exceeds set range during ROTATE statement");
+ }
+
+ void M2RTS_StaticArraySubscriptException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), filename, line, column, scope, "array index out of bounds during static array access");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), filename, line, column, scope, "array index out of bounds during static array access");
+ }
+
+ void M2RTS_DynamicArraySubscriptException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), filename, line, column, scope, "array index out of bounds during dynamic array access");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), filename, line, column, scope, "array index out of bounds during dynamic array access");
+ }
+
+ void M2RTS_ForLoopBeginException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable exceeds range during FOR loop initial assignment");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable exceeds range during FOR loop initial assignment");
+ }
+
+ void M2RTS_ForLoopToException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable will exceed range when calculating final value in FOR loop");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable will exceed range when calculating final value in FOR loop");
+ }
+
+ void M2RTS_ForLoopEndException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), filename, line, column, scope, "iterator variable exceeds range during increment at the end of a FOR loop");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), filename, line, column, scope, "iterator variable exceeds range during increment at the end of a FOR loop");
+ }
+
+ void M2RTS_PointerNilException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_invalidLocation), filename, line, column, scope, "attempting to dereference a NIL valued pointer");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_invalidLocation)), filename, line, column, scope, "attempting to dereference a NIL valued pointer");
+ }
+
+ void M2RTS_NoReturnException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_functionException), filename, line, column, scope, "about to finish a PROCEDURE without executing a RETURN statement");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_functionException)), filename, line, column, scope, "about to finish a PROCEDURE without executing a RETURN statement");
+ }
+
+ void M2RTS_CaseException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_caseSelectException), filename, line, column, scope, "the expression in the CASE statement cannot be selected");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_caseSelectException)), filename, line, column, scope, "the expression in the CASE statement cannot be selected");
+ }
+
+ void M2RTS_WholeNonPosDivException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the division expression has a divisor which is less than or equal to zero");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the division expression has a divisor which is less than or equal to zero");
+ }
+
+ void M2RTS_WholeNonPosModException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the modulus expression has a divisor which is less than or equal to zero");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the modulus expression has a divisor which is less than or equal to zero");
+ }
+
+ void M2RTS_WholeZeroDivException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the division expression has a divisor which is equal to zero");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the division expression has a divisor which is equal to zero");
+ }
+
+ void M2RTS_WholeZeroRemException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), filename, line, column, scope, "the remainder expression has a divisor which is equal to zero");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), filename, line, column, scope, "the remainder expression has a divisor which is equal to zero");
+ }
+
+ void M2RTS_WholeValueException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeValueException), filename, line, column, scope, "the whole value is about to overflow");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeValueException)), filename, line, column, scope, "the whole value is about to overflow");
+ }
+
+ void M2RTS_RealValueException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realValueException), filename, line, column, scope, "the floating point value is about to overflow");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realValueException)), filename, line, column, scope, "the floating point value is about to overflow");
+ }
+
+ void M2RTS_NoException (void * filename, unsigned int line, unsigned int column, void * scope)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), filename, line, column, scope, "M2Expection was called when no there was no outstanding exception to be returned");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), filename, line, column, scope, "M2Expection was called when no there was no outstanding exception to be returned");
+ }
+
+ void _M2_M2RTS_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GMemUtils.c
++++ b/src/gcc/gm2/mc-boot/GMemUtils.c
+@@ -50,23 +50,23 @@ void MemUtils_MemCopy (void * from, unsigned int length, void * to)
+ unsigned char * pbb;
+ unsigned char * pba;
+
+- while (length >= (sizeof (unsigned int)))
++ while (length >= sizeof (unsigned int ))
+ {
+ pwa = from;
+ pwb = to;
+ (*pwb) = (*pwa);
+- from += sizeof (unsigned int);
+- to += sizeof (unsigned int);
+- length -= sizeof (unsigned int);
++ from += sizeof (unsigned int );
++ to += sizeof (unsigned int );
++ length -= sizeof (unsigned int );
+ }
+ while (length > 0)
+ {
+ pba = from;
+ pbb = to;
+ (*pbb) = (*pba);
+- from += sizeof (unsigned char);
+- to += sizeof (unsigned char);
+- length -= sizeof (unsigned char);
++ from += sizeof (unsigned char );
++ to += sizeof (unsigned char );
++ length -= sizeof (unsigned char );
+ }
+ }
+
+@@ -81,18 +81,18 @@ void MemUtils_MemZero (void * a, unsigned int length)
+ unsigned char * pba;
+
+ pwa = a;
+- while (length >= (sizeof (unsigned int)))
++ while (length >= sizeof (unsigned int ))
+ {
+ (*pwa) = (unsigned int ) (0);
+- pwa += sizeof (unsigned int);
+- length -= sizeof (unsigned int);
++ pwa += sizeof (unsigned int );
++ length -= sizeof (unsigned int );
+ }
+ pba = (void *) (pwa);
+- while (length >= (sizeof (unsigned char)))
++ while (length >= sizeof (unsigned char ))
+ {
+ (*pba) = (unsigned char ) (0);
+- pba += sizeof (unsigned char);
+- length -= sizeof (unsigned char);
++ pba += sizeof (unsigned char );
++ length -= sizeof (unsigned char );
+ }
+ }
+
+--- a/src/gcc/gm2/mc-boot/GNumberIO.c
++++ b/src/gcc/gm2/mc-boot/GNumberIO.c
+@@ -166,12 +166,14 @@ void NumberIO_CardToStr (unsigned int x, unsigned int n, char *a, unsigned int _
+ }
+ while ((i > 0) && (j <= Higha))
+ {
+- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0')));
++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0'))));
+ j += 1;
+ i -= 1;
+ }
+ if (j <= Higha)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ }
+
+ void NumberIO_StrToCard (char *a_, unsigned int _a_high, unsigned int *x)
+@@ -189,28 +191,42 @@ void NumberIO_StrToCard (char *a_, unsigned int _a_high, unsigned int *x)
+ i = 0;
+ ok = TRUE;
+ while (ok)
+- if (i < higha)
+- if ((a[i] < '0') || (a[i] > '9'))
+- i += 1;
++ {
++ if (i < higha)
++ {
++ if ((a[i] < '0') || (a[i] > '9'))
++ {
++ i += 1;
++ }
++ else
++ {
++ ok = FALSE;
++ }
++ }
+ else
+- ok = FALSE;
+- else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
++ }
+ (*x) = 0;
+ if (i < higha)
+ {
+ ok = TRUE;
+ do {
+- (*x) = (10*(*x))+(((unsigned int) (a[i]))-((unsigned int) ('0')));
++ (*x) = (10*(*x))+( ((unsigned int) (a[i]))- ((unsigned int) ('0')));
+ if (i < higha)
+ {
+ /* avoid dangling else. */
+ i += 1;
+ if ((a[i] < '0') || (a[i] > '9'))
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ }
+ else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ } while (! (! ok));
+ }
+ }
+@@ -248,14 +264,20 @@ void NumberIO_HexToStr (unsigned int x, unsigned int n, char *a, unsigned int _a
+ while ((i != 0) && (j <= Higha))
+ {
+ if (buf.array[i-1] < 10)
+- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0')));
++ {
++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0'))));
++ }
+ else
+- a[j] = (char) ((buf.array[i-1]+((unsigned int) ('A')))-10);
++ {
++ a[j] = ((char) ((buf.array[i-1]+ ((unsigned int) ('A')))-10));
++ }
+ j += 1;
+ i -= 1;
+ }
+ if (j <= Higha)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ }
+
+ void NumberIO_StrToHex (char *a_, unsigned int _a_high, unsigned int *x)
+@@ -288,7 +310,9 @@ void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int _a_high)
+ Negative = TRUE;
+ c = ((unsigned int ) (abs (x+1)))+1;
+ if (n > 0)
+- n -= 1;
++ {
++ n -= 1;
++ }
+ }
+ else
+ {
+@@ -322,12 +346,14 @@ void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int _a_high)
+ }
+ while ((i != 0) && (j <= Higha))
+ {
+- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0')));
++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0'))));
+ j += 1;
+ i -= 1;
+ }
+ if (j <= Higha)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ }
+
+ void NumberIO_StrToInt (char *a_, unsigned int _a_high, int *x)
+@@ -347,36 +373,56 @@ void NumberIO_StrToInt (char *a_, unsigned int _a_high, int *x)
+ Negative = FALSE;
+ ok = TRUE;
+ while (ok)
+- if (i < higha)
+- if (a[i] == '-')
++ {
++ if (i < higha)
+ {
+- i += 1;
+- Negative = ! Negative;
++ if (a[i] == '-')
++ {
++ i += 1;
++ Negative = ! Negative;
++ }
++ else if ((a[i] < '0') || (a[i] > '9'))
++ {
++ /* avoid dangling else. */
++ i += 1;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ ok = FALSE;
++ }
+ }
+- else if ((a[i] < '0') || (a[i] > '9'))
+- i += 1;
+ else
+- ok = FALSE;
+- else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
++ }
+ (*x) = 0;
+ if (i < higha)
+ {
+ ok = TRUE;
+ do {
+ if (Negative)
+- (*x) = (10*(*x))-((int ) (((unsigned int) (a[i]))-((unsigned int) ('0'))));
++ {
++ (*x) = (10*(*x))-((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
++ }
+ else
+- (*x) = (10*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0'))));
++ {
++ (*x) = (10*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
++ }
+ if (i < higha)
+ {
+ /* avoid dangling else. */
+ i += 1;
+ if ((a[i] < '0') || (a[i] > '9'))
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ }
+ else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ } while (! (! ok));
+ }
+ }
+@@ -435,12 +481,14 @@ void NumberIO_OctToStr (unsigned int x, unsigned int n, char *a, unsigned int _a
+ }
+ while ((i > 0) && (j <= Higha))
+ {
+- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0')));
++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0'))));
+ j += 1;
+ i -= 1;
+ }
+ if (j <= Higha)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ }
+
+ void NumberIO_StrToOct (char *a_, unsigned int _a_high, unsigned int *x)
+@@ -509,12 +557,14 @@ void NumberIO_BinToStr (unsigned int x, unsigned int n, char *a, unsigned int _a
+ }
+ while ((i > 0) && (j <= Higha))
+ {
+- a[j] = (char) (buf.array[i-1]+((unsigned int) ('0')));
++ a[j] = ((char) (buf.array[i-1]+ ((unsigned int) ('0'))));
+ j += 1;
+ i -= 1;
+ }
+ if (j <= Higha)
+- a[j] = ASCII_nul;
++ {
++ a[j] = ASCII_nul;
++ }
+ }
+
+ void NumberIO_StrToBin (char *a_, unsigned int _a_high, unsigned int *x)
+@@ -544,28 +594,42 @@ void NumberIO_StrToBinInt (char *a_, unsigned int _a_high, int *x)
+ i = 0;
+ ok = TRUE;
+ while (ok)
+- if (i < higha)
+- if ((a[i] < '0') || (a[i] > '1'))
+- i += 1;
++ {
++ if (i < higha)
++ {
++ if ((a[i] < '0') || (a[i] > '1'))
++ {
++ i += 1;
++ }
++ else
++ {
++ ok = FALSE;
++ }
++ }
+ else
+- ok = FALSE;
+- else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
++ }
+ (*x) = 0;
+ if (i < higha)
+ {
+ ok = TRUE;
+ do {
+- (*x) = (2*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0'))));
++ (*x) = (2*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
+ if (i < higha)
+ {
+ /* avoid dangling else. */
+ i += 1;
+ if ((a[i] < '0') || (a[i] > '1'))
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ }
+ else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ } while (! (! ok));
+ }
+ }
+@@ -585,31 +649,50 @@ void NumberIO_StrToHexInt (char *a_, unsigned int _a_high, int *x)
+ i = 0;
+ ok = TRUE;
+ while (ok)
+- if (i < higha)
+- if (((a[i] >= '0') && (a[i] <= '9')) || ((a[i] >= 'A') && (a[i] <= 'F')))
+- ok = FALSE;
++ {
++ if (i < higha)
++ {
++ if (((a[i] >= '0') && (a[i] <= '9')) || ((a[i] >= 'A') && (a[i] <= 'F')))
++ {
++ ok = FALSE;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ else
+- i += 1;
+- else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
++ }
+ (*x) = 0;
+ if (i < higha)
+ {
+ ok = TRUE;
+ do {
+ if ((a[i] >= '0') && (a[i] <= '9'))
+- (*x) = (0x010*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0'))));
++ {
++ (*x) = (0x010*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
++ }
+ else if ((a[i] >= 'A') && (a[i] <= 'F'))
+- (*x) = (0x010*(*x))+((int ) ((((unsigned int) (a[i]))-((unsigned int) ('A')))+10));
++ {
++ /* avoid dangling else. */
++ (*x) = (0x010*(*x))+((int ) (( ((unsigned int) (a[i]))- ((unsigned int) ('A')))+10));
++ }
+ if (i < higha)
+ {
+ /* avoid dangling else. */
+ i += 1;
+ if (((a[i] < '0') || (a[i] > '9')) && ((a[i] < 'A') || (a[i] > 'F')))
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ }
+ else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ } while (! (! ok));
+ }
+ }
+@@ -629,28 +712,42 @@ void NumberIO_StrToOctInt (char *a_, unsigned int _a_high, int *x)
+ i = 0;
+ ok = TRUE;
+ while (ok)
+- if (i < higha)
+- if ((a[i] < '0') || (a[i] > '7'))
+- i += 1;
++ {
++ if (i < higha)
++ {
++ if ((a[i] < '0') || (a[i] > '7'))
++ {
++ i += 1;
++ }
++ else
++ {
++ ok = FALSE;
++ }
++ }
+ else
+- ok = FALSE;
+- else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
++ }
+ (*x) = 0;
+ if (i < higha)
+ {
+ ok = TRUE;
+ do {
+- (*x) = (8*(*x))+((int ) (((unsigned int) (a[i]))-((unsigned int) ('0'))));
++ (*x) = (8*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
+ if (i < higha)
+ {
+ /* avoid dangling else. */
+ i += 1;
+ if ((a[i] < '0') || (a[i] > '7'))
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ }
+ else
+- ok = FALSE;
++ {
++ ok = FALSE;
++ }
+ } while (! (! ok));
+ }
+ }
+--- a/src/gcc/gm2/mc-boot/GPushBackInput.c
++++ b/src/gcc/gm2/mc-boot/GPushBackInput.c
+@@ -200,13 +200,17 @@ char PushBackInput_GetCh (FIO_File f)
+ {
+ StackPtr -= 1;
+ if (Debugging)
+- StdIO_Write (CharStack.array[StackPtr]);
++ {
++ StdIO_Write (CharStack.array[StackPtr]);
++ }
+ return CharStack.array[StackPtr];
+ }
+ else
+ {
+ if ((FIO_EOF (f)) || (! (FIO_IsNoError (f))))
+- ch = ASCII_nul;
++ {
++ ch = ASCII_nul;
++ }
+ else
+ {
+ do {
+@@ -218,10 +222,14 @@ char PushBackInput_GetCh (FIO_File f)
+ LineNo += 1;
+ }
+ else
+- Column += 1;
++ {
++ Column += 1;
++ }
+ }
+ if (Debugging)
+- StdIO_Write (ch);
++ {
++ StdIO_Write (ch);
++ }
+ return ch;
+ }
+ }
+@@ -240,7 +248,9 @@ char PushBackInput_PutCh (FIO_File f, char ch)
+ StackPtr += 1;
+ }
+ else
+- Debug_Halt ((char *) "max push back stack exceeded, increase MaxPushBackStack", 55, 122, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54);
++ {
++ Debug_Halt ((char *) "max push back stack exceeded, increase MaxPushBackStack", 55, 122, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54);
++ }
+ return ch;
+ }
+
+@@ -262,7 +272,9 @@ void PushBackInput_PutString (FIO_File f, char *a_, unsigned int _a_high)
+ {
+ l -= 1;
+ if ((PushBackInput_PutCh (f, a[l])) != a[l])
+- Debug_Halt ((char *) "assert failed", 13, 104, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54);
++ {
++ Debug_Halt ((char *) "assert failed", 13, 104, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/PushBackInput.mod", 54);
++ }
+ }
+ }
+
+@@ -343,7 +355,9 @@ void PushBackInput_WarnString (DynamicStrings_String s)
+ StdIO_Write (':');
+ }
+ else
+- StdIO_Write ((*p));
++ {
++ StdIO_Write ((*p));
++ }
+ p += 1;
+ }
+ } while (! ((p == NULL) || ((*p) == ASCII_nul)));
+@@ -388,9 +402,13 @@ void PushBackInput_SetDebug (unsigned int d)
+ unsigned int PushBackInput_GetColumnPosition (void)
+ {
+ if (StackPtr > Column)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- return Column-StackPtr;
++ {
++ return Column-StackPtr;
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GRTExceptions.c
++++ b/src/gcc/gm2/mc-boot/GRTExceptions.c
+@@ -436,11 +436,17 @@ static Handler findHandler (RTExceptions_EHBlock e, unsigned int number)
+
+ h = e->handlers->right;
+ while ((h != e->handlers) && (number != h->n))
+- h = h->right;
++ {
++ h = h->right;
++ }
+ if (h == e->handlers)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+- return h;
++ {
++ return h;
++ }
+ }
+
+
+@@ -455,9 +461,13 @@ static void InvokeHandler (void)
+
+ h = findHandler (currentEHB, currentEHB->number);
+ if (h == NULL)
+- throw (RTExceptions_GetNumber (RTExceptions_GetExceptionBlock ()));
++ {
++ throw (RTExceptions_GetNumber (RTExceptions_GetExceptionBlock ()));
++ }
+ else
+- (*h->p.proc) ();
++ {
++ (*h->p.proc) ();
++ }
+ }
+
+
+@@ -498,13 +508,17 @@ static void * stripPath (void * s)
+ p = s;
+ f = s;
+ while ((*p) != ASCII_nul)
+- if ((*p) == '/')
+- {
+- p += 1;
+- f = p;
+- }
+- else
+- p += 1;
++ {
++ if ((*p) == '/')
++ {
++ p += 1;
++ f = p;
++ }
++ else
++ {
++ p += 1;
++ }
++ }
+ return f;
+ }
+
+@@ -553,7 +567,9 @@ static void addStr (void * s, unsigned int *i)
+ static void addNum (unsigned int n, unsigned int *i)
+ {
+ if (n < 10)
+- addChar ((char) ((n % 10)+((unsigned int) ('0'))), i);
++ {
++ addChar ( ((char) ((n % 10)+ ((unsigned int) ('0')))), i);
++ }
+ else
+ {
+ addNum (n / 10, i);
+@@ -571,7 +587,9 @@ static RTExceptions_EHBlock New (void)
+ RTExceptions_EHBlock e;
+
+ if (freeEHB == NULL)
+- Storage_ALLOCATE ((void **) &e, sizeof (_T1));
++ {
++ Storage_ALLOCATE ((void **) &e, sizeof (_T1));
++ }
+ else
+ {
+ e = freeEHB;
+@@ -590,7 +608,9 @@ static Handler NewHandler (void)
+ Handler h;
+
+ if (freeHandler == NULL)
+- Storage_ALLOCATE ((void **) &h, sizeof (_T3));
++ {
++ Storage_ALLOCATE ((void **) &h, sizeof (_T3));
++ }
+ else
+ {
+ h = freeHandler;
+@@ -669,7 +689,7 @@ static void AddHandler (RTExceptions_EHBlock e, Handler h)
+
+ static void indexf (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_indexException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 597, 9, "indexf", "array index out of bounds");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_indexException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 597, 9, "indexf", "array index out of bounds");
+ }
+
+
+@@ -679,7 +699,7 @@ static void indexf (void * a)
+
+ static void range (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_rangeException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 609, 9, "range", "assignment out of range");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_rangeException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 609, 9, "range", "assignment out of range");
+ }
+
+
+@@ -689,7 +709,7 @@ static void range (void * a)
+
+ static void casef (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_caseSelectException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 621, 9, "casef", "case selector out of range");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_caseSelectException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 621, 9, "casef", "case selector out of range");
+ }
+
+
+@@ -699,7 +719,7 @@ static void casef (void * a)
+
+ static void invalidloc (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_invalidLocation), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 633, 9, "invalidloc", "invalid address referenced");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_invalidLocation)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 633, 9, "invalidloc", "invalid address referenced");
+ }
+
+
+@@ -709,7 +729,7 @@ static void invalidloc (void * a)
+
+ static void function (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_functionException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 645, 9, "function", "... function ... "); /* --fixme-- what has happened ? */
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_functionException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 645, 9, "function", "... function ... "); /* --fixme-- what has happened ? */
+ }
+
+
+@@ -719,7 +739,7 @@ static void function (void * a)
+
+ static void wholevalue (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 657, 9, "wholevalue", "illegal whole value exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 657, 9, "wholevalue", "illegal whole value exception");
+ }
+
+
+@@ -729,7 +749,7 @@ static void wholevalue (void * a)
+
+ static void wholediv (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_wholeDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 669, 9, "wholediv", "illegal whole value exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_wholeDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 669, 9, "wholediv", "illegal whole value exception");
+ }
+
+
+@@ -739,7 +759,7 @@ static void wholediv (void * a)
+
+ static void realvalue (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 681, 9, "realvalue", "illegal real value exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 681, 9, "realvalue", "illegal real value exception");
+ }
+
+
+@@ -749,7 +769,7 @@ static void realvalue (void * a)
+
+ static void realdiv (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_realDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 693, 9, "realdiv", "real number division by zero exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_realDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 693, 9, "realdiv", "real number division by zero exception");
+ }
+
+
+@@ -759,7 +779,7 @@ static void realdiv (void * a)
+
+ static void complexvalue (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_complexValueException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 705, 9, "complexvalue", "illegal complex value exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_complexValueException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 705, 9, "complexvalue", "illegal complex value exception");
+ }
+
+
+@@ -769,7 +789,7 @@ static void complexvalue (void * a)
+
+ static void complexdiv (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_complexDivException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 717, 9, "complexdiv", "complex number division by zero exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_complexDivException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 717, 9, "complexdiv", "complex number division by zero exception");
+ }
+
+
+@@ -779,7 +799,7 @@ static void complexdiv (void * a)
+
+ static void protection (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_protException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 729, 9, "protection", "protection exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_protException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 729, 9, "protection", "protection exception");
+ }
+
+
+@@ -789,7 +809,7 @@ static void protection (void * a)
+
+ static void systemf (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_sysException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 741, 9, "systemf", "system exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_sysException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 741, 9, "systemf", "system exception");
+ }
+
+
+@@ -799,7 +819,7 @@ static void systemf (void * a)
+
+ static void coroutine (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_coException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 753, 9, "coroutine", "coroutine exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_coException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 753, 9, "coroutine", "coroutine exception");
+ }
+
+
+@@ -809,7 +829,7 @@ static void coroutine (void * a)
+
+ static void exception (void * a)
+ {
+- RTExceptions_Raise ((unsigned int) (M2EXCEPTION_exException), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 765, 9, "exception", "exception exception");
++ RTExceptions_Raise ( ((unsigned int) (M2EXCEPTION_exException)), "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 765, 9, "exception", "exception exception");
+ }
+
+
+@@ -839,7 +859,9 @@ static void TidyUp (void)
+ RTExceptions_EHBlock e;
+
+ if (currentEHB != NULL)
+- currentEHB = RTExceptions_KillExceptionBlock (currentEHB);
++ {
++ currentEHB = RTExceptions_KillExceptionBlock (currentEHB);
++ }
+ while (freeHandler != NULL)
+ {
+ f = freeHandler;
+@@ -978,7 +1000,9 @@ void RTExceptions_PushHandler (RTExceptions_EHBlock e, unsigned int number, RTEx
+
+ h = findHandler (e, number);
+ if (h == NULL)
+- i = InitHandler (NewHandler (), (Handler) NULL, (Handler) NULL, (Handler) NULL, number, p);
++ {
++ i = InitHandler (NewHandler (), (Handler) NULL, (Handler) NULL, (Handler) NULL, number, p);
++ }
+ else
+ {
+ /* remove, h, */
+@@ -1007,7 +1031,9 @@ void RTExceptions_PopHandler (RTExceptions_EHBlock e, unsigned int number)
+ /* remove, h, */
+ SubHandler (h);
+ if (h->stack != NULL)
+- AddHandler (e, h->stack);
++ {
++ AddHandler (e, h->stack);
++ }
+ h = KillHandler (h);
+ }
+ }
+@@ -1043,7 +1069,9 @@ void RTExceptions_BaseExceptionsThrow (void)
+ M2EXCEPTION_M2Exceptions i;
+
+ for (i=M2EXCEPTION_indexException; i<=M2EXCEPTION_exException; i++)
+- RTExceptions_PushHandler (RTExceptions_GetExceptionBlock (), (unsigned int ) (i), (RTExceptions_ProcedureHandler) {(RTExceptions_ProcedureHandler_t) DoThrow});
++ {
++ RTExceptions_PushHandler (RTExceptions_GetExceptionBlock (), (unsigned int ) (i), (RTExceptions_ProcedureHandler) {(RTExceptions_ProcedureHandler_t) DoThrow});
++ }
+ }
+
+
+@@ -1095,9 +1123,13 @@ void RTExceptions_SwitchExceptionState (unsigned int *from, unsigned int to)
+ RTExceptions_EHBlock RTExceptions_GetBaseExceptionBlock (void)
+ {
+ if (currentEHB == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 53, 583, (char *) "GetBaseExceptionBlock", 21, (char *) "currentEHB has not been initialized yet", 39);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.mod", 53, 583, (char *) "GetBaseExceptionBlock", 21, (char *) "currentEHB has not been initialized yet", 39);
++ }
+ else
+- return currentEHB;
++ {
++ return currentEHB;
++ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/gm2-libs/RTExceptions.def", 19, 1);
+ }
+
+--- a/src/gcc/gm2/mc-boot/GRTint.c
++++ b/src/gcc/gm2/mc-boot/GRTint.c
+@@ -223,9 +223,13 @@ static void Init (void);
+ static int Max (int i, int j)
+ {
+ if (i > j)
+- return i;
++ {
++ return i;
++ }
+ else
+- return j;
++ {
++ return j;
++ }
+ }
+
+ static int Min (int i, int j)
+@@ -234,9 +238,13 @@ static int Min (int i, int j)
+ Max - returns the minimum: i or j.
+ */
+ if (i < j)
+- return i;
++ {
++ return i;
++ }
+ else
+- return j;
++ {
++ return j;
++ }
+ }
+
+
+@@ -253,7 +261,9 @@ static Vector FindVector (int fd, VectorType t)
+ while (v != NULL)
+ {
+ if ((v->type == t) && (v->File == fd))
+- return v;
++ {
++ return v;
++ }
+ v = v->exists;
+ }
+ return NULL;
+@@ -270,7 +280,9 @@ static Vector FindVectorNo (unsigned int vec)
+
+ v = Exists;
+ while ((v != NULL) && (v->no != vec))
+- v = v->exists;
++ {
++ v = v->exists;
++ }
+ return v;
+ }
+
+@@ -288,9 +300,13 @@ static Vector FindPendingVector (unsigned int vec)
+ {
+ v = Pending.array[i-(COROUTINES_UnassignedPriority)];
+ while ((v != NULL) && (v->no != vec))
+- v = v->pending;
++ {
++ v = v->pending;
++ }
+ if ((v != NULL) && (v->no == vec))
+- return v;
++ {
++ return v;
++ }
+ }
+ return NULL;
+ }
+@@ -332,9 +348,12 @@ static void DumpPendingQueue (void)
+ while (v != NULL)
+ {
+ if ((v->type == input) || (v->type == output))
+- libc_printf ((char *) "(fd=%d) (vec=%d)", 16, v->File, v->no);
++ {
++ libc_printf ((char *) "(fd=%d) (vec=%d)", 16, v->File, v->no);
++ }
+ else if (v->type == time)
+ {
++ /* avoid dangling else. */
+ Selective_GetTime (v->rel, &s, &m);
+ Assertion_Assert (m < Microseconds);
+ libc_printf ((char *) "time (%d.%6d secs)\\n", 20, s, m);
+@@ -449,7 +468,9 @@ static void Init (void)
+
+ Exists = NULL;
+ for (p=COROUTINES_UnassignedPriority; p<=7; p++)
+- Pending.array[p-(COROUTINES_UnassignedPriority)] = NULL;
++ {
++ Pending.array[p-(COROUTINES_UnassignedPriority)] = NULL;
++ }
+ }
+
+
+@@ -463,7 +484,9 @@ unsigned int RTint_InitInputVector (int fd, unsigned int pri)
+ Vector v;
+
+ if (Debugging)
+- libc_printf ((char *) "InitInputVector fd = %d priority = %d\\n", 39, fd, pri);
++ {
++ libc_printf ((char *) "InitInputVector fd = %d priority = %d\\n", 39, fd, pri);
++ }
+ v = FindVector (fd, (VectorType) input);
+ if (v == NULL)
+ {
+@@ -480,7 +503,9 @@ unsigned int RTint_InitInputVector (int fd, unsigned int pri)
+ return VecNo;
+ }
+ else
+- return v->no;
++ {
++ return v->no;
++ }
+ }
+
+
+@@ -509,7 +534,9 @@ unsigned int RTint_InitOutputVector (int fd, unsigned int pri)
+ return VecNo;
+ }
+ else
+- return v->no;
++ {
++ return v->no;
++ }
+ }
+
+
+@@ -551,9 +578,13 @@ void RTint_ReArmTimeVector (unsigned int vec, unsigned int micro, unsigned int s
+ Assertion_Assert (micro < Microseconds);
+ v = FindVectorNo (vec);
+ if (v == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 256, (char *) "ReArmTimeVector", 15, (char *) "cannot find vector supplied", 27);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 256, (char *) "ReArmTimeVector", 15, (char *) "cannot find vector supplied", 27);
++ }
+ else
+- Selective_SetTime (v->rel, secs+DebugTime, micro);
++ {
++ Selective_SetTime (v->rel, secs+DebugTime, micro);
++ }
+ }
+
+
+@@ -570,7 +601,9 @@ void RTint_GetTimeVector (unsigned int vec, unsigned int *micro, unsigned int *s
+
+ v = FindVectorNo (vec);
+ if (v == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 280, (char *) "GetTimeVector", 13, (char *) "cannot find vector supplied", 27);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 280, (char *) "GetTimeVector", 13, (char *) "cannot find vector supplied", 27);
++ }
+ else
+ {
+ Selective_GetTime (v->rel, secs, micro);
+@@ -592,7 +625,9 @@ void * RTint_AttachVector (unsigned int vec, void * p)
+
+ v = FindVectorNo (vec);
+ if (v == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 305, (char *) "AttachVector", 12, (char *) "cannot find vector supplied", 27);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 305, (char *) "AttachVector", 12, (char *) "cannot find vector supplied", 27);
++ }
+ else
+ {
+ l = v->arg;
+@@ -621,7 +656,9 @@ void RTint_IncludeVector (unsigned int vec)
+ /* avoid dangling else. */
+ v = FindVectorNo (vec);
+ if (v == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 331, (char *) "IncludeVector", 13, (char *) "cannot find vector supplied", 27);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 331, (char *) "IncludeVector", 13, (char *) "cannot find vector supplied", 27);
++ }
+ else
+ {
+ /* printf('including vector %d (fd = %d)
+@@ -644,7 +681,9 @@ void RTint_IncludeVector (unsigned int vec)
+ else
+ {
+ if (Debugging)
+- libc_printf ((char *) "odd vector %d (fd %d) is already attached to the pending queue\\n", 64, vec, v->File);
++ {
++ libc_printf ((char *) "odd vector %d (fd %d) is already attached to the pending queue\\n", 64, vec, v->File);
++ }
+ stop ();
+ }
+ }
+@@ -662,22 +701,30 @@ void RTint_ExcludeVector (unsigned int vec)
+
+ v = FindPendingVector (vec);
+ if (v == NULL)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 372, (char *) "ExcludeVector", 13, (char *) "cannot find pending vector supplied", 35);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 372, (char *) "ExcludeVector", 13, (char *) "cannot find pending vector supplied", 35);
++ }
+ else
+ {
+ /* printf('excluding vector %d
+ ', vec) ; */
+ if (Pending.array[v->priority-(COROUTINES_UnassignedPriority)] == v)
+- Pending.array[v->priority-(COROUTINES_UnassignedPriority)] = Pending.array[v->priority-(COROUTINES_UnassignedPriority)]->pending;
++ {
++ Pending.array[v->priority-(COROUTINES_UnassignedPriority)] = Pending.array[v->priority-(COROUTINES_UnassignedPriority)]->pending;
++ }
+ else
+ {
+ u = Pending.array[v->priority-(COROUTINES_UnassignedPriority)];
+ while (u->pending != v)
+- u = u->pending;
++ {
++ u = u->pending;
++ }
+ u->pending = v->pending;
+ }
+ if (v->type == time)
+- v->queued = FALSE;
++ {
++ v->queued = FALSE;
++ }
+ }
+ }
+
+@@ -713,7 +760,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ if (pri < (7))
+ {
+ if (Debugging)
+- DumpPendingQueue ();
++ {
++ DumpPendingQueue ();
++ }
+ maxFd = -1;
+ t = NULL;
+ i = NULL;
+@@ -742,7 +791,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ Selective_GetTime (v->abs_, &s, &m);
+ Assertion_Assert (m < Microseconds);
+ if (Debugging)
+- libc_printf ((char *) "shortest delay is %d.%d\\n", 25, s, m);
++ {
++ libc_printf ((char *) "shortest delay is %d.%d\\n", 25, s, m);
++ }
+ Selective_SetTime (t, s, m);
+ found = TRUE;
+ }
+@@ -757,9 +808,13 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ p -= 1;
+ }
+ if (! untilInterrupt)
+- Selective_SetTime (t, 0, 0);
++ {
++ Selective_SetTime (t, 0, 0);
++ }
+ if (((untilInterrupt && (i == NULL)) && (o == NULL)) && ! found)
+- M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 592, (char *) "Listen", 6, (char *) "deadlock found, no more processes to run and no interrupts active", 65);
++ {
++ M2RTS_Halt ((char *) "../../gcc-versionno/gcc/gm2/gm2-libs/RTint.mod", 46, 592, (char *) "Listen", 6, (char *) "deadlock found, no more processes to run and no interrupts active", 65);
++ }
+ /* printf('}
+ ') ; */
+ if (((! found && (maxFd == -1)) && (i == NULL)) && (o == NULL))
+@@ -778,7 +833,9 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ SubTime (&s, &m, t, b4);
+ Selective_SetTime (t, s, m);
+ if (Debugging)
+- libc_printf ((char *) "select waiting for %u.%u seconds\\n", 34, s, m);
++ {
++ libc_printf ((char *) "select waiting for %u.%u seconds\\n", 34, s, m);
++ }
+ do {
+ r = pth_pth_select (maxFd+1, (void *) i, (void *) o, NULL, (void *) t);
+ if (r == -1)
+@@ -786,15 +843,23 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ libc_perror ((char *) "pth_select", 10);
+ r = pth_pth_select (maxFd+1, (void *) i, (void *) o, NULL, NULL);
+ if (r == -1)
+- libc_perror ((char *) "pth_select timeout argument is faulty", 37);
++ {
++ libc_perror ((char *) "pth_select timeout argument is faulty", 37);
++ }
+ r = pth_pth_select (maxFd+1, (void *) i, NULL, NULL, (void *) t);
+ if (r == -1)
+- libc_perror ((char *) "pth_select output fd argument is faulty", 39);
++ {
++ libc_perror ((char *) "pth_select output fd argument is faulty", 39);
++ }
+ r = pth_pth_select (maxFd+1, NULL, (void *) o, NULL, (void *) t);
+ if (r == -1)
+- libc_perror ((char *) "pth_select input fd argument is faulty", 38);
++ {
++ libc_perror ((char *) "pth_select input fd argument is faulty", 38);
++ }
+ else
+- libc_perror ((char *) "pth_select maxFD+1 argument is faulty", 37);
++ {
++ libc_perror ((char *) "pth_select maxFD+1 argument is faulty", 37);
++ }
+ }
+ } while (! (r != -1));
+ }
+@@ -855,7 +920,10 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ (*call.proc) (v->no, v->priority, v->arg);
+ }
+ else if (Debugging)
+- libc_printf ((char *) "must wait longer as time has not expired\\n", 42);
++ {
++ /* avoid dangling else. */
++ libc_printf ((char *) "must wait longer as time has not expired\\n", 42);
++ }
+ }
+ break;
+
+@@ -868,15 +936,25 @@ void RTint_Listen (unsigned int untilInterrupt, RTint_DespatchVector call, unsig
+ p -= 1;
+ }
+ if (t != NULL)
+- t = Selective_KillTime (t);
++ {
++ t = Selective_KillTime (t);
++ }
+ if (b4 != NULL)
+- t = Selective_KillTime (b4);
++ {
++ t = Selective_KillTime (b4);
++ }
+ if (after != NULL)
+- t = Selective_KillTime (after);
++ {
++ t = Selective_KillTime (after);
++ }
+ if (i != NULL)
+- i = Selective_KillSet (i);
++ {
++ i = Selective_KillSet (i);
++ }
+ if (o != NULL)
+- o = Selective_KillSet (o);
++ {
++ o = Selective_KillSet (o);
++ }
+ }
+ }
+
+--- a/src/gcc/gm2/mc-boot/GSArgs.c
++++ b/src/gcc/gm2/mc-boot/GSArgs.c
+@@ -72,7 +72,7 @@ unsigned int SArgs_GetArg (DynamicStrings_String *s, unsigned int i)
+
+ if (i < UnixArgs_ArgC)
+ {
+- ppc = (void *) (UnixArgs_ArgV+(i*(sizeof (PtrToChar))));
++ ppc = (void *) (UnixArgs_ArgV+(i*sizeof (PtrToChar)));
+ (*s) = DynamicStrings_InitStringCharStar ((void *) (*ppc));
+ return TRUE;
+ }
+--- a/src/gcc/gm2/mc-boot/GSFIO.c
++++ b/src/gcc/gm2/mc-boot/GSFIO.c
+@@ -146,7 +146,9 @@ DynamicStrings_String SFIO_WriteS (FIO_File file, DynamicStrings_String s)
+ unsigned int nBytes;
+
+ if (s != NULL)
+- nBytes = FIO_WriteNBytes (file, DynamicStrings_Length (s), DynamicStrings_string (s));
++ {
++ nBytes = FIO_WriteNBytes (file, DynamicStrings_Length (s), DynamicStrings_string (s));
++ }
+ return s;
+ }
+
+@@ -165,11 +167,15 @@ DynamicStrings_String SFIO_ReadS (FIO_File file)
+
+ s = DynamicStrings_InitString ((char *) "", 0);
+ while (((! (FIO_EOLN (file))) && (! (FIO_EOF (file)))) && (FIO_IsNoError (file)))
+- s = DynamicStrings_ConCatChar (s, FIO_ReadChar (file));
++ {
++ s = DynamicStrings_ConCatChar (s, FIO_ReadChar (file));
++ }
+ if (FIO_EOLN (file))
+- /* consume nl */
+- if ((FIO_ReadChar (file)) == ASCII_nul)
+- {} /* empty. */
++ {
++ /* consume nl */
++ if ((FIO_ReadChar (file)) == ASCII_nul)
++ {} /* empty. */
++ }
+ return s;
+ }
+
+--- a/src/gcc/gm2/mc-boot/GStdIO.c
++++ b/src/gcc/gm2/mc-boot/GStdIO.c
+@@ -134,7 +134,9 @@ void StdIO_Write (char ch)
+ void StdIO_PushOutput (StdIO_ProcWrite p)
+ {
+ if (StackWPtr == MaxStack)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ StackWPtr += 1;
+@@ -150,9 +152,13 @@ void StdIO_PushOutput (StdIO_ProcWrite p)
+ void StdIO_PopOutput (void)
+ {
+ if (StackWPtr == 1)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- StackWPtr -= 1;
++ {
++ StackWPtr -= 1;
++ }
+ }
+
+
+@@ -163,9 +169,13 @@ void StdIO_PopOutput (void)
+ StdIO_ProcWrite StdIO_GetCurrentOutput (void)
+ {
+ if (StackWPtr > 0)
+- return StackW.array[StackWPtr];
++ {
++ return StackW.array[StackWPtr];
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -178,7 +188,9 @@ StdIO_ProcWrite StdIO_GetCurrentOutput (void)
+ void StdIO_PushInput (StdIO_ProcRead p)
+ {
+ if (StackRPtr == MaxStack)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ StackRPtr += 1;
+@@ -194,9 +206,13 @@ void StdIO_PushInput (StdIO_ProcRead p)
+ void StdIO_PopInput (void)
+ {
+ if (StackRPtr == 1)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- StackRPtr -= 1;
++ {
++ StackRPtr -= 1;
++ }
+ }
+
+
+@@ -207,9 +223,13 @@ void StdIO_PopInput (void)
+ StdIO_ProcRead StdIO_GetCurrentInput (void)
+ {
+ if (StackRPtr > 0)
+- return StackR.array[StackRPtr];
++ {
++ return StackR.array[StackRPtr];
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+ void _M2_StdIO_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GStrCase.c
++++ b/src/gcc/gm2/mc-boot/GStrCase.c
+@@ -84,7 +84,9 @@ void StrCase_StrToUpperCase (char *a_, unsigned int _a_high, char *b, unsigned i
+ i += 1;
+ }
+ if (i < highb)
+- b[i] = ASCII_nul;
++ {
++ b[i] = ASCII_nul;
++ }
+ }
+
+
+@@ -112,7 +114,9 @@ void StrCase_StrToLowerCase (char *a_, unsigned int _a_high, char *b, unsigned i
+ i += 1;
+ }
+ if (i < highb)
+- b[i] = ASCII_nul;
++ {
++ b[i] = ASCII_nul;
++ }
+ }
+
+
+@@ -125,7 +129,9 @@ void StrCase_StrToLowerCase (char *a_, unsigned int _a_high, char *b, unsigned i
+ char StrCase_Cap (char ch)
+ {
+ if ((ch >= 'a') && (ch <= 'z'))
+- ch = (char) ((((unsigned int) (ch))-((unsigned int) ('a')))+((unsigned int) ('A')));
++ {
++ ch = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('a')))+ ((unsigned int) ('A'))));
++ }
+ return ch;
+ }
+
+@@ -139,7 +145,9 @@ char StrCase_Cap (char ch)
+ char StrCase_Lower (char ch)
+ {
+ if ((ch >= 'A') && (ch <= 'Z'))
+- ch = (char) ((((unsigned int) (ch))-((unsigned int) ('A')))+((unsigned int) ('a')));
++ {
++ ch = ((char) (( ((unsigned int) (ch))- ((unsigned int) ('A')))+ ((unsigned int) ('a'))));
++ }
+ return ch;
+ }
+
+--- a/src/gcc/gm2/mc-boot/GStrIO.c
++++ b/src/gcc/gm2/mc-boot/GStrIO.c
+@@ -98,7 +98,9 @@ static void Erase (void)
+ static void Echo (char ch)
+ {
+ if (IsATTY)
+- StdIO_Write (ch);
++ {
++ StdIO_Write (ch);
++ }
+ }
+
+
+@@ -141,32 +143,48 @@ void StrIO_ReadString (char *a, unsigned int _a_high)
+ do {
+ StdIO_Read (&ch);
+ if ((ch == ASCII_del) || (ch == ASCII_bs))
+- if (n == 0)
+- StdIO_Write (ASCII_bel);
+- else
+- {
+- Erase ();
+- n -= 1;
+- }
++ {
++ if (n == 0)
++ {
++ StdIO_Write (ASCII_bel);
++ }
++ else
++ {
++ Erase ();
++ n -= 1;
++ }
++ }
+ else if (ch == ASCII_nak)
+- while (n > 0)
+- {
+- Erase ();
+- n -= 1;
+- }
++ {
++ /* avoid dangling else. */
++ while (n > 0)
++ {
++ Erase ();
++ n -= 1;
++ }
++ }
+ else if (ch == ASCII_etb)
+- if (n == 0)
+- Echo (ASCII_bel);
+- else if (AlphaNum (a[n-1]))
+- do {
+- Erase ();
+- n -= 1;
+- } while (! ((n == 0) || (! (AlphaNum (a[n-1])))));
+- else
+- {
+- Erase ();
+- n -= 1;
+- }
++ {
++ /* avoid dangling else. */
++ if (n == 0)
++ {
++ Echo (ASCII_bel);
++ }
++ else if (AlphaNum (a[n-1]))
++ {
++ /* avoid dangling else. */
++ do {
++ Erase ();
++ n -= 1;
++ } while (! ((n == 0) || (! (AlphaNum (a[n-1])))));
++ }
++ else
++ {
++ /* avoid dangling else. */
++ Erase ();
++ n -= 1;
++ }
++ }
+ else if (n <= high)
+ {
+ /* avoid dangling else. */
+@@ -177,28 +195,38 @@ void StrIO_ReadString (char *a, unsigned int _a_high)
+ }
+ else if (ch == ASCII_ff)
+ {
++ /* avoid dangling else. */
+ a[0] = ch;
+ if (high > 0)
+- a[1] = ASCII_nul;
++ {
++ a[1] = ASCII_nul;
++ }
+ ch = ASCII_cr;
+ }
+ else if (ch >= ' ')
+ {
++ /* avoid dangling else. */
+ Echo (ch);
+ a[n] = ch;
+ n += 1;
+ }
+ else if (ch == ASCII_eof)
+ {
++ /* avoid dangling else. */
+ a[n] = ch;
+ n += 1;
+ ch = ASCII_cr;
+ if (n <= high)
+- a[n] = ASCII_nul;
++ {
++ a[n] = ASCII_nul;
++ }
+ }
+ }
+ else if (ch != ASCII_cr)
+- Echo (ASCII_bel);
++ {
++ /* avoid dangling else. */
++ Echo (ASCII_bel);
++ }
+ } while (! ((ch == ASCII_cr) || (ch == ASCII_lf)));
+ }
+
+--- a/src/gcc/gm2/mc-boot/GStrLib.c
++++ b/src/gcc/gm2/mc-boot/GStrLib.c
+@@ -111,7 +111,9 @@ void StrLib_StrConCat (char *a_, unsigned int _a_high, char *b_, unsigned int _b
+ j += 1;
+ }
+ if (i <= Highc)
+- c[i] = ASCII_nul;
++ {
++ c[i] = ASCII_nul;
++ }
+ }
+
+
+@@ -138,9 +140,14 @@ unsigned int StrLib_StrLess (char *a_, unsigned int _a_high, char *b_, unsigned
+ while ((i < Higha) && (i < Highb))
+ {
+ if (a[i] < b[i])
+- return TRUE;
++ {
++ return TRUE;
++ }
+ else if (a[i] > b[i])
+- return FALSE;
++ {
++ /* avoid dangling else. */
++ return FALSE;
++ }
+ /* must be equal, move on to next character */
+ i += 1;
+ }
+@@ -165,7 +172,9 @@ unsigned int StrLib_StrEqual (char *a_, unsigned int _a_high, char *b_, unsigned
+ while ((((i <= higha) && (i <= highb)) && (a[i] != ASCII_nul)) && (b[i] != ASCII_nul))
+ {
+ if (a[i] != b[i])
+- return FALSE;
++ {
++ return FALSE;
++ }
+ i += 1;
+ }
+ return ! (((i <= higha) && (a[i] != ASCII_nul)) || ((i <= highb) && (b[i] != ASCII_nul)));
+@@ -183,7 +192,9 @@ unsigned int StrLib_StrLen (char *a_, unsigned int _a_high)
+ Len = 0;
+ High = _a_high;
+ while ((Len <= High) && (a[Len] != ASCII_nul))
+- Len += 1;
++ {
++ Len += 1;
++ }
+ return Len;
+ }
+
+@@ -206,7 +217,9 @@ void StrLib_StrCopy (char *a_, unsigned int _a_high, char *b, unsigned int _b_hi
+ n += 1;
+ }
+ if (n <= Highb)
+- b[n] = ASCII_nul;
++ {
++ b[n] = ASCII_nul;
++ }
+ }
+
+
+@@ -231,16 +244,24 @@ unsigned int StrLib_IsSubString (char *a_, unsigned int _a_high, char *b_, unsig
+ LengthB = StrLib_StrLen ((char *) b, _b_high);
+ i = 0;
+ if (LengthA > LengthB)
+- while (i <= (LengthA-LengthB))
+- {
+- j = 0;
+- while ((j < LengthB) && (a[i+j] == b[j]))
+- j += 1;
+- if (j == LengthB)
+- return TRUE;
+- else
+- i += 1;
+- }
++ {
++ while (i <= (LengthA-LengthB))
++ {
++ j = 0;
++ while ((j < LengthB) && (a[i+j] == b[j]))
++ {
++ j += 1;
++ }
++ if (j == LengthB)
++ {
++ return TRUE;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
++ }
+ return FALSE;
+ }
+
+@@ -266,7 +287,9 @@ void StrLib_StrRemoveWhitePrefix (char *a_, unsigned int _a_high, char *b, unsig
+ higha = StrLib_StrLen ((char *) a, _a_high);
+ highb = _b_high;
+ while ((i < higha) && (IsWhite (a[i])))
+- i += 1;
++ {
++ i += 1;
++ }
+ while ((i < higha) && (j <= highb))
+ {
+ b[j] = a[i];
+@@ -274,7 +297,9 @@ void StrLib_StrRemoveWhitePrefix (char *a_, unsigned int _a_high, char *b, unsig
+ j += 1;
+ }
+ if (j <= highb)
+- b[j] = ASCII_nul;
++ {
++ b[j] = ASCII_nul;
++ }
+ }
+
+ void _M2_StrLib_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GStringConvert.c
++++ b/src/gcc/gm2/mc-boot/GStringConvert.c
+@@ -438,7 +438,9 @@ static void Assert (unsigned int b, char *file_, unsigned int _file_high, unsign
+ memcpy (func, func_, _func_high+1);
+
+ if (! b)
+- M2RTS_ErrorMessage ((char *) "assert failed", 13, (char *) file, _file_high, line, (char *) func, _func_high);
++ {
++ M2RTS_ErrorMessage ((char *) "assert failed", 13, (char *) file, _file_high, line, (char *) func, _func_high);
++ }
+ }
+
+
+@@ -449,9 +451,13 @@ static void Assert (unsigned int b, char *file_, unsigned int _file_high, unsign
+ static unsigned int Max (unsigned int a, unsigned int b)
+ {
+ if (a > b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -462,9 +468,13 @@ static unsigned int Max (unsigned int a, unsigned int b)
+ static unsigned int Min (unsigned int a, unsigned int b)
+ {
+ if (a < b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -475,9 +485,13 @@ static unsigned int Min (unsigned int a, unsigned int b)
+ static long unsigned int LongMin (long unsigned int a, long unsigned int b)
+ {
+ if (a < b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -498,13 +512,15 @@ static unsigned int IsDigit (char ch)
+
+ static unsigned int IsDecimalDigitValid (char ch, unsigned int base, unsigned int *c)
+ {
+- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base))
++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base))
+ {
+- (*c) = ((*c)*base)+(((unsigned int) (ch))-((unsigned int) ('0')));
++ (*c) = ((*c)*base)+( ((unsigned int) (ch))- ((unsigned int) ('0')));
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -515,18 +531,22 @@ static unsigned int IsDecimalDigitValid (char ch, unsigned int base, unsigned in
+
+ static unsigned int IsHexidecimalDigitValid (char ch, unsigned int base, unsigned int *c)
+ {
+- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base))
++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base))
+ {
+- (*c) = ((*c)*base)+((((unsigned int) (ch))-((unsigned int) ('a')))+10);
++ (*c) = ((*c)*base)+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10);
+ return TRUE;
+ }
+- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base))
++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base))
+ {
+- (*c) = ((*c)*base)+((((unsigned int) (ch))-((unsigned int) ('A')))+10);
++ /* avoid dangling else. */
++ (*c) = ((*c)*base)+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ /* avoid dangling else. */
++ return FALSE;
++ }
+ }
+
+
+@@ -537,13 +557,15 @@ static unsigned int IsHexidecimalDigitValid (char ch, unsigned int base, unsigne
+
+ static unsigned int IsDecimalDigitValidLong (char ch, unsigned int base, long unsigned int *c)
+ {
+- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base))
++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base))
+ {
+- (*c) = (*c)*((long unsigned int ) (base+(((unsigned int) (ch))-((unsigned int) ('0')))));
++ (*c) = (*c)*((long unsigned int ) (base+( ((unsigned int) (ch))- ((unsigned int) ('0')))));
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -554,18 +576,22 @@ static unsigned int IsDecimalDigitValidLong (char ch, unsigned int base, long un
+
+ static unsigned int IsHexidecimalDigitValidLong (char ch, unsigned int base, long unsigned int *c)
+ {
+- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base))
++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base))
+ {
+- (*c) = (*c)*((long unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('a')))+10)));
++ (*c) = (*c)*((long unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10)));
+ return TRUE;
+ }
+- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base))
++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base))
+ {
+- (*c) = (*c)*((long unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('A')))+10)));
++ /* avoid dangling else. */
++ (*c) = (*c)*((long unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10)));
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ /* avoid dangling else. */
++ return FALSE;
++ }
+ }
+
+
+@@ -576,13 +602,15 @@ static unsigned int IsHexidecimalDigitValidLong (char ch, unsigned int base, lon
+
+ static unsigned int IsDecimalDigitValidShort (char ch, unsigned int base, short unsigned int *c)
+ {
+- if ((IsDigit (ch)) && ((((unsigned int) (ch))-((unsigned int) ('0'))) < base))
++ if ((IsDigit (ch)) && (( ((unsigned int) (ch))- ((unsigned int) ('0'))) < base))
+ {
+- (*c) = (*c)*((short unsigned int ) (base+(((unsigned int) (ch))-((unsigned int) ('0')))));
++ (*c) = (*c)*((short unsigned int ) (base+( ((unsigned int) (ch))- ((unsigned int) ('0')))));
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -593,18 +621,22 @@ static unsigned int IsDecimalDigitValidShort (char ch, unsigned int base, short
+
+ static unsigned int IsHexidecimalDigitValidShort (char ch, unsigned int base, short unsigned int *c)
+ {
+- if (((ch >= 'a') && (ch <= 'f')) && (((((unsigned int) (ch))-((unsigned int) ('a')))+10) < base))
++ if (((ch >= 'a') && (ch <= 'f')) && ((( ((unsigned int) (ch))- ((unsigned int) ('a')))+10) < base))
+ {
+- (*c) = (*c)*((short unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('a')))+10)));
++ (*c) = (*c)*((short unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('a')))+10)));
+ return TRUE;
+ }
+- else if (((ch >= 'A') && (ch <= 'F')) && (((((unsigned int) (ch))-((unsigned int) ('F')))+10) < base))
++ else if (((ch >= 'A') && (ch <= 'F')) && ((( ((unsigned int) (ch))- ((unsigned int) ('F')))+10) < base))
+ {
+- (*c) = (*c)*((short unsigned int ) (base+((((unsigned int) (ch))-((unsigned int) ('A')))+10)));
++ /* avoid dangling else. */
++ (*c) = (*c)*((short unsigned int ) (base+(( ((unsigned int) (ch))- ((unsigned int) ('A')))+10)));
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ /* avoid dangling else. */
++ return FALSE;
++ }
+ }
+
+
+@@ -618,17 +650,21 @@ static long double ToThePower10 (long double v, int power)
+
+ i = 0;
+ if (power > 0)
+- while (i < power)
+- {
+- v = v*10.0;
+- i += 1;
+- }
++ {
++ while (i < power)
++ {
++ v = v*10.0;
++ i += 1;
++ }
++ }
+ else
+- while (i > power)
+- {
+- v = v/10.0;
+- i -= 1;
+- }
++ {
++ while (i > power)
++ {
++ v = v/10.0;
++ i -= 1;
++ }
++ }
+ return v;
+ }
+
+@@ -700,18 +736,28 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
+ /* remove '.' */
+ point = DynamicStrings_Index (s, '.', 0);
+ if (point == 0)
+- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0);
++ {
++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0);
++ }
+ else if (point < l)
+- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0)));
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0)));
++ }
+ else
+- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point);
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point);
++ }
+ l = DynamicStrings_Length (s);
+ i = 0;
+ if (l > 0)
+ {
+ /* skip over leading zeros */
+ while ((i < l) && ((DynamicStrings_char (s, i)) == '0'))
+- i += 1;
++ {
++ i += 1;
++ }
+ /* was the string full of zeros? */
+ if ((i == l) && ((DynamicStrings_char (s, i-1)) == '0'))
+ {
+@@ -736,16 +782,21 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
+ hundreths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+3);
+ s = t;
+ if ((StringConvert_stoc (hundreths)) >= 50)
+- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ {
++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ }
+ hundreths = DynamicStrings_KillString (hundreths);
+ }
+ else if ((i+2) <= l)
+ {
++ /* avoid dangling else. */
+ t = DynamicStrings_Dup (s);
+ tenths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+2);
+ s = t;
+ if ((StringConvert_stoc (tenths)) >= 5)
+- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ {
++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ }
+ tenths = DynamicStrings_KillString (tenths);
+ }
+ /* check whether we need to remove the leading zero */
+@@ -760,16 +811,22 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i);
+ l = DynamicStrings_Length (s);
+ if (l < point)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l));
++ }
+ }
+ /* re-insert the point */
+ if (point >= 0)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (point == 0)
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s));
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ }
+ }
+ return s;
+ }
+@@ -796,21 +853,35 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
+ /* remove '.' */
+ point = DynamicStrings_Index (s, '.', 0);
+ if (point >= 0)
+- if (point == 0)
+- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0);
+- else if (point < l)
+- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0)));
+- else
+- s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point);
++ {
++ if (point == 0)
++ {
++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 1, 0);
++ }
++ else if (point < l)
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point+1, 0)));
++ }
++ else
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point);
++ }
++ }
+ else
+- s = DynamicStrings_Dup (DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_Dup (DynamicStrings_Mark (s));
++ }
+ l = DynamicStrings_Length (s);
+ i = 0;
+ if (l > 0)
+ {
+ /* skip over leading zeros */
+ while ((i < l) && ((DynamicStrings_char (s, i)) == '0'))
+- i += 1;
++ {
++ i += 1;
++ }
+ /* was the string full of zeros? */
+ if ((i == l) && ((DynamicStrings_char (s, i-1)) == '0'))
+ {
+@@ -822,9 +893,13 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
+ /* add a leading zero in case we need to overflow the carry */
+ z = i; /* remember where we inserted zero */
+ if (z == 0) /* remember where we inserted zero */
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('0'), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('0'), DynamicStrings_Mark (s));
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), i, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), i, 0)));
++ }
+ n += 1; /* and increase the number of sig figs needed */
+ l = DynamicStrings_Length (s); /* and increase the number of sig figs needed */
+ while ((n > 1) && (i < l))
+@@ -838,44 +913,61 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
+ hundreths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+3);
+ s = t;
+ if ((StringConvert_stoc (hundreths)) >= 50)
+- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ {
++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ }
+ hundreths = DynamicStrings_KillString (hundreths);
+ }
+ else if ((i+2) <= l)
+ {
++ /* avoid dangling else. */
+ t = DynamicStrings_Dup (s);
+ tenths = DynamicStrings_Slice (DynamicStrings_Mark (s), i+1, i+2);
+ s = t;
+ if ((StringConvert_stoc (tenths)) >= 5)
+- s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ {
++ s = carryOne (DynamicStrings_Mark (s), (unsigned int) i);
++ }
+ tenths = DynamicStrings_KillString (tenths);
+ }
+ /* check whether we need to remove the leading zero */
+ if ((DynamicStrings_char (s, z)) == '0')
+ {
+ if (z == 0)
+- s = DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0);
++ {
++ s = DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0);
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, z), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, z), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0)));
++ }
+ l = DynamicStrings_Length (s);
+ }
+ else
+- point += 1;
++ {
++ point += 1;
++ }
+ if (i < l)
+ {
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i);
+ l = DynamicStrings_Length (s);
+ if (l < point)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), (unsigned int) point-l));
++ }
+ }
+ /* re-insert the point */
+ if (point >= 0)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (point == 0)
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('.'), DynamicStrings_Mark (s));
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ }
+ }
+ return s;
+ }
+@@ -888,26 +980,36 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
+ static DynamicStrings_String carryOne (DynamicStrings_String s, unsigned int i)
+ {
+ if (i >= 0)
+- if (IsDigit (DynamicStrings_char (s, (int) i)))
+- {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if ((DynamicStrings_char (s, (int) i)) == '9')
+- if (i == 0)
++ {
++ if (IsDigit (DynamicStrings_char (s, (int) i)))
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if ((DynamicStrings_char (s, (int) i)) == '9')
+ {
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('1'), DynamicStrings_Mark (s));
+- return s;
++ if (i == 0)
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('1'), DynamicStrings_Mark (s));
++ return s;
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
++ return carryOne (s, i-1);
++ }
+ }
+ else
+ {
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
+- return carryOne (s, i-1);
++ if (i == 0)
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ( ((char) ( ((unsigned int) (DynamicStrings_char (s, (int) i)))+1))), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), ((char) ( ((unsigned int) (DynamicStrings_char (s, (int) i)))+1))), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
++ }
+ }
+- else
+- if (i == 0)
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ((char) (((unsigned int) (DynamicStrings_char (s, (int) i)))+1)), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
+- else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, (int) i), (char) (((unsigned int) (DynamicStrings_char (s, (int) i)))+1)), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), (int) i+1, 0)));
+- }
++ }
++ }
+ return s;
+ }
+
+@@ -934,31 +1036,57 @@ DynamicStrings_String StringConvert_IntegerToString (int i, unsigned int width,
+ /* remember that -15 MOD 4 = 1 in Modula-2 */
+ c = ((unsigned int ) (abs (i+1)))+1;
+ if (width > 0)
+- return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower)));
++ {
++ return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower)));
++ }
+ else
+- return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower)));
++ {
++ return DynamicStrings_ConCat (StringConvert_IntegerToString (-((int ) (c / base)), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_IntegerToString ((int) c % base, 0, ' ', FALSE, base, lower)));
++ }
+ }
+ else
+- s = DynamicStrings_InitString ((char *) "-", 1);
++ {
++ s = DynamicStrings_InitString ((char *) "-", 1);
++ }
+ i = -i;
+ }
+ else
+- if (sign)
+- s = DynamicStrings_InitString ((char *) "+", 1);
+- else
+- s = DynamicStrings_InitString ((char *) "", 0);
++ {
++ if (sign)
++ {
++ s = DynamicStrings_InitString ((char *) "+", 1);
++ }
++ else
++ {
++ s = DynamicStrings_InitString ((char *) "", 0);
++ }
++ }
+ if (i > (((int ) (base))-1))
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) / base, 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) % base, 0, ' ', FALSE, base, lower)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) / base, 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_IntegerToString ((int) ((unsigned int ) (i)) % base, 0, ' ', FALSE, base, lower)));
++ }
+ else
+- if (i <= 9)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (((unsigned int ) (i))+((unsigned int) ('0'))))));
+- else
+- if (lower)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('a')))-10))));
++ {
++ if (i <= 9)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (i))+ ((unsigned int) ('0')))))));
++ }
+ else
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('A')))-10))));
++ {
++ if (lower)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('a')))-10)))));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('A')))-10)))));
++ }
++ }
++ }
+ if (width > (DynamicStrings_Length (s)))
+- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), DynamicStrings_Mark (s));
++ {
++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), DynamicStrings_Mark (s));
++ }
+ return s;
+ }
+
+@@ -978,17 +1106,31 @@ DynamicStrings_String StringConvert_CardinalToString (unsigned int c, unsigned i
+
+ s = DynamicStrings_InitString ((char *) "", 0);
+ if (c > (base-1))
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_CardinalToString (c / base, 0, ' ', base, lower))), DynamicStrings_Mark (StringConvert_CardinalToString (c % base, 0, ' ', base, lower)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_CardinalToString (c / base, 0, ' ', base, lower))), DynamicStrings_Mark (StringConvert_CardinalToString (c % base, 0, ' ', base, lower)));
++ }
+ else
+- if (c <= 9)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (c+((unsigned int) ('0'))))));
+- else
+- if (lower)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((c+((unsigned int) ('a')))-10))));
++ {
++ if (c <= 9)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (c+ ((unsigned int) ('0')))))));
++ }
+ else
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((c+((unsigned int) ('A')))-10))));
++ {
++ if (lower)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((c+ ((unsigned int) ('a')))-10)))));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((c+ ((unsigned int) ('A')))-10)))));
++ }
++ }
++ }
+ if (width > (DynamicStrings_Length (s)))
+- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ }
+ return s;
+ }
+
+@@ -1019,7 +1161,9 @@ int StringConvert_StringToInteger (DynamicStrings_String s, unsigned int base, u
+ while (((DynamicStrings_char (s, (int) n)) == '-') || ((DynamicStrings_char (s, (int) n)) == '+'))
+ {
+ if ((DynamicStrings_char (s, (int) n)) == '-')
+- negative = ! negative;
++ {
++ negative = ! negative;
++ }
+ n += 1;
+ }
+ while ((n < l) && ((IsDecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c))))
+@@ -1030,9 +1174,13 @@ int StringConvert_StringToInteger (DynamicStrings_String s, unsigned int base, u
+ }
+ s = DynamicStrings_KillString (s);
+ if (negative)
+- return -((int ) (Min (((unsigned int ) (INT_MAX))+1, c)));
++ {
++ return -((int ) (Min (((unsigned int ) (INT_MAX))+1, c)));
++ }
+ else
+- return (int ) (Min ((unsigned int) INT_MAX, c));
++ {
++ return (int ) (Min ((unsigned int) INT_MAX, c));
++ }
+ }
+
+
+@@ -1058,7 +1206,9 @@ unsigned int StringConvert_StringToCardinal (DynamicStrings_String s, unsigned i
+ {
+ /* parse leading + */
+ while ((DynamicStrings_char (s, (int) n)) == '+')
+- n += 1;
++ {
++ n += 1;
++ }
+ while ((n < l) && ((IsDecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValid (DynamicStrings_char (s, (int) n), base, &c))))
+ {
+ (*found) = TRUE;
+@@ -1095,31 +1245,57 @@ DynamicStrings_String StringConvert_LongIntegerToString (long int i, unsigned in
+ is very likely MAX(LONGINT), it is safer not to assume this is the case */
+ c = ((long unsigned int ) (labs (i+1)))+1;
+ if (width > 0)
+- return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower)));
++ {
++ return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), width-1, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower)));
++ }
+ else
+- return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower)));
++ {
++ return DynamicStrings_ConCat (StringConvert_LongIntegerToString (-((long int ) (c / ((long unsigned int ) (base)))), 0, padding, sign, base, lower), DynamicStrings_Mark (StringConvert_LongIntegerToString ((long int) c % ((long unsigned int ) (base)), 0, ' ', FALSE, base, lower)));
++ }
+ }
+ else
+- s = DynamicStrings_InitString ((char *) "-", 1);
++ {
++ s = DynamicStrings_InitString ((char *) "-", 1);
++ }
+ i = -i;
+ }
+ else
+- if (sign)
+- s = DynamicStrings_InitString ((char *) "+", 1);
+- else
+- s = DynamicStrings_InitString ((char *) "", 0);
++ {
++ if (sign)
++ {
++ s = DynamicStrings_InitString ((char *) "+", 1);
++ }
++ else
++ {
++ s = DynamicStrings_InitString ((char *) "", 0);
++ }
++ }
+ if (i > ((long int ) (base-1)))
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_LongIntegerToString (i / ((long int ) (base)), 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_LongIntegerToString (i % ((long int ) (base)), 0, ' ', FALSE, base, lower)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (StringConvert_LongIntegerToString (i / ((long int ) (base)), 0, ' ', FALSE, base, lower))), DynamicStrings_Mark (StringConvert_LongIntegerToString (i % ((long int ) (base)), 0, ' ', FALSE, base, lower)));
++ }
+ else
+- if (i <= 9)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) (((unsigned int ) (i))+((unsigned int) ('0'))))));
+- else
+- if (lower)
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('a')))-10))));
++ {
++ if (i <= 9)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (i))+ ((unsigned int) ('0')))))));
++ }
+ else
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ((char) ((((unsigned int ) (i))+((unsigned int) ('A')))-10))));
++ {
++ if (lower)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('a')))-10)))));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (i))+ ((unsigned int) ('A')))-10)))));
++ }
++ }
++ }
+ if (width > (DynamicStrings_Length (s)))
+- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ }
+ return s;
+ }
+
+@@ -1150,7 +1326,9 @@ long int StringConvert_StringToLongInteger (DynamicStrings_String s, unsigned in
+ while (((DynamicStrings_char (s, (int) n)) == '-') || ((DynamicStrings_char (s, (int) n)) == '+'))
+ {
+ if ((DynamicStrings_char (s, (int) n)) == '-')
+- negative = ! negative;
++ {
++ negative = ! negative;
++ }
+ n += 1;
+ }
+ while ((n < l) && ((IsDecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c))))
+@@ -1161,9 +1339,13 @@ long int StringConvert_StringToLongInteger (DynamicStrings_String s, unsigned in
+ }
+ s = DynamicStrings_KillString (s);
+ if (negative)
+- return -((long int ) (LongMin (((long unsigned int ) (LONG_MAX))+1, c)));
++ {
++ return -((long int ) (LongMin (((long unsigned int ) (LONG_MAX))+1, c)));
++ }
+ else
+- return (long int ) (LongMin ((long unsigned int) LONG_MAX, c));
++ {
++ return (long int ) (LongMin ((long unsigned int) LONG_MAX, c));
++ }
+ }
+
+
+@@ -1184,17 +1366,31 @@ DynamicStrings_String StringConvert_LongCardinalToString (long unsigned int c, u
+
+ s = DynamicStrings_InitString ((char *) "", 0);
+ if (c > ((long unsigned int ) (base-1)))
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_LongCardinalToString (c / ((long unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_LongCardinalToString (c % ((long unsigned int ) (base)), 0, ' ', base, lower));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_LongCardinalToString (c / ((long unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_LongCardinalToString (c % ((long unsigned int ) (base)), 0, ' ', base, lower));
++ }
+ else
+- if (c <= 9)
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) (((unsigned int ) (c))+((unsigned int) ('0')))));
+- else
+- if (lower)
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('a')))-10)));
++ {
++ if (c <= 9)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (c))+ ((unsigned int) ('0'))))));
++ }
+ else
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('A')))-10)));
++ {
++ if (lower)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('a')))-10))));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('A')))-10))));
++ }
++ }
++ }
+ if (width > (DynamicStrings_Length (s)))
+- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ }
+ return s;
+ }
+
+@@ -1221,7 +1417,9 @@ long unsigned int StringConvert_StringToLongCardinal (DynamicStrings_String s, u
+ {
+ /* parse leading + */
+ while ((DynamicStrings_char (s, (int) n)) == '+')
+- n += 1;
++ {
++ n += 1;
++ }
+ while ((n < l) && ((IsDecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidLong (DynamicStrings_char (s, (int) n), base, &c))))
+ {
+ (*found) = TRUE;
+@@ -1250,17 +1448,31 @@ DynamicStrings_String StringConvert_ShortCardinalToString (short unsigned int c,
+
+ s = DynamicStrings_InitString ((char *) "", 0);
+ if (((unsigned int ) (c)) > (base-1))
+- s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_ShortCardinalToString (c / ((short unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_ShortCardinalToString (c % ((short unsigned int ) (base)), 0, ' ', base, lower));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCat (s, StringConvert_ShortCardinalToString (c / ((short unsigned int ) (base)), 0, ' ', base, lower)), StringConvert_ShortCardinalToString (c % ((short unsigned int ) (base)), 0, ' ', base, lower));
++ }
+ else
+- if (c <= 9)
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) (((unsigned int ) (c))+((unsigned int) ('0')))));
+- else
+- if (lower)
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('a')))-10)));
++ {
++ if (c <= 9)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) (((unsigned int ) (c))+ ((unsigned int) ('0'))))));
++ }
+ else
+- s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ((char) ((((unsigned int ) (c))+((unsigned int) ('A')))-10)));
++ {
++ if (lower)
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('a')))-10))));
++ }
++ else
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_InitStringChar ( ((char) ((((unsigned int ) (c))+ ((unsigned int) ('A')))-10))));
++ }
++ }
++ }
+ if (width > (DynamicStrings_Length (s)))
+- return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (padding)), width-(DynamicStrings_Length (s))), s);
++ }
+ return s;
+ }
+
+@@ -1287,7 +1499,9 @@ short unsigned int StringConvert_StringToShortCardinal (DynamicStrings_String s,
+ {
+ /* parse leading + */
+ while ((DynamicStrings_char (s, (int) n)) == '+')
+- n += 1;
++ {
++ n += 1;
++ }
+ while ((n < l) && ((IsDecimalDigitValidShort (DynamicStrings_char (s, (int) n), base, &c)) || (IsHexidecimalDigitValidShort (DynamicStrings_char (s, (int) n), base, &c))))
+ {
+ (*found) = TRUE;
+@@ -1471,7 +1685,9 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in
+ r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign);
+ }
+ else
+- r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign);
++ {
++ r = ldtoa_ldtoa (x, (ldtoa_Mode) ldtoa_decimaldigits, 100, &point, &sign);
++ }
+ s = DynamicStrings_InitStringCharStar (r);
+ libc_free (r);
+ l = DynamicStrings_Length (s);
+@@ -1484,7 +1700,9 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in
+ {
+ FractionWidth -= 1;
+ if (((int ) (FractionWidth)) > (point-l))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), FractionWidth)));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), FractionWidth)));
++ }
+ }
+ }
+ else if (point < 0)
+@@ -1494,43 +1712,62 @@ DynamicStrings_String StringConvert_LongrealToString (long double x, unsigned in
+ l = DynamicStrings_Length (s);
+ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (s));
+ if (! maxprecision && (l < ((int ) (FractionWidth))))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-l)));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-l)));
++ }
+ }
+ else
+ {
++ /* avoid dangling else. */
+ if (point == 0)
+- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0.", 2), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ }
+ else
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point), '.'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), point, 0)));
++ }
+ if (! maxprecision && ((l-point) < ((int ) (FractionWidth))))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-(l-point))));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "0", 1)), (unsigned int) ((int ) (FractionWidth))-(l-point))));
++ }
+ }
+ if ((DynamicStrings_Length (s)) > TotalWidth)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (TotalWidth > 0)
+- if (sign)
+- {
+- s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth-1);
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s));
+- sign = FALSE;
+- }
+- else
+- /* minus 1 because all results will include a '.' */
+- s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth);
++ {
++ if (sign)
++ {
++ s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth-1);
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s));
++ sign = FALSE;
++ }
++ else
++ {
++ /* minus 1 because all results will include a '.' */
++ s = DynamicStrings_Slice (DynamicStrings_Mark (StringConvert_ToDecimalPlaces (s, FractionWidth)), 0, (int) TotalWidth);
++ }
++ }
+ else
+- if (sign)
+- {
+- s = StringConvert_ToDecimalPlaces (s, FractionWidth);
+- s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s));
+- sign = FALSE;
+- }
+- else
+- /* minus 1 because all results will include a '.' */
+- s = StringConvert_ToDecimalPlaces (s, FractionWidth);
++ {
++ if (sign)
++ {
++ s = StringConvert_ToDecimalPlaces (s, FractionWidth);
++ s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('-'), DynamicStrings_Mark (s));
++ sign = FALSE;
++ }
++ else
++ {
++ /* minus 1 because all results will include a '.' */
++ s = StringConvert_ToDecimalPlaces (s, FractionWidth);
++ }
++ }
+ }
+ if ((DynamicStrings_Length (s)) < TotalWidth)
+- s = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (' ')), TotalWidth-(DynamicStrings_Length (s))), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar (' ')), TotalWidth-(DynamicStrings_Length (s))), DynamicStrings_Mark (s));
++ }
+ return s;
+ }
+
+@@ -1585,17 +1822,25 @@ DynamicStrings_String StringConvert_ToSigFig (DynamicStrings_String s, unsigned
+ Assert ((IsDigit (DynamicStrings_char (s, 0))) || ((DynamicStrings_char (s, 0)) == '.'), (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/StringConvert.mod", 54, 1215, (char *) "ToSigFig", 8);
+ point = DynamicStrings_Index (s, '.', 0);
+ if (point < 0)
+- poTen = DynamicStrings_Length (s);
++ {
++ poTen = DynamicStrings_Length (s);
++ }
+ else
+- poTen = point;
++ {
++ poTen = point;
++ }
+ s = doSigFig (s, n);
+ /* if the last character is '.' remove it */
+ if (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, -1)) == '.'))
+- return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
++ {
++ return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
++ }
+ else
+ {
+ if (poTen > (DynamicStrings_Length (s)))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), poTen-(DynamicStrings_Length (s)))));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), poTen-(DynamicStrings_Length (s)))));
++ }
+ return s;
+ }
+ }
+@@ -1630,16 +1875,24 @@ DynamicStrings_String StringConvert_ToDecimalPlaces (DynamicStrings_String s, un
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (n > 0)
+- return DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ('.'))), DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), n));
++ {
++ return DynamicStrings_ConCat (DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitStringChar ('.'))), DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), n));
++ }
+ else
+- return s;
++ {
++ return s;
++ }
+ }
+ s = doDecimalPlaces (s, n);
+ /* if the last character is '.' remove it */
+ if (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, -1)) == '.'))
+- return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
++ {
++ return DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
++ }
+ else
+- return s;
++ {
++ return s;
++ }
+ }
+
+ void _M2_StringConvert_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GSysStorage.c
++++ b/src/gcc/gm2/mc-boot/GSysStorage.c
+@@ -69,7 +69,9 @@ void SysStorage_ALLOCATE (void * *a, unsigned int Size)
+ {
+ (*a) = libc_malloc ((size_t) Size);
+ if ((*a) == NULL)
+- Debug_Halt ((char *) "out of memory error", 19, 31, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51);
++ {
++ Debug_Halt ((char *) "out of memory error", 19, 31, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51);
++ }
+ }
+
+ void SysStorage_DEALLOCATE (void * *a, unsigned int Size)
+@@ -90,12 +92,16 @@ void SysStorage_DEALLOCATE (void * *a, unsigned int Size)
+ void SysStorage_REALLOCATE (void * *a, unsigned int Size)
+ {
+ if ((*a) == NULL)
+- SysStorage_ALLOCATE (a, Size);
++ {
++ SysStorage_ALLOCATE (a, Size);
++ }
+ else
+ {
+ (*a) = libc_realloc ((*a), (size_t) Size);
+ if ((*a) == NULL)
+- Debug_Halt ((char *) "out of memory error", 19, 60, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51);
++ {
++ Debug_Halt ((char *) "out of memory error", 19, 60, (char *) "../../gcc-versionno/gcc/gm2/gm2-libs/SysStorage.mod", 51);
++ }
+ }
+ }
+
+@@ -114,7 +120,9 @@ unsigned int SysStorage_Available (unsigned int Size)
+
+ a = libc_malloc ((size_t) Size);
+ if (a == NULL)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ libc_free (a);
+--- a/src/gcc/gm2/mc-boot/GTimeString.c
++++ b/src/gcc/gm2/mc-boot/GTimeString.c
+@@ -50,14 +50,18 @@ void TimeString_GetTimeString (char *a, unsigned int _a_high)
+ Addr = wrapc_strtime ();
+ i = 0;
+ if (Addr != NULL)
+- while ((i < (_a_high)) && ((*Addr) != ASCII_nul))
+- {
+- a[i] = (*Addr);
+- i += 1;
+- Addr += 1;
+- }
+- if (i < (_a_high))
+- a[i] = ASCII_nul;
++ {
++ while ((i < _a_high) && ((*Addr) != ASCII_nul))
++ {
++ a[i] = (*Addr);
++ i += 1;
++ Addr += 1;
++ }
++ }
++ if (i < _a_high)
++ {
++ a[i] = ASCII_nul;
++ }
+ }
+
+ void _M2_TimeString_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/Galists.c
++++ b/src/gcc/gm2/mc-boot/Galists.c
+@@ -181,7 +181,9 @@ void alists_killList (alists_alist *l)
+ if ((*l) != NULL)
+ {
+ if ((*l)->next != NULL)
+- alists_killList (&(*l)->next);
++ {
++ alists_killList (&(*l)->next);
++ }
+ Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1));
+ }
+ }
+@@ -199,9 +201,13 @@ void alists_putItemIntoList (alists_alist l, void * c)
+ l->elements.array[l->noOfelements-1] = c;
+ }
+ else if (l->next != NULL)
+- alists_putItemIntoList (l->next, c);
++ {
++ /* avoid dangling else. */
++ alists_putItemIntoList (l->next, c);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ l->next = alists_initList ();
+ alists_putItemIntoList (l->next, c);
+ }
+@@ -217,9 +223,13 @@ void * alists_getItemFromList (alists_alist l, unsigned int n)
+ while (l != NULL)
+ {
+ if (n <= l->noOfelements)
+- return l->elements.array[n-1];
++ {
++ return l->elements.array[n-1];
++ }
+ else
+- n -= l->noOfelements;
++ {
++ n -= l->noOfelements;
++ }
+ l = l->next;
+ }
+ return 0;
+@@ -237,15 +247,23 @@ unsigned int alists_getIndexOfList (alists_alist l, void * c)
+ unsigned int i;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ i = 1;
+ while (i <= l->noOfelements)
+- if (l->elements.array[i-1] == c)
+- return i;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return i;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ return l->noOfelements+(alists_getIndexOfList (l->next, c));
+ }
+ }
+@@ -260,7 +278,9 @@ unsigned int alists_noOfItemsInList (alists_alist l)
+ unsigned int t;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ t = 0;
+@@ -281,7 +301,9 @@ unsigned int alists_noOfItemsInList (alists_alist l)
+ void alists_includeItemIntoList (alists_alist l, void * c)
+ {
+ if (! (alists_isItemInList (l, c)))
+- alists_putItemIntoList (l, c);
++ {
++ alists_putItemIntoList (l, c);
++ }
+ }
+
+
+@@ -303,9 +325,13 @@ void alists_removeItemFromList (alists_alist l, void * c)
+ do {
+ i = 1;
+ while ((i <= l->noOfelements) && (l->elements.array[i-1] != c))
+- i += 1;
++ {
++ i += 1;
++ }
+ if ((i <= l->noOfelements) && (l->elements.array[i-1] == c))
+- found = TRUE;
++ {
++ found = TRUE;
++ }
+ else
+ {
+ p = l;
+@@ -313,7 +339,9 @@ void alists_removeItemFromList (alists_alist l, void * c)
+ }
+ } while (! ((l == NULL) || found));
+ if (found)
+- removeItem (p, l, i);
++ {
++ removeItem (p, l, i);
++ }
+ }
+ }
+
+@@ -329,10 +357,16 @@ unsigned int alists_isItemInList (alists_alist l, void * c)
+ do {
+ i = 1;
+ while (i <= l->noOfelements)
+- if (l->elements.array[i-1] == c)
+- return TRUE;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return TRUE;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ l = l->next;
+ } while (! (l == NULL));
+ return FALSE;
+--- a/src/gcc/gm2/mc-boot/Gdecl.c
++++ b/src/gcc/gm2/mc-boot/Gdecl.c
+@@ -5,20 +5,19 @@ Contributed by Gaius Mulley <gaius@glam.ac.uk>.
+
+ This file is part of GNU Modula-2.
+
+-GNU Modula-2 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.
++GNU Modula-2 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.
+
+-GNU Modula-2 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.
++GNU Modula-2 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 gm2; see the file COPYING. If not, write to the Free Software
+-Foundation, 51 Franklin Street, Fifth Floor,
+-Boston, MA 02110-1301, USA. */
++You should have received a copy of the GNU General Public License
++along with GNU Modula-2; see the file COPYING3. If not see
++<http://www.gnu.org/licenses/>. */
+
+ # if !defined (PROC_D)
+ # define PROC_D
+@@ -141,6 +140,9 @@ typedef struct StdIO_ProcRead_p StdIO_ProcRead;
+ # define debugDecl FALSE
+ # define caseException TRUE
+ # define returnException TRUE
++# define forceCompoundStatement TRUE
++typedef struct intrinsicT_r intrinsicT;
++
+ typedef struct fixupInfo_r fixupInfo;
+
+ typedef struct explistT_r explistT;
+@@ -649,6 +651,13 @@ struct _T10_r {
+ alists_alist next;
+ };
+
++struct intrinsicT_r {
++ decl_node args;
++ unsigned int noArgs;
++ decl_node type;
++ commentPair intrinsicComment;
++ };
++
+ struct funccallT_r {
+ decl_node function;
+ decl_node args;
+@@ -844,6 +853,7 @@ struct DebugInfo_r {
+ struct _T1_r {
+ nodeT kind; /* case tag */
+ union {
++ intrinsicT intrinsicF;
+ explistT explistF;
+ exitT exitF;
+ returnT returnF;
+@@ -2692,11 +2702,11 @@ unsigned int mcOptions_getDebugTopological (void);
+ DynamicStrings_String mcOptions_getHPrefix (void);
+ unsigned int mcOptions_getIgnoreFQ (void);
+ void mcOptions_writeGPLheader (FIO_File f);
+-DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String s);
+-DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String s, unsigned char *w_, unsigned int _w_high);
+-DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
+-DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
+-DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String s, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
++DynamicStrings_String FormatStrings_Sprintf0 (DynamicStrings_String fmt);
++DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String fmt, unsigned char *w_, unsigned int _w_high);
++DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high);
++DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high);
++DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String fmt, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high);
+ ssize_t libc_write (int d, void * buf, size_t nbytes);
+ ssize_t libc_read (int d, void * buf, size_t nbytes);
+ int libc_system (void * a);
+@@ -3667,10 +3677,38 @@ static decl_node doMakeConstExp (void);
+ static unsigned int isAnyType (decl_node n);
+
+ /*
+- makeCast -
++ makeVal - creates a VAL (type, expression) node.
++*/
++
++static decl_node makeVal (decl_node params);
++
++/*
++ makeCast - creates a cast node TYPENAME (expr).
+ */
+
+ static decl_node makeCast (decl_node c, decl_node p);
++static decl_node makeIntrinsicProc (nodeT k, unsigned int noArgs, decl_node p);
++
++/*
++ makeIntrinsicUnaryType -
++*/
++
++static decl_node makeIntrinsicUnaryType (nodeT k, decl_node paramList, decl_node returnType);
++
++/*
++ makeIntrinsicBinaryType -
++*/
++
++static decl_node makeIntrinsicBinaryType (nodeT k, decl_node paramList, decl_node returnType);
++
++/*
++ checkIntrinsic - checks to see if the function call to, c, with
++ parameter list, n, is really an intrinic. If it
++ is an intrinic then an intrinic node is created
++ and returned. Otherwise NIL is returned.
++*/
++
++static decl_node checkIntrinsic (decl_node c, decl_node n);
+
+ /*
+ isFuncCall - returns TRUE if, n, is a function/procedure call.
+@@ -3732,6 +3770,12 @@ static void out3 (char *a_, unsigned int _a_high, unsigned int l, nameKey_Name n
+
+ static unsigned int isUnary (decl_node n);
+
++/*
++ isBinary - returns TRUE if, n, is an binary node.
++*/
++
++static unsigned int isBinary (decl_node n);
++
+ /*
+ makeUnary - create a unary expression node with, e, as the argument
+ and res as the return type.
+@@ -3770,10 +3814,10 @@ static decl_node resolveString (decl_node n);
+ static decl_node foldBinary (nodeT k, decl_node l, decl_node r, decl_node res);
+
+ /*
+- makeBinary - create a binary node with left/right/result type: l, r and res.
++ makeBinary - create a binary node with left/right/result type: l, r and resultType.
+ */
+
+-static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node res);
++static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node resultType);
+
+ /*
+ doMakeBinary - returns a binary node containing left/right/result values
+@@ -5097,7 +5141,8 @@ static void doMinC (mcPretty_pretty p, decl_node n);
+ static void doMaxC (mcPretty_pretty p, decl_node n);
+
+ /*
+- isIntrinsic - returns if, n, is an instrinsic procedure.
++ isIntrinsic - returns if, n, is an intrinsic procedure.
++ The intrinsic functions are represented as unary and binary nodes.
+ */
+
+ static unsigned int isIntrinsic (decl_node n);
+@@ -5132,6 +5177,24 @@ static void doCmplx (mcPretty_pretty p, decl_node n);
+
+ static void doIntrinsicC (mcPretty_pretty p, decl_node n);
+
++/*
++ isIntrinsicFunction - returns true if, n, is an instrinsic function.
++*/
++
++static unsigned int isIntrinsicFunction (decl_node n);
++
++/*
++ doSizeC -
++*/
++
++static void doSizeC (mcPretty_pretty p, decl_node n);
++
++/*
++ doConvertC -
++*/
++
++static void doConvertC (mcPretty_pretty p, decl_node n, char *conversion_, unsigned int _conversion_high);
++
+ /*
+ getFuncFromExpr -
+ */
+@@ -5869,6 +5932,12 @@ static void visitVarargs (alists_alist v, decl_node n, nodeProcedure p);
+
+ static void visitSetValue (alists_alist v, decl_node n, nodeProcedure p);
+
++/*
++ visitIntrinsic -
++*/
++
++static void visitIntrinsic (alists_alist v, decl_node n, nodeProcedure p);
++
+ /*
+ visitDependants - helper procedure function called from visitNode.
+ node n has just been visited, this procedure will
+@@ -6419,7 +6488,9 @@ static decl_node newNode (nodeT k)
+
+ Storage_ALLOCATE ((void **) &d, sizeof (_T1));
+ if (d == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ d->kind = k;
+@@ -6452,7 +6523,9 @@ static unsigned int isLocal (decl_node n)
+
+ s = decl_getScope (n);
+ if (s != NULL)
+- return decl_isProcedure (s);
++ {
++ return decl_isProcedure (s);
++ }
+ return FALSE;
+ }
+
+@@ -6479,7 +6552,9 @@ static void importEnumFields (decl_node m, decl_node n)
+ e = Indexing_GetIndice (n->enumerationF.listOfSons, i);
+ r = decl_import (m, e);
+ if (e != r)
+- mcMetaError_metaError2 ((char *) "enumeration field {%1ad} cannot be imported implicitly into {%2d} due to a name clash", 85, (unsigned char *) &e, (sizeof (e)-1), (unsigned char *) &m, (sizeof (m)-1));
++ {
++ mcMetaError_metaError2 ((char *) "enumeration field {%1ad} cannot be imported implicitly into {%2d} due to a name clash", 85, (unsigned char *) &e, (sizeof (e)-1), (unsigned char *) &m, (sizeof (m)-1));
++ }
+ i += 1;
+ }
+ }
+@@ -6656,7 +6731,9 @@ static decl_node addTo (scopeT *decls, decl_node d)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if ((symbolKey_getSymKey ((*decls).symbols, n)) == NULL)
+- symbolKey_putSymKey ((*decls).symbols, n, (void *) d);
++ {
++ symbolKey_putSymKey ((*decls).symbols, n, (void *) d);
++ }
+ else
+ {
+ mcMetaError_metaError1 ((char *) "{%1DMad} was declared", 21, (unsigned char *) &d, (sizeof (d)-1));
+@@ -6664,16 +6741,27 @@ static decl_node addTo (scopeT *decls, decl_node d)
+ }
+ }
+ if (decl_isConst (d))
+- Indexing_IncludeIndiceIntoIndex ((*decls).constants, (void *) d);
++ {
++ Indexing_IncludeIndiceIntoIndex ((*decls).constants, (void *) d);
++ }
+ else if (decl_isVar (d))
+- Indexing_IncludeIndiceIntoIndex ((*decls).variables, (void *) d);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex ((*decls).variables, (void *) d);
++ }
+ else if (decl_isType (d))
+- Indexing_IncludeIndiceIntoIndex ((*decls).types, (void *) d);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex ((*decls).types, (void *) d);
++ }
+ else if (decl_isProcedure (d))
+ {
++ /* avoid dangling else. */
+ Indexing_IncludeIndiceIntoIndex ((*decls).procedures, (void *) d);
+ if (debugDecl)
+- libc_printf ((char *) "%d procedures on the dynamic array\\n", 36, Indexing_HighIndice ((*decls).procedures));
++ {
++ libc_printf ((char *) "%d procedures on the dynamic array\\n", 36, Indexing_HighIndice ((*decls).procedures));
++ }
+ }
+ return d;
+ }
+@@ -6713,6 +6801,7 @@ static decl_node addToScope (decl_node n)
+ }
+ else if (decl_isModule (s))
+ {
++ /* avoid dangling else. */
+ if (debugDecl)
+ {
+ outText (doP, (char *) "adding ", 7);
+@@ -6723,6 +6812,7 @@ static decl_node addToScope (decl_node n)
+ }
+ else if (decl_isDef (s))
+ {
++ /* avoid dangling else. */
+ if (debugDecl)
+ {
+ outText (doP, (char *) "adding ", 7);
+@@ -6734,6 +6824,7 @@ static decl_node addToScope (decl_node n)
+ }
+ else if (decl_isImp (s))
+ {
++ /* avoid dangling else. */
+ if (debugDecl)
+ {
+ outText (doP, (char *) "adding ", 7);
+@@ -6754,7 +6845,9 @@ static void addModuleToScope (decl_node m, decl_node i)
+ {
+ mcDebug_assert ((decl_getDeclScope ()) == m);
+ if ((decl_lookupSym (decl_getSymName (i))) == NULL)
+- i = addToScope (i);
++ {
++ i = addToScope (i);
++ }
+ }
+
+
+@@ -6766,11 +6859,19 @@ static void completedEnum (decl_node n)
+ {
+ mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n)));
+ if (decl_isDef (n))
+- n->defF.enumsComplete = TRUE;
++ {
++ n->defF.enumsComplete = TRUE;
++ }
+ else if (decl_isImp (n))
+- n->impF.enumsComplete = TRUE;
++ {
++ /* avoid dangling else. */
++ n->impF.enumsComplete = TRUE;
++ }
+ else if (decl_isModule (n))
+- n->moduleF.enumsComplete = TRUE;
++ {
++ /* avoid dangling else. */
++ n->moduleF.enumsComplete = TRUE;
++ }
+ }
+
+
+@@ -6837,14 +6938,16 @@ static decl_node checkPtr (decl_node n)
+ decl_node p;
+
+ if (lang == ansiCP)
+- if (decl_isPointer (n))
+- {
+- s = tempName ();
+- p = decl_makeType (nameKey_makekey (DynamicStrings_string (s)));
+- decl_putType (p, n);
+- s = DynamicStrings_KillString (s);
+- return p;
+- }
++ {
++ if (decl_isPointer (n))
++ {
++ s = tempName ();
++ p = decl_makeType (nameKey_makekey (DynamicStrings_string (s)));
++ decl_putType (p, n);
++ s = DynamicStrings_KillString (s);
++ return p;
++ }
++ }
+ return n;
+ }
+
+@@ -6993,7 +7096,9 @@ static unsigned int isIdentList (decl_node n)
+ static unsigned int identListLen (decl_node n)
+ {
+ if (n == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ mcDebug_assert (isIdentList (n));
+@@ -7020,7 +7125,9 @@ static void checkParameters (decl_node p, decl_node i, decl_node type, unsigned
+ static void checkMakeVariables (decl_node n, decl_node i, decl_node type, unsigned int isvar)
+ {
+ if (((decl_isImp (currentModule)) || (decl_isModule (currentModule))) && ! n->procedureF.built)
+- makeVariablesFromParameters (n, i, type, isvar);
++ {
++ makeVariablesFromParameters (n, i, type, isvar);
++ }
+ }
+
+
+@@ -7097,7 +7204,9 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type,
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if ((symbolKey_getSymKey (r->recordF.localSymbols, tag)) == nameKey_NulName)
+- symbolKey_putSymKey (r->recordF.localSymbols, tag, (void *) n);
++ {
++ symbolKey_putSymKey (r->recordF.localSymbols, tag, (void *) n);
++ }
+ else
+ {
+ f = symbolKey_getSymKey (r->recordF.localSymbols, tag);
+@@ -7111,7 +7220,9 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type,
+ p = getParent (r);
+ mcDebug_assert (p->kind == record);
+ if (tag != nameKey_NulName)
+- symbolKey_putSymKey (p->recordF.localSymbols, tag, (void *) n);
++ {
++ symbolKey_putSymKey (p->recordF.localSymbols, tag, (void *) n);
++ }
+ break;
+
+
+@@ -7246,11 +7357,19 @@ static void addEnumToModule (decl_node m, decl_node e)
+ mcDebug_assert ((decl_isEnumeration (e)) || (decl_isEnumerationField (e)));
+ mcDebug_assert (((decl_isModule (m)) || (decl_isDef (m))) || (decl_isImp (m)));
+ if (decl_isModule (m))
+- Indexing_IncludeIndiceIntoIndex (m->moduleF.enumFixup.info, (void *) e);
++ {
++ Indexing_IncludeIndiceIntoIndex (m->moduleF.enumFixup.info, (void *) e);
++ }
+ else if (decl_isDef (m))
+- Indexing_IncludeIndiceIntoIndex (m->defF.enumFixup.info, (void *) e);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->defF.enumFixup.info, (void *) e);
++ }
+ else if (decl_isImp (m))
+- Indexing_IncludeIndiceIntoIndex (m->impF.enumFixup.info, (void *) e);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->impF.enumFixup.info, (void *) e);
++ }
+ }
+
+
+@@ -7309,12 +7428,16 @@ static decl_node doMakeEnumField (decl_node e, nameKey_Name n)
+ mcDebug_assert ((Indexing_GetIndice (e->enumerationF.listOfSons, e->enumerationF.noOfElements)) == f);
+ addEnumToModule (currentModule, f);
+ if (e->enumerationF.low == NULL)
+- e->enumerationF.low = f;
++ {
++ e->enumerationF.low = f;
++ }
+ e->enumerationF.high = f;
+ return addToScope (f);
+ }
+ else
+- mcMetaError_metaErrors2 ((char *) "cannot create enumeration field {%1k} as the name is already in use", 67, (char *) "{%2DMad} was declared elsewhere", 31, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &f, (sizeof (f)-1));
++ {
++ mcMetaError_metaErrors2 ((char *) "cannot create enumeration field {%1k} as the name is already in use", 67, (char *) "{%2DMad} was declared elsewhere", 31, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &f, (sizeof (f)-1));
++ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+ }
+
+@@ -7338,9 +7461,15 @@ static decl_node getExpList (decl_node p, unsigned int n)
+
+ static unsigned int expListLen (decl_node p)
+ {
+- mcDebug_assert (p != NULL);
+- mcDebug_assert (decl_isExpList (p));
+- return Indexing_HighIndice (p->explistF.exp);
++ if (p == NULL)
++ {
++ return 0;
++ }
++ else
++ {
++ mcDebug_assert (decl_isExpList (p));
++ return Indexing_HighIndice (p->explistF.exp);
++ }
+ }
+
+
+@@ -7380,11 +7509,19 @@ static void addConstToModule (decl_node m, decl_node e)
+ {
+ mcDebug_assert (((decl_isModule (m)) || (decl_isDef (m))) || (decl_isImp (m)));
+ if (decl_isModule (m))
+- Indexing_IncludeIndiceIntoIndex (m->moduleF.constFixup.info, (void *) e);
++ {
++ Indexing_IncludeIndiceIntoIndex (m->moduleF.constFixup.info, (void *) e);
++ }
+ else if (decl_isDef (m))
+- Indexing_IncludeIndiceIntoIndex (m->defF.constFixup.info, (void *) e);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->defF.constFixup.info, (void *) e);
++ }
+ else if (decl_isImp (m))
+- Indexing_IncludeIndiceIntoIndex (m->impF.constFixup.info, (void *) e);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->impF.constFixup.info, (void *) e);
++ }
+ }
+
+
+@@ -7441,16 +7578,215 @@ static unsigned int isAnyType (decl_node n)
+
+
+ /*
+- makeCast -
++ makeVal - creates a VAL (type, expression) node.
++*/
++
++static decl_node makeVal (decl_node params)
++{
++ mcDebug_assert (decl_isExpList (params));
++ if ((expListLen (params)) == 2)
++ {
++ return makeBinary ((nodeT) val, getExpList (params, 1), getExpList (params, 2), getExpList (params, 1));
++ }
++ else
++ {
++ M2RTS_HALT (-1);
++ }
++}
++
++
++/*
++ makeCast - creates a cast node TYPENAME (expr).
+ */
+
+ static decl_node makeCast (decl_node c, decl_node p)
+ {
+ mcDebug_assert (decl_isExpList (p));
+ if ((expListLen (p)) == 1)
+- return makeBinary ((nodeT) cast, c, getExpList (p, 1), c);
++ {
++ return makeBinary ((nodeT) cast, c, getExpList (p, 1), c);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
++}
++
++static decl_node makeIntrinsicProc (nodeT k, unsigned int noArgs, decl_node p)
++{
++ decl_node f;
++
++ /*
++ makeIntrisicProc -
++ */
++ f = newNode (k);
++ f->intrinsicF.args = p;
++ f->intrinsicF.noArgs = noArgs;
++ f->intrinsicF.type = NULL;
++ initPair (&f->intrinsicF.intrinsicComment);
++ return f;
++}
++
++
++/*
++ makeIntrinsicUnaryType -
++*/
++
++static decl_node makeIntrinsicUnaryType (nodeT k, decl_node paramList, decl_node returnType)
++{
++ return makeUnary (k, getExpList (paramList, 1), returnType);
++}
++
++
++/*
++ makeIntrinsicBinaryType -
++*/
++
++static decl_node makeIntrinsicBinaryType (nodeT k, decl_node paramList, decl_node returnType)
++{
++ return makeBinary (k, getExpList (paramList, 1), getExpList (paramList, 2), returnType);
++}
++
++
++/*
++ checkIntrinsic - checks to see if the function call to, c, with
++ parameter list, n, is really an intrinic. If it
++ is an intrinic then an intrinic node is created
++ and returned. Otherwise NIL is returned.
++*/
++
++static decl_node checkIntrinsic (decl_node c, decl_node n)
++{
++ if (isAnyType (c))
++ {
++ return makeCast (c, n);
++ }
++ else if (c == maxN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) max, n, (decl_node) NULL);
++ }
++ else if (c == minN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) min, n, (decl_node) NULL);
++ }
++ else if (c == haltN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) halt, expListLen (n), n);
++ }
++ else if (c == valN)
++ {
++ /* avoid dangling else. */
++ return makeVal (n);
++ }
++ else if (c == adrN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) adr, n, addressN);
++ }
++ else if (c == sizeN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) size, n, cardinalN);
++ }
++ else if (c == tsizeN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) tsize, n, cardinalN);
++ }
++ else if (c == floatN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) float_, n, realN);
++ }
++ else if (c == truncN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) trunc, n, integerN);
++ }
++ else if (c == ordN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) ord, n, cardinalN);
++ }
++ else if (c == chrN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) chr, n, charN);
++ }
++ else if (c == capN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) cap, n, charN);
++ }
++ else if (c == absN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) abs_, n, (decl_node) NULL);
++ }
++ else if (c == imN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) im, n, (decl_node) NULL);
++ }
++ else if (c == reN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) re, n, (decl_node) NULL);
++ }
++ else if (c == cmplxN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicBinaryType ((nodeT) cmplx, n, (decl_node) NULL);
++ }
++ else if (c == highN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) high, n, cardinalN);
++ }
++ else if (c == incN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) inc, expListLen (n), n);
++ }
++ else if (c == decN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) dec, expListLen (n), n);
++ }
++ else if (c == inclN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) incl, expListLen (n), n);
++ }
++ else if (c == exclN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) excl, expListLen (n), n);
++ }
++ else if (c == newN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) new, 1, n);
++ }
++ else if (c == disposeN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) dispose, 1, n);
++ }
++ else if (c == lengthN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicUnaryType ((nodeT) length, n, cardinalN);
++ }
++ else if (c == throwN)
++ {
++ /* avoid dangling else. */
++ return makeIntrinsicProc ((nodeT) throw, 1, n);
++ }
++ return NULL;
+ }
+
+
+@@ -7499,9 +7835,14 @@ static decl_node lookupBase (nameKey_Name n)
+
+ m = symbolKey_getSymKey (baseSymbols, n);
+ if (m == procN)
+- keyc_useProc ();
++ {
++ keyc_useProc ();
++ }
+ else if (((m == complexN) || (m == longcomplexN)) || (m == shortcomplexN))
+- keyc_useComplex ();
++ {
++ /* avoid dangling else. */
++ keyc_useComplex ();
++ }
+ return m;
+ }
+
+@@ -7620,7 +7961,6 @@ static unsigned int isUnary (decl_node n)
+ mcDebug_assert (n != NULL);
+ switch (n->kind)
+ {
+- case throw:
+ case re:
+ case im:
+ case deref:
+@@ -7651,22 +7991,64 @@ static unsigned int isUnary (decl_node n)
+
+
+ /*
+- makeUnary - create a unary expression node with, e, as the argument
+- and res as the return type.
++ isBinary - returns TRUE if, n, is an binary node.
+ */
+
+-static decl_node makeUnary (nodeT k, decl_node e, decl_node res)
++static unsigned int isBinary (decl_node n)
+ {
+- decl_node n;
+-
+- if (k == plus)
+- return e;
+- else
+- {
++ mcDebug_assert (n != NULL);
++ switch (n->kind)
++ {
++ case cmplx:
++ case and:
++ case or:
++ case equal:
++ case notequal:
++ case less:
++ case greater:
++ case greequal:
++ case lessequal:
++ case val:
++ case cast:
++ case plus:
++ case sub:
++ case div_:
++ case mod:
++ case mult:
++ case divide:
++ case in:
++ return TRUE;
++ break;
++
++
++ default:
++ return FALSE;
++ break;
++ }
++}
++
++
++/*
++ makeUnary - create a unary expression node with, e, as the argument
++ and res as the return type.
++*/
++
++static decl_node makeUnary (nodeT k, decl_node e, decl_node res)
++{
++ decl_node n;
++
++ if (k == plus)
++ {
++ return e;
++ }
++ else
++ {
+ Storage_ALLOCATE ((void **) &n, sizeof (_T1));
+ n->kind = k;
+ switch (n->kind)
+ {
++ case min:
++ case max:
+ case throw:
+ case re:
+ case im:
+@@ -7714,16 +8096,25 @@ static unsigned int isLeafString (decl_node n)
+ static DynamicStrings_String getStringContents (decl_node n)
+ {
+ if (decl_isConst (n))
+- return getStringContents (n->constF.value);
++ {
++ return getStringContents (n->constF.value);
++ }
+ else if (decl_isLiteral (n))
+ {
++ /* avoid dangling else. */
+ M2RTS_HALT (-1); /* --fixme-- finish this. */
+ return NULL; /* --fixme-- finish this. */
+ }
+ else if (isString (n))
+- return getString (n);
++ {
++ /* avoid dangling else. */
++ return getString (n);
++ }
+ else if (isConstExp (n))
+- return getStringContents (n->unaryF.arg);
++ {
++ /* avoid dangling else. */
++ return getStringContents (n->unaryF.arg);
++ }
+ M2RTS_HALT (-1);
+ }
+
+@@ -7755,12 +8146,20 @@ static nameKey_Name addNames (decl_node a, decl_node b)
+ static decl_node resolveString (decl_node n)
+ {
+ while ((decl_isConst (n)) || (isConstExp (n)))
+- if (decl_isConst (n))
+- n = n->constF.value;
+- else
+- n = n->unaryF.arg;
++ {
++ if (decl_isConst (n))
++ {
++ n = n->constF.value;
++ }
++ else
++ {
++ n = n->unaryF.arg;
++ }
++ }
+ if (n->kind == plus)
+- n = decl_makeString (addNames (resolveString (n->binaryF.left), resolveString (n->binaryF.right)));
++ {
++ n = decl_makeString (addNames (resolveString (n->binaryF.left), resolveString (n->binaryF.right)));
++ }
+ return n;
+ }
+
+@@ -7790,16 +8189,18 @@ static decl_node foldBinary (nodeT k, decl_node l, decl_node r, decl_node res)
+
+
+ /*
+- makeBinary - create a binary node with left/right/result type: l, r and res.
++ makeBinary - create a binary node with left/right/result type: l, r and resultType.
+ */
+
+-static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node res)
++static decl_node makeBinary (nodeT k, decl_node l, decl_node r, decl_node resultType)
+ {
+ decl_node n;
+
+- n = foldBinary (k, l, r, res);
++ n = foldBinary (k, l, r, resultType);
+ if (n == NULL)
+- n = doMakeBinary (k, l, r, res);
++ {
++ n = doMakeBinary (k, l, r, resultType);
++ }
+ return n;
+ }
+
+@@ -8013,7 +8414,9 @@ static unsigned int isOrdinal (decl_node n)
+ static decl_node mixTypes (decl_node a, decl_node b)
+ {
+ if ((a == addressN) || (b == addressN))
+- return addressN;
++ {
++ return addressN;
++ }
+ return a;
+ }
+
+@@ -8025,7 +8428,9 @@ static decl_node mixTypes (decl_node a, decl_node b)
+ static decl_node doSetExprType (decl_node *t, decl_node n)
+ {
+ if ((*t) == NULL)
+- (*t) = n;
++ {
++ (*t) = n;
++ }
+ return (*t);
+ }
+
+@@ -8037,17 +8442,27 @@ static decl_node doSetExprType (decl_node *t, decl_node n)
+ static decl_node getMaxMinType (decl_node n)
+ {
+ if ((decl_isVar (n)) || (decl_isConst (n)))
+- return decl_getType (n);
++ {
++ return decl_getType (n);
++ }
+ else if (isConstExp (n))
+ {
++ /* avoid dangling else. */
+ n = getExprType (n->unaryF.arg);
+ if (n == bitsetN)
+- return ztypeN;
++ {
++ return ztypeN;
++ }
+ else
+- return n;
++ {
++ return n;
++ }
+ }
+ else
+- return n;
++ {
++ /* avoid dangling else. */
++ return n;
++ }
+ }
+
+
+@@ -8058,82 +8473,7 @@ static decl_node getMaxMinType (decl_node n)
+ static decl_node doGetFuncType (decl_node n)
+ {
+ mcDebug_assert (isFuncCall (n));
+- if (isIntrinsic (n))
+- switch (n->funccallF.function->kind)
+- {
+- case max:
+- case min:
+- return getMaxMinType (getExpList (n->funccallF.args, 1));
+- break;
+-
+- case cast:
+- case val:
+- return getExpList (n->funccallF.args, 1);
+- break;
+-
+- case adr:
+- return addressN;
+- break;
+-
+- case size:
+- case tsize:
+- case float_:
+- return realN;
+- break;
+-
+- case trunc:
+- return integerN;
+- break;
+-
+- case ord:
+- return cardinalN;
+- break;
+-
+- case chr:
+- return charN;
+- break;
+-
+- case cap:
+- return charN;
+- break;
+-
+- case re:
+- case im:
+- return realN;
+- break;
+-
+- case cmplx:
+- return complexN;
+- break;
+-
+- case abs_:
+- return getExprType (getExpList (n->funccallF.args, 1));
+- break;
+-
+- case high:
+- return cardinalN;
+- break;
+-
+- case halt:
+- case inc:
+- case dec:
+- case incl:
+- case excl:
+- case new:
+- case dispose:
+- M2RTS_HALT (-1);
+- break;
+-
+- case length:
+- return cardinalN;
+- break;
+-
+-
+- default:
+- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+- }
+- else
+- return doSetExprType (&n->funccallF.type, decl_getType (n->funccallF.function));
++ return doSetExprType (&n->funccallF.type, decl_getType (n->funccallF.function));
+ }
+
+
+@@ -8145,16 +8485,22 @@ static decl_node doGetExprType (decl_node n)
+ {
+ switch (n->kind)
+ {
++ case max:
++ case min:
++ return getMaxMinType (n->unaryF.arg);
++ break;
++
++ case cast:
++ case val:
++ return doSetExprType (&n->binaryF.resultType, n->binaryF.left);
++ break;
++
+ case halt:
+ case new:
+ case dispose:
+ return NULL;
+ break;
+
+- case length:
+- return cardinalN;
+- break;
+-
+ case inc:
+ case dec:
+ case incl:
+@@ -8372,18 +8718,13 @@ static decl_node doGetExprType (decl_node n)
+ M2RTS_HALT (-1);
+ break;
+
+- case cast:
+- case val:
+- /* expressions. */
+- return doSetExprType (&n->binaryF.resultType, n->binaryF.left);
+- break;
+-
+ case plus:
+ case sub:
+ case div_:
+ case mod:
+ case mult:
+ case divide:
++ /* expressions. */
+ return doSetExprType (&n->binaryF.resultType, mixTypes (getExprType (n->binaryF.left), getExprType (n->binaryF.right)));
+ break;
+
+@@ -8489,10 +8830,14 @@ static decl_node getExprType (decl_node n)
+ decl_node t;
+
+ if (((isFuncCall (n)) && ((decl_getType (n)) != NULL)) && (decl_isProcType (decl_skipType (decl_getType (n)))))
+- return decl_getType (decl_skipType (decl_getType (n)));
++ {
++ return decl_getType (decl_skipType (decl_getType (n)));
++ }
+ t = decl_getType (n);
+ if (t == NULL)
+- t = doGetExprType (n);
++ {
++ t = doGetExprType (n);
++ }
+ return t;
+ }
+
+@@ -8507,9 +8852,13 @@ static void openOutput (void)
+
+ s = mcOptions_getOutputFile ();
+ if (DynamicStrings_EqualArray (s, (char *) "-", 1))
+- outputFile = FIO_StdOut;
++ {
++ outputFile = FIO_StdOut;
++ }
+ else
+- outputFile = SFIO_OpenToWrite (s);
++ {
++ outputFile = SFIO_OpenToWrite (s);
++ }
+ mcStream_setDest (outputFile);
+ }
+
+@@ -8525,7 +8874,9 @@ static void closeOutput (void)
+ s = mcOptions_getOutputFile ();
+ outputFile = mcStream_combine ();
+ if (! (DynamicStrings_EqualArray (s, (char *) "-", 1)))
+- FIO_Close (outputFile);
++ {
++ FIO_Close (outputFile);
++ }
+ }
+
+
+@@ -8569,9 +8920,12 @@ static void doIncludeC (decl_node n)
+ }
+ /* no include in this case. */
+ else if (mcOptions_getExtendedOpaque ())
+- {} /* empty. */
++ {
++ /* avoid dangling else. */
++ }
+ else if (decl_isDef (n))
+ {
++ /* avoid dangling else. */
+ mcPretty_print (doP, (char *) "# include \"", 13);
+ mcPretty_prints (doP, mcOptions_getHPrefix ());
+ mcPretty_prints (doP, s);
+@@ -8624,7 +8978,9 @@ static DynamicStrings_String getFQstring (decl_node n)
+ DynamicStrings_String s;
+
+ if (((! (decl_isExported (n))) || (mcOptions_getIgnoreFQ ())) || (isDefForC (decl_getScope (n))))
+- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)));
++ {
++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)));
++ }
+ else
+ {
+ i = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)));
+@@ -8644,7 +9000,9 @@ static DynamicStrings_String getFQDstring (decl_node n, unsigned int scopes)
+ DynamicStrings_String s;
+
+ if ((! (decl_isExported (n))) || (mcOptions_getIgnoreFQ ()))
+- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (getDName (n, scopes)));
++ {
++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (getDName (n, scopes)));
++ }
+ else
+ {
+ /* we assume a qualified name will never conflict. */
+@@ -8662,9 +9020,13 @@ static DynamicStrings_String getFQDstring (decl_node n, unsigned int scopes)
+ static DynamicStrings_String getString (decl_node n)
+ {
+ if ((decl_getSymName (n)) == nameKey_NulName)
+- return DynamicStrings_InitString ((char *) "", 0);
++ {
++ return DynamicStrings_InitString ((char *) "", 0);
++ }
+ else
+- return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)));
++ {
++ return DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)));
++ }
+ }
+
+
+@@ -8773,6 +9135,10 @@ static unsigned int needsParen (decl_node n)
+ return TRUE;
+ break;
+
++ case abs_:
++ return FALSE;
++ break;
++
+ case plus:
+ case sub:
+ case div_:
+@@ -8819,6 +9185,9 @@ static unsigned int needsParen (decl_node n)
+ return FALSE;
+ break;
+
++ case loc:
++ case byte:
++ case word:
+ case type:
+ case char_:
+ case cardinal:
+@@ -8871,10 +9240,14 @@ static void doUnary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_n
+ memcpy (op, op_, _op_high+1);
+
+ if (l)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ mcPretty_print (p, (char *) op, _op_high);
+ if (r)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ if (needsParen (expr))
+ {
+ outText (p, (char *) "(", 1);
+@@ -8882,7 +9255,9 @@ static void doUnary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_n
+ outText (p, (char *) ")", 1);
+ }
+ else
+- doExprC (p, expr);
++ {
++ doExprC (p, expr);
++ }
+ }
+
+
+@@ -8899,7 +9274,9 @@ static void doSetSub (mcPretty_pretty p, decl_node left, decl_node right)
+ outText (p, (char *) ")", 1);
+ }
+ else
+- doExprC (p, left);
++ {
++ doExprC (p, left);
++ }
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "&", 1);
+ mcPretty_setNeedSpace (p);
+@@ -8930,51 +9307,55 @@ static void doPolyBinary (mcPretty_pretty p, nodeT op, decl_node left, decl_node
+ lt = decl_skipType (getExprType (left));
+ rt = decl_skipType (getExprType (right));
+ if (((lt != NULL) && ((decl_isSet (lt)) || (isBitset (lt)))) || ((rt != NULL) && ((decl_isSet (rt)) || (isBitset (rt)))))
+- switch (op)
+- {
+- case plus:
+- doBinary (p, (char *) "|", 1, left, right, l, r, FALSE);
+- break;
++ {
++ switch (op)
++ {
++ case plus:
++ doBinary (p, (char *) "|", 1, left, right, l, r, FALSE);
++ break;
+
+- case sub:
+- doSetSub (p, left, right);
+- break;
++ case sub:
++ doSetSub (p, left, right);
++ break;
+
+- case mult:
+- doBinary (p, (char *) "&", 1, left, right, l, r, FALSE);
+- break;
++ case mult:
++ doBinary (p, (char *) "&", 1, left, right, l, r, FALSE);
++ break;
+
+- case divide:
+- doBinary (p, (char *) "^", 1, left, right, l, r, FALSE);
+- break;
++ case divide:
++ doBinary (p, (char *) "^", 1, left, right, l, r, FALSE);
++ break;
+
+
+- default:
+- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+- }
++ default:
++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
++ }
++ }
+ else
+- switch (op)
+- {
+- case plus:
+- doBinary (p, (char *) "+", 1, left, right, l, r, FALSE);
+- break;
++ {
++ switch (op)
++ {
++ case plus:
++ doBinary (p, (char *) "+", 1, left, right, l, r, FALSE);
++ break;
+
+- case sub:
+- doBinary (p, (char *) "-", 1, left, right, l, r, FALSE);
+- break;
++ case sub:
++ doBinary (p, (char *) "-", 1, left, right, l, r, FALSE);
++ break;
+
+- case mult:
+- doBinary (p, (char *) "*", 1, left, right, l, r, FALSE);
+- break;
++ case mult:
++ doBinary (p, (char *) "*", 1, left, right, l, r, FALSE);
++ break;
+
+- case divide:
+- doBinary (p, (char *) "/", 1, left, right, l, r, FALSE);
+- break;
++ case divide:
++ doBinary (p, (char *) "/", 1, left, right, l, r, FALSE);
++ break;
+
+
+- default:
+- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+- }
++ default:
++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
++ }
++ }
+ }
+
+
+@@ -8996,12 +9377,18 @@ static void doBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_
+ outText (p, (char *) ")", 1);
+ }
+ else
+- doExprCup (p, left, unpackProc);
++ {
++ doExprCup (p, left, unpackProc);
++ }
+ if (l)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ outText (p, (char *) op, _op_high);
+ if (r)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ if (needsParen (right))
+ {
+ outText (p, (char *) "(", 1);
+@@ -9009,7 +9396,9 @@ static void doBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, decl_
+ outText (p, (char *) ")", 1);
+ }
+ else
+- doExprCup (p, right, unpackProc);
++ {
++ doExprCup (p, right, unpackProc);
++ }
+ }
+
+
+@@ -9282,10 +9671,14 @@ static void doPreBinary (mcPretty_pretty p, char *op_, unsigned int _op_high, de
+ memcpy (op, op_, _op_high+1);
+
+ if (l)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ outText (p, (char *) op, _op_high);
+ if (r)
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ outText (p, (char *) "(", 1);
+ doExprC (p, left);
+ outText (p, (char *) ",", 1);
+@@ -9322,7 +9715,9 @@ static void doEnumerationField (mcPretty_pretty p, decl_node n)
+ static unsigned int isZero (decl_node n)
+ {
+ if (isConstExp (n))
+- return isZero (n->unaryF.arg);
++ {
++ return isZero (n->unaryF.arg);
++ }
+ return (decl_getSymName (n)) == (nameKey_makeKey ((char *) "0", 1));
+ }
+
+@@ -9341,7 +9736,9 @@ static void doArrayRef (mcPretty_pretty p, decl_node n)
+ mcDebug_assert (isArrayRef (n));
+ t = decl_skipType (decl_getType (n->arrayrefF.array));
+ if (decl_isUnbounded (t))
+- outTextN (p, decl_getSymName (n->arrayrefF.array));
++ {
++ outTextN (p, decl_getSymName (n->arrayrefF.array));
++ }
+ else
+ {
+ doExprC (p, n->arrayrefF.array);
+@@ -9355,7 +9752,9 @@ static void doArrayRef (mcPretty_pretty p, decl_node n)
+ {
+ doExprC (p, getExpList (n->arrayrefF.index, i));
+ if (decl_isUnbounded (t))
+- mcDebug_assert (c == 1);
++ {
++ mcDebug_assert (c == 1);
++ }
+ else
+ {
+ doSubtractC (p, getMin (t->arrayF.subr));
+@@ -9445,7 +9844,9 @@ static void doSetValueC (mcPretty_pretty p, decl_node n)
+ mcPretty_setNeedSpace (p);
+ }
+ if ((Indexing_HighIndice (n->setvalueF.values)) == 0)
+- outText (p, (char *) "0", 1);
++ {
++ outText (p, (char *) "0", 1);
++ }
+ else
+ {
+ i = Indexing_LowIndice (n->setvalueF.values);
+@@ -9485,14 +9886,20 @@ static decl_node getSetLow (decl_node n)
+ decl_node type;
+
+ if ((decl_getType (n)) == NULL)
+- return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1));
++ {
++ return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1));
++ }
+ else
+ {
+ type = decl_skipType (decl_getType (n));
+ if (decl_isSet (type))
+- return getMin (decl_skipType (decl_getType (type)));
++ {
++ return getMin (decl_skipType (decl_getType (type)));
++ }
+ else
+- return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1));
++ {
++ return decl_makeLiteralInt (nameKey_makeKey ((char *) "0", 1));
++ }
+ }
+ }
+
+@@ -9533,20 +9940,15 @@ static void doInC (mcPretty_pretty p, decl_node l, decl_node r)
+
+ static void doThrowC (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- outText (p, (char *) "throw", 5);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ")", 1);
+- }
+- else
+- M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to THROW') */
++ mcDebug_assert (isIntrinsic (n));
++ outText (p, (char *) "throw", 5);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
++ }
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -9619,46 +10021,73 @@ static void doExprC (mcPretty_pretty p, decl_node n)
+ doUnary (p, (char *) "!", 1, n->unaryF.arg, n->unaryF.resultType, FALSE, TRUE);
+ break;
+
+- case adr:
+- doUnary (p, (char *) "&", 1, n->unaryF.arg, n->unaryF.resultType, TRUE, FALSE);
++ case val:
++ doValC (p, n);
+ break;
+
+- case size:
+- doUnary (p, (char *) "sizeof", 6, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ case adr:
++ doAdrC (p, n);
+ break;
+
++ case size:
+ case tsize:
+- doUnary (p, (char *) "sizeof", 6, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ doSizeC (p, n);
+ break;
+
+- case trunc:
+- doUnary (p, (char *) "TRUNC", 5, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ case float_:
++ doConvertC (p, n, (char *) "(double)", 8);
+ break;
+
+- case float_:
+- doUnary (p, (char *) "FLOAT", 5, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ case trunc:
++ doConvertC (p, n, (char *) "(int)", 5);
+ break;
+
+ case ord:
+- doUnary (p, (char *) "ORD", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ doConvertC (p, n, (char *) "(unsigned int)", 14);
+ break;
+
+ case chr:
+- doUnary (p, (char *) "CHR", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ doConvertC (p, n, (char *) "(char)", 6);
+ break;
+
+ case cap:
+- doUnary (p, (char *) "CAP", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ doCapC (p, n);
++ break;
++
++ case abs_:
++ doAbsC (p, n);
+ break;
+
+ case high:
+- doUnary (p, (char *) "HIGH", 4, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
++ doFuncHighC (p, n->unaryF.arg);
++ break;
++
++ case length:
++ doLengthC (p, n);
++ break;
++
++ case min:
++ doMinC (p, n);
++ break;
++
++ case max:
++ doMaxC (p, n);
++ break;
++
++ case throw:
++ doThrowC (p, n);
+ break;
+
+ case re:
++ doReC (p, n);
++ break;
++
+ case im:
++ doImC (p, n);
++ break;
++
+ case cmplx:
+- M2RTS_HALT (-1); /* should all be function calls. */
++ doCmplx (p, n);
+ break;
+
+ case deref:
+@@ -9701,10 +10130,6 @@ static void doExprC (mcPretty_pretty p, decl_node n)
+ doCastC (p, n->binaryF.left, n->binaryF.right);
+ break;
+
+- case val:
+- doPreBinary (p, (char *) "VAL", 3, n->binaryF.left, n->binaryF.right, TRUE, TRUE);
+- break;
+-
+ case plus:
+ doPolyBinary (p, (nodeT) plus, n->binaryF.left, n->binaryF.right, FALSE, FALSE);
+ break;
+@@ -9757,14 +10182,6 @@ static void doExprC (mcPretty_pretty p, decl_node n)
+ doStringC (p, n);
+ break;
+
+- case max:
+- doUnary (p, (char *) "MAX", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
+- break;
+-
+- case min:
+- doUnary (p, (char *) "MIN", 3, n->unaryF.arg, n->unaryF.resultType, TRUE, TRUE);
+- break;
+-
+ case var:
+ doVar (p, n);
+ break;
+@@ -9845,7 +10262,9 @@ static void doExprCup (mcPretty_pretty p, decl_node n, unsigned int unpackProc)
+ {
+ t = decl_skipType (getExprType (n));
+ if ((t != NULL) && (isAProcType (t)))
+- outText (p, (char *) ".proc", 5);
++ {
++ outText (p, (char *) ".proc", 5);
++ }
+ }
+ }
+
+@@ -10048,7 +10467,9 @@ static void doVar (mcPretty_pretty p, decl_node n)
+ outText (p, (char *) ")", 1);
+ }
+ else
+- doFQDNameC (p, n, TRUE);
++ {
++ doFQDNameC (p, n, TRUE);
++ }
+ }
+
+
+@@ -10068,18 +10489,22 @@ static void doLiteralC (mcPretty_pretty p, decl_node n)
+ {
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
+ if ((DynamicStrings_char (s, 0)) != '0')
+- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s));
++ }
+ }
+ outText (p, (char *) "(char)", 6);
+ mcPretty_setNeedSpace (p);
+ }
+ else if ((DynamicStrings_char (s, -1)) == 'H')
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "0x", 2);
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
+ }
+ else if ((DynamicStrings_char (s, -1)) == 'B')
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "0", 1);
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
+ }
+@@ -10104,7 +10529,9 @@ static void doLiteral (mcPretty_pretty p, decl_node n)
+ {
+ s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, -1);
+ if ((DynamicStrings_char (s, 0)) != '0')
+- s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "0", 1), DynamicStrings_Mark (s));
++ }
+ }
+ outText (p, (char *) "(char)", 6);
+ mcPretty_setNeedSpace (p);
+@@ -10179,11 +10606,15 @@ static DynamicStrings_String replaceChar (DynamicStrings_String s, char ch, char
+ }
+ else if (i > 0)
+ {
++ /* avoid dangling else. */
+ s = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_Slice (s, 0, i), DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high))), DynamicStrings_Slice (s, i+1, 0));
+ i += StrLib_StrLen ((char *) a, _a_high);
+ }
+ else
+- return s;
++ {
++ /* avoid dangling else. */
++ return s;
++ }
+ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+ }
+@@ -10236,7 +10667,9 @@ static unsigned int countChar (DynamicStrings_String s, char ch)
+ c += 1;
+ }
+ else
+- return c;
++ {
++ return c;
++ }
+ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+ }
+@@ -10396,6 +10829,7 @@ static mcPretty_pretty outKm2 (mcPretty_pretty p, char *a_, unsigned int _a_high
+ }
+ else if (StrLib_StrEqual ((char *) a, _a_high, (char *) "END", 3))
+ {
++ /* avoid dangling else. */
+ p = mcPretty_popPretty (p);
+ outText (p, (char *) a, _a_high);
+ p = mcPretty_popPretty (p);
+@@ -10422,7 +10856,9 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high)
+ s = DynamicStrings_InitString ((char *) a, _a_high);
+ i = DynamicStrings_Index (s, '\\', 0);
+ if (i == -1)
+- t = NULL;
++ {
++ t = NULL;
++ }
+ else
+ {
+ t = DynamicStrings_Slice (s, i, 0);
+@@ -10439,6 +10875,7 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high)
+ }
+ else if ((DynamicStrings_char (s, 0)) == '}')
+ {
++ /* avoid dangling else. */
+ p = mcPretty_popPretty (p);
+ outTextS (p, s);
+ p = mcPretty_popPretty (p);
+@@ -10457,7 +10894,9 @@ static mcPretty_pretty outKc (mcPretty_pretty p, char *a_, unsigned int _a_high)
+ static void outTextS (mcPretty_pretty p, DynamicStrings_String s)
+ {
+ if (s != NULL)
+- mcPretty_prints (p, s);
++ {
++ mcPretty_prints (p, s);
++ }
+ }
+
+
+@@ -10498,11 +10937,17 @@ static void doTypeAliasC (mcPretty_pretty p, decl_node n, decl_node *m)
+ mcPretty_print (p, (char *) "typedef", 7);
+ mcPretty_setNeedSpace (p);
+ if ((decl_isTypeHidden (n)) && ((decl_isDef (decl_getMainModule ())) || ((decl_getScope (n)) != (decl_getMainModule ()))))
+- outText (p, (char *) "void *", 6);
++ {
++ outText (p, (char *) "void *", 6);
++ }
+ else
+- doTypeC (p, decl_getType (n), m);
++ {
++ doTypeC (p, decl_getType (n), m);
++ }
+ if ((*m) != NULL)
+- doFQNameC (p, (*m));
++ {
++ doFQNameC (p, (*m));
++ }
+ mcPretty_print (p, (char *) ";\\n\\n", 5);
+ }
+
+@@ -10557,7 +11002,9 @@ static void doNamesC (mcPretty_pretty p, nameKey_Name n)
+ static void doNameC (mcPretty_pretty p, decl_node n)
+ {
+ if ((n != NULL) && ((decl_getSymName (n)) != nameKey_NulName))
+- doNamesC (p, decl_getSymName (n));
++ {
++ doNamesC (p, decl_getSymName (n));
++ }
+ }
+
+
+@@ -10580,13 +11027,17 @@ static nameKey_Name doCname (nameKey_Name n, cnameT *c, unsigned int scopes)
+ DynamicStrings_String s;
+
+ if ((*c).init)
+- return (*c).name;
++ {
++ return (*c).name;
++ }
+ else
+ {
+ (*c).init = TRUE;
+ s = keyc_cname (n, scopes);
+ if (s == NULL)
+- (*c).name = n;
++ {
++ (*c).name = n;
++ }
+ else
+ {
+ (*c).name = nameKey_makekey (DynamicStrings_string (s));
+@@ -10639,7 +11090,9 @@ static nameKey_Name getDName (decl_node n, unsigned int scopes)
+ static void doDNameC (mcPretty_pretty p, decl_node n, unsigned int scopes)
+ {
+ if ((n != NULL) && ((decl_getSymName (n)) != nameKey_NulName))
+- doNamesC (p, getDName (n, scopes));
++ {
++ doNamesC (p, getDName (n, scopes));
++ }
+ }
+
+
+@@ -10729,9 +11182,13 @@ static decl_node getParameterVariable (decl_node n, nameKey_Name m)
+
+ mcDebug_assert ((decl_isParam (n)) || (decl_isVarParam (n)));
+ if (decl_isParam (n))
+- p = n->paramF.scope;
++ {
++ p = n->paramF.scope;
++ }
+ else
+- p = n->varparamF.scope;
++ {
++ p = n->varparamF.scope;
++ }
+ mcDebug_assert (decl_isProcedure (p));
+ return decl_lookupInScope (p, m);
+ }
+@@ -10790,16 +11247,26 @@ static void doParamC (mcPretty_pretty p, decl_node n)
+ doTypeNameC (p, ptype);
+ i = wlists_getItemFromList (l, c);
+ if ((decl_isArray (ptype)) && (decl_isUnbounded (ptype)))
+- mcPretty_noSpace (p);
++ {
++ mcPretty_noSpace (p);
++ }
+ else
+- mcPretty_setNeedSpace (p);
++ {
++ mcPretty_setNeedSpace (p);
++ }
+ v = getParameterVariable (n, i);
+ if (v == NULL)
+- doNamesC (p, keyc_cnamen (i, TRUE));
++ {
++ doNamesC (p, keyc_cnamen (i, TRUE));
++ }
+ else
+- doFQDNameC (p, v, TRUE);
++ {
++ doFQDNameC (p, v, TRUE);
++ }
+ if ((decl_isArray (ptype)) && (decl_isUnbounded (ptype)))
+- outText (p, (char *) "_", 1);
++ {
++ outText (p, (char *) "_", 1);
++ }
+ doHighC (p, ptype, i);
+ if (c < t)
+ {
+@@ -10850,7 +11317,9 @@ static void doVarParamC (mcPretty_pretty p, decl_node n)
+ mcDebug_assert (isIdentList (n->varparamF.namelist));
+ l = n->varparamF.namelist->identlistF.names;
+ if (l == NULL)
+- doTypeNameC (p, ptype);
++ {
++ doTypeNameC (p, ptype);
++ }
+ else
+ {
+ t = wlists_noOfItemsInList (l);
+@@ -10866,9 +11335,13 @@ static void doVarParamC (mcPretty_pretty p, decl_node n)
+ i = wlists_getItemFromList (l, c);
+ v = getParameterVariable (n, i);
+ if (v == NULL)
+- doNamesC (p, keyc_cnamen (i, TRUE));
++ {
++ doNamesC (p, keyc_cnamen (i, TRUE));
++ }
+ else
+- doFQDNameC (p, v, TRUE);
++ {
++ doFQDNameC (p, v, TRUE);
++ }
+ doHighC (p, ptype, i);
+ if (c < t)
+ {
+@@ -10915,13 +11388,24 @@ static void doOptargC (mcPretty_pretty p, decl_node n)
+ static void doParameterC (mcPretty_pretty p, decl_node n)
+ {
+ if (decl_isParam (n))
+- doParamC (p, n);
++ {
++ doParamC (p, n);
++ }
+ else if (decl_isVarParam (n))
+- doVarParamC (p, n);
++ {
++ /* avoid dangling else. */
++ doVarParamC (p, n);
++ }
+ else if (decl_isVarargs (n))
+- mcPretty_print (p, (char *) "...", 3);
++ {
++ /* avoid dangling else. */
++ mcPretty_print (p, (char *) "...", 3);
++ }
+ else if (decl_isOptarg (n))
+- doOptargC (p, n);
++ {
++ /* avoid dangling else. */
++ doOptargC (p, n);
++ }
+ }
+
+
+@@ -10949,19 +11433,25 @@ static void doTypesC (decl_node n)
+ {
+ m = decl_getType (n);
+ if (decl_isProcType (m))
+- doProcTypeC (doP, n, m);
++ {
++ doProcTypeC (doP, n, m);
++ }
+ else if ((decl_isType (m)) || (decl_isPointer (m)))
+ {
++ /* avoid dangling else. */
+ outText (doP, (char *) "typedef", 7);
+ mcPretty_setNeedSpace (doP);
+ doTypeC (doP, m, &m);
+ if (decl_isType (m))
+- mcPretty_setNeedSpace (doP);
++ {
++ mcPretty_setNeedSpace (doP);
++ }
+ doTypeNameC (doP, n);
+ outText (doP, (char *) ";\\n\\n", 5);
+ }
+ else if (decl_isEnumeration (m))
+ {
++ /* avoid dangling else. */
+ outText (doP, (char *) "typedef", 7);
+ mcPretty_setNeedSpace (doP);
+ doTypeC (doP, m, &m);
+@@ -10971,11 +11461,14 @@ static void doTypesC (decl_node n)
+ }
+ else
+ {
++ /* avoid dangling else. */
+ outText (doP, (char *) "typedef", 7);
+ mcPretty_setNeedSpace (doP);
+ doTypeC (doP, m, &m);
+ if (decl_isType (m))
+- mcPretty_setNeedSpace (doP);
++ {
++ mcPretty_setNeedSpace (doP);
++ }
+ doTypeNameC (doP, n);
+ outText (doP, (char *) ";\\n\\n", 5);
+ }
+@@ -10995,11 +11488,19 @@ static void doCompletePartialC (decl_node n)
+ {
+ m = decl_getType (n);
+ if (decl_isRecord (m))
+- doCompletePartialRecord (doP, n, m);
++ {
++ doCompletePartialRecord (doP, n, m);
++ }
+ else if (decl_isArray (m))
+- doCompletePartialArray (doP, n, m);
++ {
++ /* avoid dangling else. */
++ doCompletePartialArray (doP, n, m);
++ }
+ else if (decl_isProcType (m))
+- doCompletePartialProcType (doP, n, m);
++ {
++ /* avoid dangling else. */
++ doCompletePartialProcType (doP, n, m);
++ }
+ }
+ }
+
+@@ -11039,11 +11540,15 @@ static void doCompletePartialRecord (mcPretty_pretty p, decl_node t, decl_node r
+ }
+ else if (decl_isVarient (f))
+ {
++ /* avoid dangling else. */
+ doVarientC (p, f);
+ outText (p, (char *) ";\\n", 3);
+ }
+ else if (decl_isVarientField (f))
+- doVarientFieldC (p, f);
++ {
++ /* avoid dangling else. */
++ doVarientFieldC (p, f);
++ }
+ i += 1;
+ }
+ p = outKc (p, (char *) "};\\n\\n", 6);
+@@ -11094,56 +11599,73 @@ static decl_node lookupConst (decl_node type, nameKey_Name n)
+ static decl_node doMin (decl_node n)
+ {
+ if (n == booleanN)
+- return falseN;
++ {
++ return falseN;
++ }
+ else if (n == integerN)
+ {
++ /* avoid dangling else. */
+ keyc_useIntMin ();
+ return lookupConst (integerN, nameKey_makeKey ((char *) "INT_MIN", 7));
+ }
+ else if (n == cardinalN)
+ {
++ /* avoid dangling else. */
+ keyc_useUIntMin ();
+ return lookupConst (cardinalN, nameKey_makeKey ((char *) "UINT_MIN", 8));
+ }
+ else if (n == longintN)
+ {
++ /* avoid dangling else. */
+ keyc_useLongMin ();
+ return lookupConst (longintN, nameKey_makeKey ((char *) "LONG_MIN", 8));
+ }
+ else if (n == longcardN)
+ {
++ /* avoid dangling else. */
+ keyc_useULongMin ();
+ return lookupConst (longcardN, nameKey_makeKey ((char *) "LONG_MIN", 8));
+ }
+ else if (n == charN)
+ {
++ /* avoid dangling else. */
+ keyc_useCharMin ();
+ return lookupConst (charN, nameKey_makeKey ((char *) "CHAR_MIN", 8));
+ }
+ else if (n == bitsetN)
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (decl_isSubrange (bitnumN));
+ return bitnumN->subrangeF.low;
+ }
+ else if (n == locN)
+ {
++ /* avoid dangling else. */
+ keyc_useUCharMin ();
+ return lookupConst (locN, nameKey_makeKey ((char *) "UCHAR_MIN", 9));
+ }
+ else if (n == byteN)
+ {
++ /* avoid dangling else. */
+ keyc_useUCharMin ();
+ return lookupConst (byteN, nameKey_makeKey ((char *) "UCHAR_MIN", 9));
+ }
+ else if (n == wordN)
+ {
++ /* avoid dangling else. */
+ keyc_useUIntMin ();
+ return lookupConst (wordN, nameKey_makeKey ((char *) "UCHAR_MIN", 9));
+ }
+ else if (n == addressN)
+- return lookupConst (addressN, nameKey_makeKey ((char *) "((void *) 0)", 12));
++ {
++ /* avoid dangling else. */
++ return lookupConst (addressN, nameKey_makeKey ((char *) "((void *) 0)", 12));
++ }
+ else
+- M2RTS_HALT (-1); /* finish the cacading elsif statement. */
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1); /* finish the cacading elsif statement. */
++ }
+ }
+
+
+@@ -11154,59 +11676,74 @@ static decl_node doMin (decl_node n)
+ static decl_node doMax (decl_node n)
+ {
+ if (n == booleanN)
+- return trueN;
++ {
++ return trueN;
++ }
+ else if (n == integerN)
+ {
++ /* avoid dangling else. */
+ keyc_useIntMax ();
+ return lookupConst (integerN, nameKey_makeKey ((char *) "INT_MAX", 7));
+ }
+ else if (n == cardinalN)
+ {
++ /* avoid dangling else. */
+ keyc_useUIntMax ();
+ return lookupConst (cardinalN, nameKey_makeKey ((char *) "UINT_MAX", 8));
+ }
+ else if (n == longintN)
+ {
++ /* avoid dangling else. */
+ keyc_useLongMax ();
+ return lookupConst (longintN, nameKey_makeKey ((char *) "LONG_MAX", 8));
+ }
+ else if (n == longcardN)
+ {
++ /* avoid dangling else. */
+ keyc_useULongMax ();
+ return lookupConst (longcardN, nameKey_makeKey ((char *) "ULONG_MAX", 9));
+ }
+ else if (n == charN)
+ {
++ /* avoid dangling else. */
+ keyc_useCharMax ();
+ return lookupConst (charN, nameKey_makeKey ((char *) "CHAR_MAX", 8));
+ }
+ else if (n == bitsetN)
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (decl_isSubrange (bitnumN));
+ return bitnumN->subrangeF.high;
+ }
+ else if (n == locN)
+ {
++ /* avoid dangling else. */
+ keyc_useUCharMax ();
+ return lookupConst (locN, nameKey_makeKey ((char *) "UCHAR_MAX", 9));
+ }
+ else if (n == byteN)
+ {
++ /* avoid dangling else. */
+ keyc_useUCharMax ();
+ return lookupConst (byteN, nameKey_makeKey ((char *) "UCHAR_MAX", 9));
+ }
+ else if (n == wordN)
+ {
++ /* avoid dangling else. */
+ keyc_useUIntMax ();
+ return lookupConst (wordN, nameKey_makeKey ((char *) "UINT_MAX", 8));
+ }
+ else if (n == addressN)
+ {
++ /* avoid dangling else. */
+ mcMetaError_metaError1 ((char *) "trying to obtain MAX ({%1ad}) is illegal", 40, (unsigned char *) &n, (sizeof (n)-1));
+ return NULL;
+ }
+ else
+- M2RTS_HALT (-1); /* finish the cacading elsif statement. */
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1); /* finish the cacading elsif statement. */
++ }
+ }
+
+
+@@ -11218,11 +11755,17 @@ static decl_node getMax (decl_node n)
+ {
+ n = decl_skipType (n);
+ if (decl_isSubrange (n))
+- return n->subrangeF.high;
++ {
++ return n->subrangeF.high;
++ }
+ else if (decl_isEnumeration (n))
+- return n->enumerationF.high;
++ {
++ /* avoid dangling else. */
++ return n->enumerationF.high;
++ }
+ else
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (isOrdinal (n));
+ return doMax (n);
+ }
+@@ -11237,11 +11780,17 @@ static decl_node getMin (decl_node n)
+ {
+ n = decl_skipType (n);
+ if (decl_isSubrange (n))
+- return n->subrangeF.low;
++ {
++ return n->subrangeF.low;
++ }
+ else if (decl_isEnumeration (n))
+- return n->enumerationF.low;
++ {
++ /* avoid dangling else. */
++ return n->enumerationF.low;
++ }
+ else
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (isOrdinal (n));
+ return doMin (n);
+ }
+@@ -11282,6 +11831,7 @@ static void doSubrC (mcPretty_pretty p, decl_node s)
+ }
+ else if (decl_isEnumeration (s))
+ {
++ /* avoid dangling else. */
+ low = getMin (s);
+ high = getMax (s);
+ doExprC (p, high);
+@@ -11290,9 +11840,12 @@ static void doSubrC (mcPretty_pretty p, decl_node s)
+ }
+ else
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (decl_isSubrange (s));
+ if ((s->subrangeF.high == NULL) || (s->subrangeF.low == NULL))
+- doSubrC (p, decl_getType (s));
++ {
++ doSubrC (p, decl_getType (s));
++ }
+ else
+ {
+ doExprC (p, s->subrangeF.high);
+@@ -11338,7 +11891,9 @@ static void doCompletePartialProcType (mcPretty_pretty p, decl_node t, decl_node
+ i += 1;
+ }
+ if (h == 0)
+- outText (p, (char *) "void", 4);
++ {
++ outText (p, (char *) "void", 4);
++ }
+ outText (p, (char *) ");\\n", 4);
+ outText (p, (char *) "struct", 6);
+ mcPretty_setNeedSpace (p);
+@@ -11581,7 +12136,9 @@ static void doArrayC (mcPretty_pretty p, decl_node n)
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "array[", 6);
+ if (isZero (getMin (s)))
+- doExprC (p, getMax (s));
++ {
++ doExprC (p, getMax (s));
++ }
+ else
+ {
+ doExprC (p, getMax (s));
+@@ -11660,15 +12217,21 @@ static void doVarientFieldC (mcPretty_pretty p, decl_node n)
+ }
+ else if (decl_isVarient (q))
+ {
++ /* avoid dangling else. */
+ doVarientC (p, q);
+ outText (p, (char *) ";\\n", 3);
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ i += 1;
+ }
+ if (! n->varientfieldF.simple)
+- p = outKc (p, (char *) "};\\n", 4);
++ {
++ p = outKc (p, (char *) "};\\n", 4);
++ }
+ }
+
+
+@@ -11692,10 +12255,16 @@ static void doVarientC (mcPretty_pretty p, decl_node n)
+ outText (p, (char *) "; /* case tag */\\n", 19);
+ }
+ else if (decl_isVarientField (n->varientF.tag))
+- /* doVarientFieldC (p, n^.varientF.tag) */
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ /* doVarientFieldC (p, n^.varientF.tag) */
++ M2RTS_HALT (-1);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ }
+ outText (p, (char *) "union", 5);
+ mcPretty_setNeedSpace (p);
+@@ -11715,9 +12284,15 @@ static void doVarientC (mcPretty_pretty p, decl_node n)
+ }
+ }
+ else if (decl_isVarientField (q))
+- doVarientFieldC (p, q);
++ {
++ /* avoid dangling else. */
++ doVarientFieldC (p, q);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ i += 1;
+ }
+ p = outKc (p, (char *) "}", 1);
+@@ -11756,11 +12331,15 @@ static void doRecordC (mcPretty_pretty p, decl_node n, decl_node *m)
+ }
+ else if (decl_isVarient (f))
+ {
++ /* avoid dangling else. */
+ doVarientC (p, f);
+ outText (p, (char *) ";\\n", 3);
+ }
+ else if (decl_isVarientField (f))
+- doVarientFieldC (p, f);
++ {
++ /* avoid dangling else. */
++ doVarientFieldC (p, f);
++ }
+ i += 1;
+ }
+ p = outKc (p, (char *) "}", 1);
+@@ -11829,15 +12408,27 @@ static void doSetC (mcPretty_pretty p, decl_node n)
+ static void doTypeC (mcPretty_pretty p, decl_node n, decl_node *m)
+ {
+ if (n == NULL)
+- outText (p, (char *) "void", 4);
++ {
++ outText (p, (char *) "void", 4);
++ }
+ else if (isBase (n))
+- doBaseC (p, n);
++ {
++ /* avoid dangling else. */
++ doBaseC (p, n);
++ }
+ else if (isSystem (n))
+- doSystemC (p, n);
++ {
++ /* avoid dangling else. */
++ doSystemC (p, n);
++ }
+ else if (decl_isEnumeration (n))
+- doEnumerationC (p, n);
++ {
++ /* avoid dangling else. */
++ doEnumerationC (p, n);
++ }
+ else if (decl_isType (n))
+ {
++ /* avoid dangling else. */
+ doFQNameC (p, n);
+ /*
+ ELSIF isProcType (n) OR isArray (n) OR isRecord (n)
+@@ -11847,19 +12438,38 @@ static void doTypeC (mcPretty_pretty p, decl_node n, decl_node *m)
+ mcPretty_setNeedSpace (p);
+ }
+ else if (decl_isProcType (n))
+- doProcTypeC (p, n, (*m));
++ {
++ /* avoid dangling else. */
++ doProcTypeC (p, n, (*m));
++ }
+ else if (decl_isArray (n))
+- doArrayC (p, n);
++ {
++ /* avoid dangling else. */
++ doArrayC (p, n);
++ }
+ else if (decl_isRecord (n))
+- doRecordC (p, n, m);
++ {
++ /* avoid dangling else. */
++ doRecordC (p, n, m);
++ }
+ else if (decl_isPointer (n))
+- doPointerC (p, n, m);
++ {
++ /* avoid dangling else. */
++ doPointerC (p, n, m);
++ }
+ else if (decl_isSubrange (n))
+- doSubrangeC (p, n);
++ {
++ /* avoid dangling else. */
++ doSubrangeC (p, n);
++ }
+ else if (decl_isSet (n))
+- doSetC (p, n);
++ {
++ /* avoid dangling else. */
++ doSetC (p, n);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ /* --fixme-- */
+ mcPretty_print (p, (char *) "to do ... typedef etc etc ", 27);
+ doFQNameC (p, n);
+@@ -11922,28 +12532,54 @@ static void doTypeNameC (mcPretty_pretty p, decl_node n)
+ mcPretty_setNeedSpace (p);
+ }
+ else if (isBase (n))
+- doBaseC (p, n);
++ {
++ /* avoid dangling else. */
++ doBaseC (p, n);
++ }
+ else if (isSystem (n))
+- doSystemC (p, n);
++ {
++ /* avoid dangling else. */
++ doSystemC (p, n);
++ }
+ else if (decl_isEnumeration (n))
+- mcPretty_print (p, (char *) "is enumeration type name required\\n", 35);
++ {
++ /* avoid dangling else. */
++ mcPretty_print (p, (char *) "is enumeration type name required\\n", 35);
++ }
+ else if (decl_isType (n))
+- doFQNameC (p, n);
++ {
++ /* avoid dangling else. */
++ doFQNameC (p, n);
++ }
+ else if (decl_isProcType (n))
+ {
++ /* avoid dangling else. */
+ mcPretty_print (p, (char *) "is proc type name required\\n", 28);
+ stop ();
+ }
+ else if (decl_isArray (n))
+- doArrayNameC (p, n);
++ {
++ /* avoid dangling else. */
++ doArrayNameC (p, n);
++ }
+ else if (decl_isRecord (n))
+- doRecordNameC (p, n);
++ {
++ /* avoid dangling else. */
++ doRecordNameC (p, n);
++ }
+ else if (decl_isPointer (n))
+- doPointerNameC (p, n);
++ {
++ /* avoid dangling else. */
++ doPointerNameC (p, n);
++ }
+ else if (decl_isSubrange (n))
+- doSubrangeC (p, n);
++ {
++ /* avoid dangling else. */
++ doSubrangeC (p, n);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ mcPretty_print (p, (char *) "is type unknown required\\n", 26);
+ stop ();
+ }
+@@ -11978,16 +12614,20 @@ static void doVarC (decl_node n)
+ }
+ else if ((! (decl_isExported (n))) && (! (isLocal (n))))
+ {
++ /* avoid dangling else. */
+ mcPretty_print (doP, (char *) "static", 6);
+ mcPretty_setNeedSpace (doP);
+ }
+ else if (mcOptions_getExtendedOpaque ())
+- if (isExternal (n))
+- {
+- /* different module declared this variable, therefore it is extern. */
+- mcPretty_print (doP, (char *) "extern", 6);
+- mcPretty_setNeedSpace (doP);
+- }
++ {
++ /* avoid dangling else. */
++ if (isExternal (n))
++ {
++ /* different module declared this variable, therefore it is extern. */
++ mcPretty_print (doP, (char *) "extern", 6);
++ mcPretty_setNeedSpace (doP);
++ }
++ }
+ s = NULL;
+ doTypeC (doP, decl_getType (n), &s);
+ mcPretty_setNeedSpace (doP);
+@@ -12019,8 +12659,10 @@ static void doProcedureCommentText (mcPretty_pretty p, DynamicStrings_String s)
+ /* remove
+ from the start of the comment. */
+ while (((DynamicStrings_Length (s)) > 0) && ((DynamicStrings_char (s, 0)) == ASCII_lf))
+- s = DynamicStrings_Slice (s, 1, 0);
+- outTextS (p, s);
++ {
++ s = DynamicStrings_Slice (s, 1, 0);
++ }
++ outTextS (p, s);
+ }
+
+
+@@ -12060,11 +12702,13 @@ static void doProcedureHeadingC (decl_node n)
+ }
+ else if (decl_isExported (n))
+ {
++ /* avoid dangling else. */
+ doProcedureComment (doP, mcComment_getContent (n->procedureF.modComment));
+ doExternCP (doP);
+ }
+ else
+ {
++ /* avoid dangling else. */
+ doProcedureComment (doP, mcComment_getContent (n->procedureF.modComment));
+ outText (doP, (char *) "static", 6);
+ mcPretty_setNeedSpace (doP);
+@@ -12090,7 +12734,9 @@ static void doProcedureHeadingC (decl_node n)
+ i += 1;
+ }
+ if (h == 0)
+- outText (doP, (char *) "void", 4);
++ {
++ outText (doP, (char *) "void", 4);
++ }
+ mcPretty_print (doP, (char *) ")", 1);
+ }
+
+@@ -12200,7 +12846,9 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n)
+ {
+ q = Indexing_GetIndice (n->procedureF.parameters, i);
+ if (decl_isParam (q))
+- seen = (checkDeclareUnboundedParamCopyC (p, q)) || seen;
++ {
++ seen = (checkDeclareUnboundedParamCopyC (p, q)) || seen;
++ }
+ i += 1;
+ }
+ if (seen)
+@@ -12212,7 +12860,9 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n)
+ {
+ q = Indexing_GetIndice (n->procedureF.parameters, i);
+ if (decl_isParam (q))
+- checkUnboundedParamCopyC (p, q);
++ {
++ checkUnboundedParamCopyC (p, q);
++ }
+ i += 1;
+ }
+ }
+@@ -12226,13 +12876,15 @@ static void doUnboundedParamCopyC (mcPretty_pretty p, decl_node n)
+ static void doPrototypeC (decl_node n)
+ {
+ if (! (decl_isExported (n)))
+- if (! ((mcOptions_getExtendedOpaque ()) && (isDefForC (decl_getScope (n)))))
+- {
+- keyc_enterScope (n);
+- doProcedureHeadingC (n);
+- mcPretty_print (doP, (char *) ";\\n", 3);
+- keyc_leaveScope (n);
+- }
++ {
++ if (! ((mcOptions_getExtendedOpaque ()) && (isDefForC (decl_getScope (n)))))
++ {
++ keyc_enterScope (n);
++ doProcedureHeadingC (n);
++ mcPretty_print (doP, (char *) ";\\n", 3);
++ keyc_leaveScope (n);
++ }
++ }
+ }
+
+
+@@ -12267,7 +12919,9 @@ static void addVariablesTodo (decl_node n)
+ addTodo (decl_getType (n));
+ }
+ else
+- addTodo (n);
++ {
++ addTodo (n);
++ }
+ }
+ }
+
+@@ -12279,9 +12933,13 @@ static void addVariablesTodo (decl_node n)
+ static void addTypesTodo (decl_node n)
+ {
+ if (decl_isUnbounded (n))
+- addDone (n);
++ {
++ addDone (n);
++ }
+ else
+- addTodo (n);
++ {
++ addTodo (n);
++ }
+ }
+
+
+@@ -12442,22 +13100,46 @@ static void doSimplifyNode (alists_alist l, decl_node n)
+ if (n == NULL)
+ {} /* empty. */
+ else if (decl_isType (n))
+- /* no need to simplify a type. */
+- simplifyNode (l, decl_getType (n));
++ {
++ /* avoid dangling else. */
++ /* no need to simplify a type. */
++ simplifyNode (l, decl_getType (n));
++ }
+ else if (decl_isVar (n))
+- simplifyVar (l, n);
++ {
++ /* avoid dangling else. */
++ simplifyVar (l, n);
++ }
+ else if (decl_isRecord (n))
+- simplifyRecord (l, n);
++ {
++ /* avoid dangling else. */
++ simplifyRecord (l, n);
++ }
+ else if (decl_isRecordField (n))
+- simplifyType (l, &n->recordfieldF.type);
++ {
++ /* avoid dangling else. */
++ simplifyType (l, &n->recordfieldF.type);
++ }
+ else if (decl_isArray (n))
+- simplifyType (l, &n->arrayF.type);
++ {
++ /* avoid dangling else. */
++ simplifyType (l, &n->arrayF.type);
++ }
+ else if (decl_isVarient (n))
+- simplifyVarient (l, n);
++ {
++ /* avoid dangling else. */
++ simplifyVarient (l, n);
++ }
+ else if (decl_isVarientField (n))
+- simplifyVarientField (l, n);
++ {
++ /* avoid dangling else. */
++ simplifyVarientField (l, n);
++ }
+ else if (decl_isPointer (n))
+- simplifyType (l, &n->pointerF.type);
++ {
++ /* avoid dangling else. */
++ simplifyType (l, &n->pointerF.type);
++ }
+ }
+
+
+@@ -12588,8 +13270,12 @@ static void addExported (decl_node n)
+
+ s = decl_getScope (n);
+ if (((s != NULL) && (decl_isDef (s))) && (s != defModule))
+- if (((decl_isType (n)) || (decl_isVar (n))) || (decl_isConst (n)))
+- addTodo (n);
++ {
++ if (((decl_isType (n)) || (decl_isVar (n))) || (decl_isConst (n)))
++ {
++ addTodo (n);
++ }
++ }
+ }
+
+
+@@ -12604,7 +13290,10 @@ static void addExternal (decl_node n)
+ {} /* empty. */
+ /* do nothing. */
+ else if (! (decl_isDef (n)))
+- addTodo (n);
++ {
++ /* avoid dangling else. */
++ addTodo (n);
++ }
+ }
+
+
+@@ -12681,14 +13370,17 @@ static void includeDefVarProcedure (decl_node n)
+ /* avoid dangling else. */
+ defModule = decl_lookupDef (decl_getSymName (n));
+ if (defModule != NULL)
+- /*
++ {
++ /*
+ includeVar (defModule^.defF.decls) ;
+ simplifyTypes (defModule^.defF.decls) ;
+ */
+- joinProcedures (n, defModule);
++ joinProcedures (n, defModule);
++ }
+ }
+ else if (decl_isDef (n))
+ {
++ /* avoid dangling else. */
+ includeVar (n->defF.decls);
+ simplifyTypes (n->defF.decls);
+ }
+@@ -12765,7 +13457,9 @@ static unsigned int isSingleStatement (decl_node s)
+ mcDebug_assert (decl_isStatementSequence (s));
+ h = Indexing_HighIndice (s->stmtF.statements);
+ if ((h == 0) || (h > 1))
+- return FALSE;
++ {
++ return FALSE;
++ }
+ s = Indexing_GetIndice (s->stmtF.statements, 1);
+ return (! (decl_isStatementSequence (s))) || (isSingleStatement (s));
+ }
+@@ -12790,7 +13484,9 @@ static void doCommentC (mcPretty_pretty p, decl_node s)
+ outText (p, (char *) " /* ", 4);
+ }
+ else
+- outText (p, (char *) "/* ", 3);
++ {
++ outText (p, (char *) "/* ", 3);
++ }
+ c = mcComment_getContent (s->commentF.content);
+ c = DynamicStrings_RemoveWhitePrefix (DynamicStrings_RemoveWhitePostfix (c));
+ outTextS (p, c);
+@@ -12807,9 +13503,13 @@ static void doCommentC (mcPretty_pretty p, decl_node s)
+ static void doAfterCommentC (mcPretty_pretty p, decl_node c)
+ {
+ if (c == NULL)
+- outText (p, (char *) "\\n", 2);
++ {
++ outText (p, (char *) "\\n", 2);
++ }
+ else
+- doCommentC (p, c);
++ {
++ doCommentC (p, c);
++ }
+ }
+
+
+@@ -12839,31 +13539,33 @@ static void doReturnC (mcPretty_pretty p, decl_node s)
+ static void doExprCastC (mcPretty_pretty p, decl_node e, decl_node type)
+ {
+ if ((decl_skipType (type)) != (decl_skipType (decl_getType (e))))
+- if (lang == ansiCP)
+- {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- /* potentially a cast is required. */
+- if ((decl_isPointer (type)) || (type == addressN))
+- {
+- outText (p, (char *) "reinterpret_cast<", 17);
+- doTypeNameC (p, type);
+- mcPretty_noSpace (p);
+- outText (p, (char *) "> (", 3);
+- doExprC (p, e);
+- outText (p, (char *) ")", 1);
+- return;
+- }
+- else
+- {
+- outText (p, (char *) "static_cast<", 12);
+- doTypeNameC (p, type);
+- mcPretty_noSpace (p);
+- outText (p, (char *) "> (", 3);
+- doExprC (p, e);
+- outText (p, (char *) ")", 1);
+- return;
+- }
+- }
++ {
++ if (lang == ansiCP)
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ /* potentially a cast is required. */
++ if ((decl_isPointer (type)) || (type == addressN))
++ {
++ outText (p, (char *) "reinterpret_cast<", 17);
++ doTypeNameC (p, type);
++ mcPretty_noSpace (p);
++ outText (p, (char *) "> (", 3);
++ doExprC (p, e);
++ outText (p, (char *) ")", 1);
++ return;
++ }
++ else
++ {
++ outText (p, (char *) "static_cast<", 12);
++ doTypeNameC (p, type);
++ mcPretty_noSpace (p);
++ outText (p, (char *) "> (", 3);
++ doExprC (p, e);
++ outText (p, (char *) ")", 1);
++ return;
++ }
++ }
++ }
+ doExprC (p, e);
+ }
+
+@@ -12920,8 +13622,9 @@ static void doCompoundStmt (mcPretty_pretty p, decl_node s)
+ outText (p, (char *) "{} /* empty. */\\n", 19);
+ p = mcPretty_popPretty (p);
+ }
+- else if ((decl_isStatementSequence (s)) && (isSingleStatement (s)))
++ else if (((decl_isStatementSequence (s)) && (isSingleStatement (s))) && ! forceCompoundStatement)
+ {
++ /* avoid dangling else. */
+ p = mcPretty_pushPretty (p);
+ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
+ doStatementSequenceC (p, s);
+@@ -12929,6 +13632,7 @@ static void doCompoundStmt (mcPretty_pretty p, decl_node s)
+ }
+ else
+ {
++ /* avoid dangling else. */
+ p = mcPretty_pushPretty (p);
+ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
+ outText (p, (char *) "{\\n", 3);
+@@ -12955,7 +13659,7 @@ static void doElsifC (mcPretty_pretty p, decl_node s)
+ doExprC (p, s->elsifF.expr);
+ outText (p, (char *) ")\\n", 3);
+ mcDebug_assert ((s->elsifF.else_ == NULL) || (s->elsifF.elsif == NULL));
+- if ((hasIfAndNoElse (s->elsifF.then)) && ((s->elsifF.else_ != NULL) || (s->elsifF.elsif != NULL)))
++ if (forceCompoundStatement || ((hasIfAndNoElse (s->elsifF.then)) && ((s->elsifF.else_ != NULL) || (s->elsifF.elsif != NULL))))
+ {
+ /* avoid dangling else. */
+ p = mcPretty_pushPretty (p);
+@@ -12970,14 +13674,36 @@ static void doElsifC (mcPretty_pretty p, decl_node s)
+ p = mcPretty_popPretty (p);
+ }
+ else
+- doCompoundStmt (p, s->elsifF.then);
++ {
++ doCompoundStmt (p, s->elsifF.then);
++ }
+ if (containsStatement (s->elsifF.else_))
+ {
+ outText (p, (char *) "else\\n", 6);
+- doCompoundStmt (p, s->elsifF.else_);
++ if (forceCompoundStatement)
++ {
++ /* avoid dangling else. */
++ p = mcPretty_pushPretty (p);
++ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
++ outText (p, (char *) "{\\n", 3);
++ p = mcPretty_pushPretty (p);
++ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
++ outText (p, (char *) "/* avoid dangling else. */\\n", 29);
++ doStatementSequenceC (p, s->elsifF.else_);
++ p = mcPretty_popPretty (p);
++ outText (p, (char *) "}\\n", 3);
++ p = mcPretty_popPretty (p);
++ }
++ else
++ {
++ doCompoundStmt (p, s->elsifF.else_);
++ }
+ }
+ else if ((s->elsifF.elsif != NULL) && (decl_isElsif (s->elsifF.elsif)))
+- doElsifC (p, s->elsifF.elsif);
++ {
++ /* avoid dangling else. */
++ doElsifC (p, s->elsifF.elsif);
++ }
+ }
+
+
+@@ -13006,33 +13732,50 @@ static unsigned int noIfElseChained (decl_node n)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (decl_isIf (n))
+- if (n->ifF.else_ != NULL)
+- /* we do have an else, continue to check this statement. */
+- return hasIfAndNoElse (n->ifF.else_);
+- else if (n->ifF.elsif == NULL)
+- /* neither else or elsif. */
+- return TRUE;
+- else
+- {
+- /* test elsif for lack of else. */
+- e = n->ifF.elsif;
+- mcDebug_assert (decl_isElsif (e));
+- return noIfElseChained (e);
+- }
++ {
++ if (n->ifF.else_ != NULL)
++ {
++ /* we do have an else, continue to check this statement. */
++ return hasIfAndNoElse (n->ifF.else_);
++ }
++ else if (n->ifF.elsif == NULL)
++ {
++ /* avoid dangling else. */
++ /* neither else or elsif. */
++ return TRUE;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ /* test elsif for lack of else. */
++ e = n->ifF.elsif;
++ mcDebug_assert (decl_isElsif (e));
++ return noIfElseChained (e);
++ }
++ }
+ else if (decl_isElsif (n))
+- if (n->elsifF.else_ != NULL)
+- /* we do have an else, continue to check this statement. */
+- return hasIfAndNoElse (n->elsifF.else_);
+- else if (n->elsifF.elsif == NULL)
+- /* neither else or elsif. */
+- return TRUE;
+- else
+- {
+- /* test elsif for lack of else. */
+- e = n->elsifF.elsif;
+- mcDebug_assert (decl_isElsif (e));
+- return noIfElseChained (e);
+- }
++ {
++ /* avoid dangling else. */
++ if (n->elsifF.else_ != NULL)
++ {
++ /* we do have an else, continue to check this statement. */
++ return hasIfAndNoElse (n->elsifF.else_);
++ }
++ else if (n->elsifF.elsif == NULL)
++ {
++ /* avoid dangling else. */
++ /* neither else or elsif. */
++ return TRUE;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ /* test elsif for lack of else. */
++ e = n->elsifF.elsif;
++ mcDebug_assert (decl_isElsif (e));
++ return noIfElseChained (e);
++ }
++ }
+ }
+ return FALSE;
+ }
+@@ -13045,17 +13788,22 @@ static unsigned int noIfElseChained (decl_node n)
+ static unsigned int hasIfElse (decl_node n)
+ {
+ if (n != NULL)
+- if (decl_isStatementSequence (n))
+- {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if (isStatementSequenceEmpty (n))
+- return FALSE;
+- else if (isSingleStatement (n))
+- {
+- n = Indexing_GetIndice (n->stmtF.statements, 1);
+- return isIfElse (n);
+- }
+- }
++ {
++ if (decl_isStatementSequence (n))
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if (isStatementSequenceEmpty (n))
++ {
++ return FALSE;
++ }
++ else if (isSingleStatement (n))
++ {
++ /* avoid dangling else. */
++ n = Indexing_GetIndice (n->stmtF.statements, 1);
++ return isIfElse (n);
++ }
++ }
++ }
+ return FALSE;
+ }
+
+@@ -13081,20 +13829,29 @@ static unsigned int hasIfAndNoElse (decl_node n)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (decl_isStatementSequence (n))
+- if (isStatementSequenceEmpty (n))
+- return FALSE;
+- else if (isSingleStatement (n))
+- {
+- n = Indexing_GetIndice (n->stmtF.statements, 1);
+- return hasIfAndNoElse (n);
+- }
+- else
+- {
+- n = Indexing_GetIndice (n->stmtF.statements, Indexing_HighIndice (n->stmtF.statements));
+- return hasIfAndNoElse (n);
+- }
++ {
++ if (isStatementSequenceEmpty (n))
++ {
++ return FALSE;
++ }
++ else if (isSingleStatement (n))
++ {
++ /* avoid dangling else. */
++ n = Indexing_GetIndice (n->stmtF.statements, 1);
++ return hasIfAndNoElse (n);
++ }
++ else
++ {
++ /* avoid dangling else. */
++ n = Indexing_GetIndice (n->stmtF.statements, Indexing_HighIndice (n->stmtF.statements));
++ return hasIfAndNoElse (n);
++ }
++ }
+ else if ((decl_isElsif (n)) || (decl_isIf (n)))
+- return noIfElseChained (n);
++ {
++ /* avoid dangling else. */
++ return noIfElseChained (n);
++ }
+ }
+ return FALSE;
+ }
+@@ -13131,6 +13888,7 @@ static void doIfC (mcPretty_pretty p, decl_node s)
+ }
+ else if ((noIfElse (s)) && (hasIfElse (s->ifF.then)))
+ {
++ /* avoid dangling else. */
+ /* gcc does not like legal non dangling else, as it is poor style.
+ So we will avoid getting a warning. */
+ p = mcPretty_pushPretty (p);
+@@ -13145,7 +13903,10 @@ static void doIfC (mcPretty_pretty p, decl_node s)
+ p = mcPretty_popPretty (p);
+ }
+ else
+- doCompoundStmt (p, s->ifF.then);
++ {
++ /* avoid dangling else. */
++ doCompoundStmt (p, s->ifF.then);
++ }
+ mcDebug_assert ((s->ifF.else_ == NULL) || (s->ifF.elsif == NULL));
+ if (containsStatement (s->ifF.else_))
+ {
+@@ -13156,6 +13917,7 @@ static void doIfC (mcPretty_pretty p, decl_node s)
+ }
+ else if ((s->ifF.elsif != NULL) && (decl_isElsif (s->ifF.elsif)))
+ {
++ /* avoid dangling else. */
+ doCommentC (p, s->ifF.elseComment.body);
+ doCommentC (p, s->ifF.elseComment.after);
+ doElsifC (p, s->ifF.elsif);
+@@ -13176,30 +13938,34 @@ static void doForIncCP (mcPretty_pretty p, decl_node s)
+ mcDebug_assert (decl_isFor (s));
+ t = decl_skipType (decl_getType (s->forF.des));
+ if (decl_isEnumeration (t))
+- if (s->forF.increment == NULL)
+- {
+- doExprC (p, s->forF.des);
+- outText (p, (char *) "= static_cast<", 14);
+- doTypeNameC (p, decl_getType (s->forF.des));
+- mcPretty_noSpace (p);
+- outText (p, (char *) ">(static_cast<int>(", 19);
+- doExprC (p, s->forF.des);
+- outText (p, (char *) "+1))", 4);
+- }
+- else
+- {
+- doExprC (p, s->forF.des);
+- outText (p, (char *) "= static_cast<", 14);
+- doTypeNameC (p, decl_getType (s->forF.des));
+- mcPretty_noSpace (p);
+- outText (p, (char *) ">(static_cast<int>(", 19);
+- doExprC (p, s->forF.des);
+- outText (p, (char *) "+", 1);
+- doExprC (p, s->forF.increment);
+- outText (p, (char *) "))", 2);
+- }
++ {
++ if (s->forF.increment == NULL)
++ {
++ doExprC (p, s->forF.des);
++ outText (p, (char *) "= static_cast<", 14);
++ doTypeNameC (p, decl_getType (s->forF.des));
++ mcPretty_noSpace (p);
++ outText (p, (char *) ">(static_cast<int>(", 19);
++ doExprC (p, s->forF.des);
++ outText (p, (char *) "+1))", 4);
++ }
++ else
++ {
++ doExprC (p, s->forF.des);
++ outText (p, (char *) "= static_cast<", 14);
++ doTypeNameC (p, decl_getType (s->forF.des));
++ mcPretty_noSpace (p);
++ outText (p, (char *) ">(static_cast<int>(", 19);
++ doExprC (p, s->forF.des);
++ outText (p, (char *) "+", 1);
++ doExprC (p, s->forF.increment);
++ outText (p, (char *) "))", 2);
++ }
++ }
+ else
+- doForIncC (p, s);
++ {
++ doForIncC (p, s);
++ }
+ }
+
+
+@@ -13232,9 +13998,13 @@ static void doForIncC (mcPretty_pretty p, decl_node s)
+ static void doForInc (mcPretty_pretty p, decl_node s)
+ {
+ if (lang == ansiCP)
+- doForIncCP (p, s);
++ {
++ doForIncCP (p, s);
++ }
+ else
+- doForIncC (p, s);
++ {
++ doForIncC (p, s);
++ }
+ }
+
+
+@@ -13312,23 +14082,35 @@ static void doFuncHighC (mcPretty_pretty p, decl_node a)
+ decl_node n;
+
+ if ((decl_isLiteral (a)) && ((decl_getType (a)) == charN))
+- outCard (p, 0);
++ {
++ outCard (p, 0);
++ }
+ else if (isString (a))
+- outCard (p, a->stringF.length-2);
++ {
++ /* avoid dangling else. */
++ outCard (p, a->stringF.length-2);
++ }
+ else if ((decl_isConst (a)) && (isString (a->constF.value)))
+- doFuncHighC (p, a->constF.value);
++ {
++ /* avoid dangling else. */
++ doFuncHighC (p, a->constF.value);
++ }
+ else if (decl_isUnbounded (decl_getType (a)))
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "_", 1);
+ outTextN (p, decl_getSymName (a));
+ outText (p, (char *) "_high", 5);
+ }
+ else if (decl_isArray (decl_skipType (decl_getType (a))))
+ {
++ /* avoid dangling else. */
+ n = decl_skipType (decl_getType (a));
+ s = n->arrayF.subr;
+ if (isZero (getMin (s)))
+- doExprC (p, getMax (s));
++ {
++ doExprC (p, getMax (s));
++ }
+ else
+ {
+ outText (p, (char *) "(", 1);
+@@ -13339,6 +14121,7 @@ static void doFuncHighC (mcPretty_pretty p, decl_node a)
+ }
+ else
+ {
++ /* avoid dangling else. */
+ /* output sizeof (a) in bytes for the high. */
+ outText (p, (char *) "(sizeof", 7);
+ mcPretty_setNeedSpace (p);
+@@ -13373,15 +14156,21 @@ static void doMultiplyBySize (mcPretty_pretty p, decl_node a)
+ static void doTotype (mcPretty_pretty p, decl_node a, decl_node t)
+ {
+ if ((! (isString (a))) && (! (decl_isLiteral (a))))
+- if (decl_isVar (a))
+- {
+- if (((a->varF.isParameter || a->varF.isVarParameter) && (decl_isUnbounded (decl_getType (a)))) && ((decl_skipType (decl_getType (decl_getType (a)))) == (decl_skipType (decl_getType (t)))))
+- /* do not multiply by size as the existing high value is correct. */
+- return;
+- a = decl_getType (a);
+- if (decl_isArray (a))
+- doMultiplyBySize (p, decl_skipType (decl_getType (a)));
+- }
++ {
++ if (decl_isVar (a))
++ {
++ if (((a->varF.isParameter || a->varF.isVarParameter) && (decl_isUnbounded (decl_getType (a)))) && ((decl_skipType (decl_getType (decl_getType (a)))) == (decl_skipType (decl_getType (t)))))
++ {
++ /* do not multiply by size as the existing high value is correct. */
++ return;
++ }
++ a = decl_getType (a);
++ if (decl_isArray (a))
++ {
++ doMultiplyBySize (p, decl_skipType (decl_getType (a)));
++ }
++ }
++ }
+ if (t == wordN)
+ {
+ mcPretty_setNeedSpace (p);
+@@ -13423,30 +14212,45 @@ static void doFuncUnbounded (mcPretty_pretty p, decl_node actual, decl_node form
+ s = DynamicStrings_KillString (s);
+ }
+ else if (isString (actual))
+- outCstring (p, actual, TRUE);
++ {
++ /* avoid dangling else. */
++ outCstring (p, actual, TRUE);
++ }
+ else if (decl_isConst (actual))
+ {
++ /* avoid dangling else. */
+ actual = resolveString (actual);
+ mcDebug_assert (isString (actual));
+ outCstring (p, actual, TRUE);
+ }
+ else if (isFuncCall (actual))
+- if ((getExprType (actual)) == NULL)
+- mcMetaError_metaError3 ((char *) "there is no return type to the procedure function {%3ad} which is being passed as the parameter {%1ad} to {%2ad}", 112, (unsigned char *) &formal, (sizeof (formal)-1), (unsigned char *) &func, (sizeof (func)-1), (unsigned char *) &actual, (sizeof (actual)-1));
+- else
+- {
+- outText (p, (char *) "&", 1);
+- doExprC (p, actual);
+- }
++ {
++ /* avoid dangling else. */
++ if ((getExprType (actual)) == NULL)
++ {
++ mcMetaError_metaError3 ((char *) "there is no return type to the procedure function {%3ad} which is being passed as the parameter {%1ad} to {%2ad}", 112, (unsigned char *) &formal, (sizeof (formal)-1), (unsigned char *) &func, (sizeof (func)-1), (unsigned char *) &actual, (sizeof (actual)-1));
++ }
++ else
++ {
++ outText (p, (char *) "&", 1);
++ doExprC (p, actual);
++ }
++ }
+ else if (decl_isUnbounded (decl_getType (actual)))
+- /* doExprC (p, actual). */
+- doFQNameC (p, actual);
++ {
++ /* avoid dangling else. */
++ /* doExprC (p, actual). */
++ doFQNameC (p, actual);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "&", 1);
+ doExprC (p, actual);
+ if (decl_isArray (decl_skipType (decl_getType (actual))))
+- outText (p, (char *) ".array[0]", 9);
++ {
++ outText (p, (char *) ".array[0]", 9);
++ }
+ }
+ /* --fixme-- isDefForC is not implemented yet.
+ IF NOT isDefForC (getScope (func))
+@@ -13489,13 +14293,19 @@ static void doProcedureParamC (mcPretty_pretty p, decl_node actual, decl_node fo
+ static void doAdrExprC (mcPretty_pretty p, decl_node n)
+ {
+ if (isDeref (n))
+- /* no point in issuing & ( * n ) */
+- doExprC (p, n->unaryF.arg);
++ {
++ /* no point in issuing & ( * n ) */
++ doExprC (p, n->unaryF.arg);
++ }
+ else if ((decl_isVar (n)) && n->varF.isVarParameter)
+- /* no point in issuing & ( * n ) */
+- doFQNameC (p, n);
++ {
++ /* avoid dangling else. */
++ /* no point in issuing & ( * n ) */
++ doFQNameC (p, n);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "&", 1);
+ doExprC (p, n);
+ }
+@@ -13519,10 +14329,14 @@ static unsigned int typePair (decl_node a, decl_node b, decl_node x, decl_node y
+ static unsigned int needsCast (decl_node at, decl_node ft)
+ {
+ if ((((((((((((at == nilN) || (at == ft)) || (typePair (at, ft, cardinalN, wordN))) || (typePair (at, ft, cardinalN, ztypeN))) || (typePair (at, ft, integerN, ztypeN))) || (typePair (at, ft, longcardN, ztypeN))) || (typePair (at, ft, shortcardN, ztypeN))) || (typePair (at, ft, longintN, ztypeN))) || (typePair (at, ft, shortintN, ztypeN))) || (typePair (at, ft, realN, rtypeN))) || (typePair (at, ft, longrealN, rtypeN))) || (typePair (at, ft, shortrealN, rtypeN)))
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+- return TRUE;
+-}
++ {
++ return TRUE;
++ }
++}
+
+
+ /*
+@@ -13550,19 +14364,25 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n
+ }
+ else if ((decl_isPointer (decl_skipType (ft))) || ((decl_skipType (ft)) == addressN))
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "reinterpret_cast<", 17);
+ doTypeNameC (p, ft);
+ if (decl_isVarParam (formal))
+- outText (p, (char *) "*", 1);
++ {
++ outText (p, (char *) "*", 1);
++ }
+ mcPretty_noSpace (p);
+ outText (p, (char *) "> (", 3);
+ }
+ else
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "static_cast<", 12);
+ doTypeNameC (p, ft);
+ if (decl_isVarParam (formal))
+- outText (p, (char *) "*", 1);
++ {
++ outText (p, (char *) "*", 1);
++ }
+ mcPretty_noSpace (p);
+ outText (p, (char *) "> (", 3);
+ }
+@@ -13573,7 +14393,9 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n
+ outText (p, (char *) "(", 1);
+ doTypeNameC (p, ft);
+ if (decl_isVarParam (formal))
+- outText (p, (char *) "*", 1);
++ {
++ outText (p, (char *) "*", 1);
++ }
+ mcPretty_noSpace (p);
+ outText (p, (char *) ")", 1);
+ mcPretty_setNeedSpace (p);
+@@ -13613,32 +14435,56 @@ static void doFuncParamC (mcPretty_pretty p, decl_node actual, decl_node formal,
+ unsigned int lbr;
+
+ if (formal == NULL)
+- doExprC (p, actual);
++ {
++ doExprC (p, actual);
++ }
+ else
+ {
+ ft = decl_skipType (decl_getType (formal));
+ if (decl_isUnbounded (ft))
+- doFuncUnbounded (p, actual, formal, ft, func);
++ {
++ doFuncUnbounded (p, actual, formal, ft, func);
++ }
+ else
+- if ((isAProcType (ft)) && (decl_isProcedure (actual)))
+- if (decl_isVarParam (formal))
+- mcMetaError_metaError1 ((char *) "{%1MDad} cannot be passed as a VAR parameter", 44, (unsigned char *) &actual, (sizeof (actual)-1));
+- else
+- doProcedureParamC (p, actual, formal);
+- else if ((((decl_getType (actual)) != NULL) && (decl_isProcType (decl_skipType (decl_getType (actual))))) && ((decl_getType (actual)) != (decl_getType (formal))))
+- if (decl_isVarParam (formal))
+- mcMetaError_metaError2 ((char *) "{%1MDad} cannot be passed as a VAR parameter as the parameter requires a cast to the formal type {%2MDtad}", 106, (unsigned char *) &actual, (sizeof (actual)-1), (unsigned char *) &formal, (sizeof (formal)-1));
++ {
++ if ((isAProcType (ft)) && (decl_isProcedure (actual)))
++ {
++ if (decl_isVarParam (formal))
++ {
++ mcMetaError_metaError1 ((char *) "{%1MDad} cannot be passed as a VAR parameter", 44, (unsigned char *) &actual, (sizeof (actual)-1));
++ }
++ else
++ {
++ doProcedureParamC (p, actual, formal);
++ }
++ }
++ else if ((((decl_getType (actual)) != NULL) && (decl_isProcType (decl_skipType (decl_getType (actual))))) && ((decl_getType (actual)) != (decl_getType (formal))))
++ {
++ /* avoid dangling else. */
++ if (decl_isVarParam (formal))
++ {
++ mcMetaError_metaError2 ((char *) "{%1MDad} cannot be passed as a VAR parameter as the parameter requires a cast to the formal type {%2MDtad}", 106, (unsigned char *) &actual, (sizeof (actual)-1), (unsigned char *) &formal, (sizeof (formal)-1));
++ }
++ else
++ {
++ doCastC (p, decl_getType (formal), actual);
++ }
++ }
+ else
+- doCastC (p, decl_getType (formal), actual);
+- else
+- {
+- lbr = checkSystemCast (p, actual, formal);
+- if (decl_isVarParam (formal))
+- doAdrExprC (p, actual);
+- else
+- doExprC (p, actual);
+- emitN (p, (char *) ")", 1, lbr);
+- }
++ {
++ /* avoid dangling else. */
++ lbr = checkSystemCast (p, actual, formal);
++ if (decl_isVarParam (formal))
++ {
++ doAdrExprC (p, actual);
++ }
++ else
++ {
++ doExprC (p, actual);
++ }
++ emitN (p, (char *) ")", 1, lbr);
++ }
++ }
+ }
+ }
+
+@@ -13654,7 +14500,9 @@ static decl_node getNthParamType (Indexing_Index l, unsigned int i)
+
+ p = getNthParam (l, i);
+ if (p != NULL)
+- return decl_getType (p);
++ {
++ return decl_getType (p);
++ }
+ return NULL;
+ }
+
+@@ -13679,16 +14527,24 @@ static decl_node getNthParam (Indexing_Index l, unsigned int i)
+ {
+ p = Indexing_GetIndice (l, j);
+ if (decl_isParam (p))
+- k = identListLen (p->paramF.namelist);
++ {
++ k = identListLen (p->paramF.namelist);
++ }
+ else if (decl_isVarParam (p))
+- k = identListLen (p->varparamF.namelist);
++ {
++ /* avoid dangling else. */
++ k = identListLen (p->varparamF.namelist);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (decl_isVarargs (p));
+ return NULL;
+ }
+ if (i <= k)
+- return p;
++ {
++ return p;
++ }
+ else
+ {
+ i -= k;
+@@ -13712,7 +14568,9 @@ static void doFuncArgsC (mcPretty_pretty p, decl_node s, Indexing_Index l, unsig
+ unsigned int n;
+
+ if (needParen)
+- outText (p, (char *) "(", 1);
++ {
++ outText (p, (char *) "(", 1);
++ }
+ if (s->funccallF.args != NULL)
+ {
+ i = 1;
+@@ -13750,7 +14608,9 @@ static void doProcTypeArgsC (mcPretty_pretty p, decl_node s, Indexing_Index args
+ unsigned int n;
+
+ if (needParen)
+- outText (p, (char *) "(", 1);
++ {
++ outText (p, (char *) "(", 1);
++ }
+ if (s->funccallF.args != NULL)
+ {
+ i = 1;
+@@ -13783,26 +14643,38 @@ static void doProcTypeArgsC (mcPretty_pretty p, decl_node s, Indexing_Index args
+ static void doAdrArgC (mcPretty_pretty p, decl_node n)
+ {
+ if (isDeref (n))
+- /* & and * cancel each other out. */
+- doExprC (p, n->unaryF.arg);
++ {
++ /* & and * cancel each other out. */
++ doExprC (p, n->unaryF.arg);
++ }
+ else if ((decl_isVar (n)) && n->varF.isVarParameter)
+- outTextN (p, decl_getSymName (n)); /* --fixme-- does the caller need to cast it? */
++ {
++ /* avoid dangling else. */
++ outTextN (p, decl_getSymName (n)); /* --fixme-- does the caller need to cast it? */
++ }
+ else
+- if (isString (n))
+- if (lang == ansiCP)
++ {
++ /* avoid dangling else. */
++ if (isString (n))
+ {
+- outText (p, (char *) "const_cast<void*> (reinterpret_cast<const void*>", 48);
+- outText (p, (char *) "(", 1);
+- doExprC (p, n);
+- outText (p, (char *) "))", 2);
++ if (lang == ansiCP)
++ {
++ outText (p, (char *) "const_cast<void*> (reinterpret_cast<const void*>", 48);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n);
++ outText (p, (char *) "))", 2);
++ }
++ else
++ {
++ doExprC (p, n);
++ }
+ }
+ else
+- doExprC (p, n);
+- else
+- {
+- outText (p, (char *) "&", 1);
+- doExprC (p, n);
+- }
++ {
++ outText (p, (char *) "&", 1);
++ doExprC (p, n);
++ }
++ }
+ }
+
+
+@@ -13812,13 +14684,8 @@ static void doAdrArgC (mcPretty_pretty p, decl_node n)
+
+ static void doAdrC (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
+- {
+- /* avoid dangling else. */
+- if ((expListLen (n->funccallF.args)) == 1)
+- doAdrArgC (p, getExpList (n->funccallF.args, 1));
+- }
++ mcDebug_assert (isUnary (n));
++ doAdrArgC (p, n->unaryF.arg);
+ }
+
+
+@@ -13828,11 +14695,15 @@ static void doAdrC (mcPretty_pretty p, decl_node n)
+
+ static void doInc (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
++ mcDebug_assert (isIntrinsic (n));
+ if (lang == ansiCP)
+- doIncDecCP (p, n, (char *) "+", 1);
++ {
++ doIncDecCP (p, n, (char *) "+", 1);
++ }
+ else
+- doIncDecC (p, n, (char *) "+=", 2);
++ {
++ doIncDecC (p, n, (char *) "+=", 2);
++ }
+ }
+
+
+@@ -13842,11 +14713,15 @@ static void doInc (mcPretty_pretty p, decl_node n)
+
+ static void doDec (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
++ mcDebug_assert (isIntrinsic (n));
+ if (lang == ansiCP)
+- doIncDecCP (p, n, (char *) "-", 1);
++ {
++ doIncDecCP (p, n, (char *) "-", 1);
++ }
+ else
+- doIncDecC (p, n, (char *) "-=", 2);
++ {
++ doIncDecC (p, n, (char *) "-=", 2);
++ }
+ }
+
+
+@@ -13861,17 +14736,21 @@ static void doIncDecC (mcPretty_pretty p, decl_node n, char *op_, unsigned int _
+ /* make a local copy of each unbounded array. */
+ memcpy (op, op_, _op_high+1);
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args != NULL)
+ {
+- doExprC (p, getExpList (n->funccallF.args, 1));
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) op, _op_high);
+ mcPretty_setNeedSpace (p);
+- if ((expListLen (n->funccallF.args)) == 1)
+- outText (p, (char *) "1", 1);
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ outText (p, (char *) "1", 1);
++ }
+ else
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ {
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
++ }
+ }
+ }
+
+@@ -13882,18 +14761,20 @@ static void doIncDecC (mcPretty_pretty p, decl_node n, char *op_, unsigned int _
+
+ static void doIncDecCP (mcPretty_pretty p, decl_node n, char *op_, unsigned int _op_high)
+ {
++ decl_node lhs;
+ decl_node type;
+ char op[_op_high+1];
+
+ /* make a local copy of each unbounded array. */
+ memcpy (op, op_, _op_high+1);
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args != NULL)
+ {
+- doExprC (p, getExpList (n->funccallF.args, 1));
++ lhs = getExpList (n->intrinsicF.args, 1);
++ doExprC (p, lhs);
+ mcPretty_setNeedSpace (p);
+- type = decl_getType (getExpList (n->funccallF.args, 1));
++ type = decl_getType (lhs);
+ if ((decl_isPointer (type)) || (type == addressN))
+ {
+ /* cast to (char * ) and then back again after the arithmetic is complete. */
+@@ -13903,40 +14784,54 @@ static void doIncDecCP (mcPretty_pretty p, decl_node n, char *op_, unsigned int
+ doTypeNameC (p, type);
+ mcPretty_noSpace (p);
+ outText (p, (char *) "> (reinterpret_cast<char *> (", 29);
+- doExprC (p, getExpList (n->funccallF.args, 1));
++ doExprC (p, lhs);
+ mcPretty_noSpace (p);
+ outText (p, (char *) ")", 1);
+ outText (p, (char *) op, _op_high);
+- if ((expListLen (n->funccallF.args)) == 1)
+- outText (p, (char *) "1", 1);
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ outText (p, (char *) "1", 1);
++ }
+ else
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ {
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
++ }
+ outText (p, (char *) ")", 1);
+ }
+ else if (decl_isEnumeration (decl_skipType (type)))
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "= static_cast<", 14);
+ doTypeNameC (p, type);
+ mcPretty_noSpace (p);
+ outText (p, (char *) ">(static_cast<int>(", 19);
+- doExprC (p, getExpList (n->funccallF.args, 1));
++ doExprC (p, lhs);
+ outText (p, (char *) ")", 1);
+ outText (p, (char *) op, _op_high);
+- if ((expListLen (n->funccallF.args)) == 1)
+- outText (p, (char *) "1", 1);
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ outText (p, (char *) "1", 1);
++ }
+ else
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ {
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
++ }
+ outText (p, (char *) ")", 1);
+ }
+ else
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) op, _op_high);
+ outText (p, (char *) "=", 1);
+ mcPretty_setNeedSpace (p);
+- if ((expListLen (n->funccallF.args)) == 1)
+- outText (p, (char *) "1", 1);
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ outText (p, (char *) "1", 1);
++ }
+ else
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ {
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
++ }
+ }
+ }
+ }
+@@ -13950,14 +14845,14 @@ static void doInclC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node lo;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args != NULL)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if ((expListLen (n->funccallF.args)) == 2)
++ if ((expListLen (n->intrinsicF.args)) == 2)
+ {
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- lo = getSetLow (getExpList (n->funccallF.args, 1));
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
++ lo = getSetLow (getExpList (n->intrinsicF.args, 1));
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "|=", 2);
+ mcPretty_setNeedSpace (p);
+@@ -13966,13 +14861,15 @@ static void doInclC (mcPretty_pretty p, decl_node n)
+ outText (p, (char *) "<<", 2);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
+ doSubtractC (p, lo);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "))", 2);
+ }
+ else
+- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to INCL') */
++ {
++ M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to INCL') */
++ }
+ }
+ }
+
+@@ -13985,14 +14882,14 @@ static void doExclC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node lo;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args != NULL)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if ((expListLen (n->funccallF.args)) == 2)
++ if ((expListLen (n->intrinsicF.args)) == 2)
+ {
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- lo = getSetLow (getExpList (n->funccallF.args, 1));
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
++ lo = getSetLow (getExpList (n->intrinsicF.args, 1));
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "&=", 2);
+ mcPretty_setNeedSpace (p);
+@@ -14001,13 +14898,15 @@ static void doExclC (mcPretty_pretty p, decl_node n)
+ outText (p, (char *) "<<", 2);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 2));
++ doExprC (p, getExpList (n->intrinsicF.args, 2));
+ doSubtractC (p, lo);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) ")))", 3);
+ }
+ else
+- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to EXCL') */
++ {
++ M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to EXCL') */
++ }
+ }
+ }
+
+@@ -14020,35 +14919,41 @@ static void doNewC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args == NULL)
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- keyc_useStorage ();
+- outText (p, (char *) "Storage_ALLOCATE", 16);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "((void **)", 10);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "&", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ",", 1);
+- mcPretty_setNeedSpace (p);
+- t = decl_skipType (decl_getType (getExpList (n->funccallF.args, 1)));
+- if (decl_isPointer (t))
+- {
+- t = decl_getType (t);
+- outText (p, (char *) "sizeof", 6);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doTypeNameC (p, t);
+- mcPretty_noSpace (p);
+- outText (p, (char *) "))", 2);
+- }
+- else
+- mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to NEW, rather than {%1ad}", 76, (unsigned char *) &t, (sizeof (t)-1));
+- }
++ {
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ keyc_useStorage ();
++ outText (p, (char *) "Storage_ALLOCATE", 16);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "((void **)", 10);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "&", 1);
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
++ outText (p, (char *) ",", 1);
++ mcPretty_setNeedSpace (p);
++ t = decl_skipType (decl_getType (getExpList (n->intrinsicF.args, 1)));
++ if (decl_isPointer (t))
++ {
++ t = decl_getType (t);
++ outText (p, (char *) "sizeof", 6);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doTypeNameC (p, t);
++ mcPretty_noSpace (p);
++ outText (p, (char *) "))", 2);
++ }
++ else
++ {
++ mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to NEW, rather than {%1ad}", 76, (unsigned char *) &t, (sizeof (t)-1));
++ }
++ }
++ }
+ }
+
+
+@@ -14060,37 +14965,45 @@ static void doDisposeC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
++ mcDebug_assert (isIntrinsic (n));
++ if (n->intrinsicF.args == NULL)
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- keyc_useStorage ();
+- outText (p, (char *) "Storage_DEALLOCATE", 18);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "((void **)", 10);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "&", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ",", 1);
+- mcPretty_setNeedSpace (p);
+- t = decl_skipType (decl_getType (getExpList (n->funccallF.args, 1)));
+- if (decl_isPointer (t))
+- {
+- t = decl_getType (t);
+- outText (p, (char *) "sizeof", 6);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doTypeNameC (p, t);
+- mcPretty_noSpace (p);
+- outText (p, (char *) "))", 2);
+- }
+- else
+- mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to DISPOSE, rather than {%1ad}", 80, (unsigned char *) &t, (sizeof (t)-1));
+- }
+- else
+- M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to DISPOSE') */
++ {
++ if ((expListLen (n->intrinsicF.args)) == 1)
++ {
++ keyc_useStorage ();
++ outText (p, (char *) "Storage_DEALLOCATE", 18);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "((void **)", 10);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "&", 1);
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
++ outText (p, (char *) ",", 1);
++ mcPretty_setNeedSpace (p);
++ t = decl_skipType (decl_getType (getExpList (n->intrinsicF.args, 1)));
++ if (decl_isPointer (t))
++ {
++ t = decl_getType (t);
++ outText (p, (char *) "sizeof", 6);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doTypeNameC (p, t);
++ mcPretty_noSpace (p);
++ outText (p, (char *) "))", 2);
++ }
++ else
++ {
++ mcMetaError_metaError1 ((char *) "expecting a pointer type variable as the argument to DISPOSE, rather than {%1ad}", 80, (unsigned char *) &t, (sizeof (t)-1));
++ }
++ }
++ else
++ {
++ M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to DISPOSE') */
++ }
++ }
+ }
+
+
+@@ -14100,21 +15013,20 @@ static void doDisposeC (mcPretty_pretty p, decl_node n)
+
+ static void doCapC (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- keyc_useCtype ();
+- outText (p, (char *) "toupper", 7);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ")", 1);
+- }
+- else
++ mcDebug_assert (isUnary (n));
++ if (n->unaryF.arg == NULL)
++ {
+ M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to CAP') */
++ }
++ else
++ {
++ keyc_useCtype ();
++ outText (p, (char *) "toupper", 7);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
++ }
+ }
+
+
+@@ -14124,27 +15036,23 @@ static void doCapC (mcPretty_pretty p, decl_node n)
+
+ static void doLengthC (mcPretty_pretty p, decl_node n)
+ {
+- decl_node v;
+-
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- keyc_useM2RTS ();
+- outText (p, (char *) "M2RTS_Length", 12);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- v = getExpList (n->funccallF.args, 1);
+- doExprC (p, v);
+- outText (p, (char *) ",", 1);
+- mcPretty_setNeedSpace (p);
+- doFuncHighC (p, v);
+- outText (p, (char *) ")", 1);
+- }
+- else
++ mcDebug_assert (isUnary (n));
++ if (n->unaryF.arg == NULL)
++ {
+ M2RTS_HALT (-1); /* metaError0 ('expecting a single parameter to LENGTH') */
++ }
++ else
++ {
++ keyc_useM2RTS ();
++ outText (p, (char *) "M2RTS_Length", 12);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ",", 1);
++ mcPretty_setNeedSpace (p);
++ doFuncHighC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
++ }
+ }
+
+
+@@ -14156,11 +15064,15 @@ static void doAbsC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+
+- mcDebug_assert (isFuncCall (n));
+- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1))
+- t = getExprType (n);
++ mcDebug_assert (isUnary (n));
++ if (n->unaryF.arg == NULL)
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ t = getExprType (n);
++ }
+ if (t == longintN)
+ {
+ keyc_useLabs ();
+@@ -14168,26 +15080,36 @@ static void doAbsC (mcPretty_pretty p, decl_node n)
+ }
+ else if (t == integerN)
+ {
++ /* avoid dangling else. */
+ keyc_useAbs ();
+ outText (p, (char *) "abs", 3);
+ }
+ else if (t == realN)
+ {
++ /* avoid dangling else. */
+ keyc_useFabs ();
+ outText (p, (char *) "fabs", 4);
+ }
+ else if (t == longrealN)
+ {
++ /* avoid dangling else. */
+ keyc_useFabsl ();
+ outText (p, (char *) "fabsl", 5);
+ }
+ else if (t == cardinalN)
+- {} /* empty. */
++ {
++ /* avoid dangling else. */
++ }
+ else
+- /* do nothing. */
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ /* do nothing. */
++ M2RTS_HALT (-1);
++ }
+ mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -14197,22 +15119,14 @@ static void doAbsC (mcPretty_pretty p, decl_node n)
+
+ static void doValC (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 2)
+- {
+- outText (p, (char *) "(", 1);
+- doTypeNameC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ")", 1);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 2));
+- outText (p, (char *) ")", 1);
+- }
+- else
+- M2RTS_HALT (-1);
++ mcDebug_assert (isBinary (n));
++ outText (p, (char *) "(", 1);
++ doTypeNameC (p, n->binaryF.left);
++ outText (p, (char *) ")", 1);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->binaryF.right);
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -14223,20 +15137,10 @@ static void doValC (mcPretty_pretty p, decl_node n)
+ static void doMinC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+- decl_node a;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- a = getExpList (n->funccallF.args, 1);
+- t = getExprType (a);
+- doExprC (p, getMin (t));
+- }
+- else
+- M2RTS_HALT (-1);
++ mcDebug_assert (isUnary (n));
++ t = getExprType (n->unaryF.arg);
++ doExprC (p, getMin (t));
+ }
+
+
+@@ -14247,63 +15151,36 @@ static void doMinC (mcPretty_pretty p, decl_node n)
+ static void doMaxC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+- decl_node a;
+
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args == NULL)
+- M2RTS_HALT (-1);
+- else
+- if ((expListLen (n->funccallF.args)) == 1)
+- {
+- a = getExpList (n->funccallF.args, 1);
+- t = getExprType (a);
+- doExprC (p, getMax (t));
+- }
+- else
+- M2RTS_HALT (-1);
++ mcDebug_assert (isUnary (n));
++ t = getExprType (n->unaryF.arg);
++ doExprC (p, getMax (t));
+ }
+
+
+ /*
+- isIntrinsic - returns if, n, is an instrinsic procedure.
++ isIntrinsic - returns if, n, is an intrinsic procedure.
++ The intrinsic functions are represented as unary and binary nodes.
+ */
+
+ static unsigned int isIntrinsic (decl_node n)
+ {
+- switch (n->funccallF.function->kind)
++ switch (n->kind)
+ {
+- case halt:
+- case max:
+- case min:
+- case cast:
+- case val:
+- case adr:
+- case size:
+- case tsize:
+- case float_:
+- case trunc:
+- case ord:
+- case chr:
+- case cap:
+- case abs_:
+- case im:
+- case re:
+- case cmplx:
+- case high:
++ case throw:
+ case inc:
+ case dec:
+ case incl:
+ case excl:
+ case new:
+ case dispose:
+- case length:
+- case throw:
++ case halt:
+ return TRUE;
+ break;
+
+
+ default:
+- return (isFuncCall (n)) && (n->funccallF.function == haltN);
++ return FALSE;
+ break;
+ }
+ }
+@@ -14315,19 +15192,20 @@ static unsigned int isIntrinsic (decl_node n)
+
+ static void doHalt (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if ((n->funccallF.args == NULL) || ((expListLen (n->funccallF.args)) == 0))
++ mcDebug_assert (n->kind == halt);
++ if ((n->intrinsicF.args == NULL) || ((expListLen (n->intrinsicF.args)) == 0))
+ {
+ outText (p, (char *) "M2RTS_HALT", 10);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "(-1)", 4);
+ }
+- else if ((expListLen (n->funccallF.args)) == 1)
++ else if ((expListLen (n->intrinsicF.args)) == 1)
+ {
++ /* avoid dangling else. */
+ outText (p, (char *) "M2RTS_HALT", 10);
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
++ doExprC (p, getExpList (n->intrinsicF.args, 1));
+ outText (p, (char *) ")", 1);
+ }
+ }
+@@ -14341,20 +15219,28 @@ static void doReC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+
+- mcDebug_assert (isFuncCall (n));
+- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1))
+- t = getExprType (n);
++ mcDebug_assert (n->kind == re);
++ if (n->unaryF.arg != NULL)
++ {
++ t = getExprType (n->unaryF.arg);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ if (t == realN)
+ {
+ keyc_useComplex ();
+ outText (p, (char *) "creal", 5);
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -14366,20 +15252,28 @@ static void doImC (mcPretty_pretty p, decl_node n)
+ {
+ decl_node t;
+
+- mcDebug_assert (isFuncCall (n));
+- if ((n->funccallF.args != NULL) && ((expListLen (n->funccallF.args)) == 1))
+- t = getExprType (n);
++ mcDebug_assert (n->kind == im);
++ if (n->unaryF.arg != NULL)
++ {
++ t = getExprType (n->unaryF.arg);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ if (t == realN)
+ {
+ keyc_useComplex ();
+ outText (p, (char *) "cimag", 5);
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -14389,30 +15283,22 @@ static void doImC (mcPretty_pretty p, decl_node n)
+
+ static void doCmplx (mcPretty_pretty p, decl_node n)
+ {
+- mcDebug_assert (isFuncCall (n));
+- if (n->funccallF.args != NULL)
+- if ((expListLen (n->funccallF.args)) == 2)
+- {
+- keyc_useComplex ();
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 1));
+- outText (p, (char *) ")", 1);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "+", 1);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "(", 1);
+- doExprC (p, getExpList (n->funccallF.args, 2));
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "*", 1);
+- mcPretty_setNeedSpace (p);
+- outText (p, (char *) "I", 1);
+- outText (p, (char *) ")", 1);
+- }
+- else
+- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to CMPLX') */
+- else
+- M2RTS_HALT (-1); /* metaError0 ('expecting two parameters to CMPLX') */
++ mcDebug_assert (isBinary (n));
++ keyc_useComplex ();
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->binaryF.left);
++ outText (p, (char *) ")", 1);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "+", 1);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->binaryF.right);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "*", 1);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "I", 1);
++ outText (p, (char *) ")", 1);
+ }
+
+
+@@ -14422,122 +15308,120 @@ static void doCmplx (mcPretty_pretty p, decl_node n)
+
+ static void doIntrinsicC (mcPretty_pretty p, decl_node n)
+ {
+- if (n->funccallF.function == haltN)
+- doHalt (p, n);
+- else
+- switch (n->funccallF.function->kind)
+- {
+- case halt:
+- doHalt (p, n);
+- break;
+-
+- case val:
+- doValC (p, n);
+- break;
+-
+- case adr:
+- doAdrC (p, n);
+- break;
+-
+- case size:
+- case tsize:
+- outText (p, (char *) "sizeof", 6);
+- mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
+- break;
++ mcDebug_assert (isIntrinsic (n));
++ doCommentC (p, n->intrinsicF.intrinsicComment.body);
++ switch (n->kind)
++ {
++ case throw:
++ doThrowC (p, n);
++ break;
+
+- case float_:
+- outText (p, (char *) "(double)", 8);
+- mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
+- break;
++ case halt:
++ doHalt (p, n);
++ break;
+
+- case trunc:
+- outText (p, (char *) "(int)", 5);
+- mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
+- break;
++ case inc:
++ doInc (p, n);
++ break;
+
+- case ord:
+- outText (p, (char *) "(unsigned int)", 14);
+- mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
+- break;
++ case dec:
++ doDec (p, n);
++ break;
+
+- case chr:
+- outText (p, (char *) "(char)", 6);
+- mcPretty_setNeedSpace (p);
+- doFuncArgsC (p, n, (Indexing_Index) NULL, TRUE);
+- break;
++ case incl:
++ doInclC (p, n);
++ break;
+
+- case cap:
+- doCapC (p, n);
+- break;
++ case excl:
++ doExclC (p, n);
++ break;
+
+- case abs_:
+- doAbsC (p, n);
+- break;
++ case new:
++ doNewC (p, n);
++ break;
+
+- case high:
+- doFuncHighC (p, getExpList (n->funccallF.args, 1));
+- break;
++ case dispose:
++ doDisposeC (p, n);
++ break;
+
+- case inc:
+- doInc (p, n);
+- break;
+
+- case dec:
+- doDec (p, n);
+- break;
++ default:
++ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
++ }
++ outText (p, (char *) ";", 1);
++ doAfterCommentC (p, n->intrinsicF.intrinsicComment.after);
++}
+
+- case incl:
+- doInclC (p, n);
+- break;
+
+- case excl:
+- doExclC (p, n);
+- break;
++/*
++ isIntrinsicFunction - returns true if, n, is an instrinsic function.
++*/
+
+- case new:
+- doNewC (p, n);
+- break;
++static unsigned int isIntrinsicFunction (decl_node n)
++{
++ switch (n->kind)
++ {
++ case val:
++ case adr:
++ case size:
++ case tsize:
++ case float_:
++ case trunc:
++ case ord:
++ case chr:
++ case cap:
++ case abs_:
++ case high:
++ case length:
++ case min:
++ case max:
++ case throw:
++ case re:
++ case im:
++ case cmplx:
++ return TRUE;
++ break;
+
+- case dispose:
+- doDisposeC (p, n);
+- break;
+
+- case length:
+- doLengthC (p, n);
+- break;
++ default:
++ return FALSE;
++ break;
++ }
++}
+
+- case min:
+- doMinC (p, n);
+- break;
+
+- case max:
+- doMaxC (p, n);
+- break;
++/*
++ doSizeC -
++*/
+
+- case throw:
+- doThrowC (p, n);
+- break;
++static void doSizeC (mcPretty_pretty p, decl_node n)
++{
++ mcDebug_assert (isUnary (n));
++ outText (p, (char *) "sizeof (", 8);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) ")", 1);
++}
+
+- case re:
+- doReC (p, n);
+- break;
+
+- case im:
+- doImC (p, n);
+- break;
++/*
++ doConvertC -
++*/
+
+- case cmplx:
+- doCmplx (p, n);
+- break;
++static void doConvertC (mcPretty_pretty p, decl_node n, char *conversion_, unsigned int _conversion_high)
++{
++ char conversion[_conversion_high+1];
+
++ /* make a local copy of each unbounded array. */
++ memcpy (conversion, conversion_, _conversion_high+1);
+
+- default:
+- CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+- }
++ mcDebug_assert (isUnary (n));
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ outText (p, (char *) conversion, _conversion_high);
++ mcPretty_setNeedSpace (p);
++ outText (p, (char *) "(", 1);
++ doExprC (p, n->unaryF.arg);
++ outText (p, (char *) "))", 2);
+ }
+
+
+@@ -14549,7 +15433,9 @@ static decl_node getFuncFromExpr (decl_node n)
+ {
+ n = decl_skipType (decl_getType (n));
+ while ((n != procN) && (! (decl_isProcType (n))))
+- n = decl_skipType (decl_getType (n));
++ {
++ n = decl_skipType (decl_getType (n));
++ }
+ return n;
+ }
+
+@@ -14563,9 +15449,7 @@ static void doFuncExprC (mcPretty_pretty p, decl_node n)
+ decl_node t;
+
+ mcDebug_assert (isFuncCall (n));
+- if (isIntrinsic (n))
+- doIntrinsicC (p, n);
+- else if (decl_isProcedure (n->funccallF.function))
++ if (decl_isProcedure (n->funccallF.function))
+ {
+ doFQDNameC (p, n->funccallF.function, TRUE);
+ mcPretty_setNeedSpace (p);
+@@ -14579,7 +15463,9 @@ static void doFuncExprC (mcPretty_pretty p, decl_node n)
+ mcPretty_setNeedSpace (p);
+ t = getFuncFromExpr (n->funccallF.function);
+ if (t == procN)
+- doProcTypeArgsC (p, n, (Indexing_Index) NULL, TRUE);
++ {
++ doProcTypeArgsC (p, n, (Indexing_Index) NULL, TRUE);
++ }
+ else
+ {
+ mcDebug_assert (decl_isProcType (t));
+@@ -14612,7 +15498,9 @@ static void doCaseStatementC (mcPretty_pretty p, decl_node n, unsigned int needB
+ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
+ doStatementSequenceC (p, n);
+ if (needBreak)
+- outText (p, (char *) "break;\\n", 8);
++ {
++ outText (p, (char *) "break;\\n", 8);
++ }
+ p = mcPretty_popPretty (p);
+ }
+
+@@ -14684,9 +15572,13 @@ static void doException (mcPretty_pretty p, char *a_, unsigned int _a_high, decl
+
+ keyc_useException ();
+ if (lang == ansiCP)
+- doExceptionCP (p, (char *) a, _a_high, n);
++ {
++ doExceptionCP (p, (char *) a, _a_high, n);
++ }
+ else
+- doExceptionC (p, (char *) a, _a_high, n);
++ {
++ doExceptionC (p, (char *) a, _a_high, n);
++ }
+ }
+
+
+@@ -14788,7 +15680,9 @@ static void doCaseLabels (mcPretty_pretty p, decl_node n, unsigned int needBreak
+ mcPretty_setindent (p, (mcPretty_getindent (p))+indentationC);
+ doStatementSequenceC (p, n->caselabellistF.statements);
+ if (needBreak)
+- outText (p, (char *) "break;\\n\\n", 10);
++ {
++ outText (p, (char *) "break;\\n\\n", 10);
++ }
+ p = mcPretty_popPretty (p);
+ }
+
+@@ -14833,7 +15727,9 @@ static void doCaseIfLabels (mcPretty_pretty p, decl_node e, decl_node n, unsigne
+ doRangeIfListC (p, e, n->caselabellistF.caseList);
+ outText (p, (char *) ")\\n", 3);
+ if (h == 1)
+- doCompoundStmt (p, n->caselabellistF.statements);
++ {
++ doCompoundStmt (p, n->caselabellistF.statements);
++ }
+ else
+ {
+ outText (p, (char *) "{\\n", 3);
+@@ -14943,7 +15839,9 @@ static unsigned int canUseSwitchCaseLabels (decl_node n)
+ {
+ r = Indexing_GetIndice (l->caselistF.rangePairs, i);
+ if ((r->rangeF.hi != NULL) && (r->rangeF.lo != r->rangeF.hi))
+- return FALSE;
++ {
++ return FALSE;
++ }
+ i += 1;
+ }
+ return TRUE;
+@@ -14969,7 +15867,9 @@ static unsigned int canUseSwitch (decl_node n)
+ {
+ c = Indexing_GetIndice (n->caseF.caseLabelList, i);
+ if (! (canUseSwitchCaseLabels (c)))
+- return FALSE;
++ {
++ return FALSE;
++ }
+ i += 1;
+ }
+ return TRUE;
+@@ -15049,33 +15949,80 @@ static void doStatementsC (mcPretty_pretty p, decl_node s)
+ if (s == NULL)
+ {} /* empty. */
+ else if (decl_isStatementSequence (s))
+- doStatementSequenceC (p, s);
++ {
++ /* avoid dangling else. */
++ doStatementSequenceC (p, s);
++ }
+ else if (isComment (s))
+- doCommentC (p, s);
++ {
++ /* avoid dangling else. */
++ doCommentC (p, s);
++ }
+ else if (decl_isExit (s))
+- doExitC (p, s);
++ {
++ /* avoid dangling else. */
++ doExitC (p, s);
++ }
+ else if (decl_isReturn (s))
+- doReturnC (p, s);
++ {
++ /* avoid dangling else. */
++ doReturnC (p, s);
++ }
+ else if (isAssignment (s))
+- doAssignmentC (p, s);
++ {
++ /* avoid dangling else. */
++ doAssignmentC (p, s);
++ }
+ else if (decl_isIf (s))
+- doIfC (p, s);
++ {
++ /* avoid dangling else. */
++ doIfC (p, s);
++ }
+ else if (decl_isFor (s))
+- doForC (p, s);
++ {
++ /* avoid dangling else. */
++ doForC (p, s);
++ }
+ else if (decl_isRepeat (s))
+- doRepeatC (p, s);
++ {
++ /* avoid dangling else. */
++ doRepeatC (p, s);
++ }
+ else if (decl_isWhile (s))
+- doWhileC (p, s);
++ {
++ /* avoid dangling else. */
++ doWhileC (p, s);
++ }
++ else if (isIntrinsic (s))
++ {
++ /* avoid dangling else. */
++ doIntrinsicC (p, s);
++ }
+ else if (isFuncCall (s))
+- doFuncCallC (p, s);
++ {
++ /* avoid dangling else. */
++ doFuncCallC (p, s);
++ }
+ else if (decl_isCase (s))
+- doCaseC (p, s);
++ {
++ /* avoid dangling else. */
++ doCaseC (p, s);
++ }
+ else if (decl_isLoop (s))
+- doLoopC (p, s);
++ {
++ /* avoid dangling else. */
++ doLoopC (p, s);
++ }
+ else if (decl_isExit (s))
+- doExitC (p, s);
++ {
++ /* avoid dangling else. */
++ doExitC (p, s);
++ }
+ else
+- M2RTS_HALT (-1); /* need to handle another s^.kind. */
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1); /* need to handle another s^.kind. */
++ }
+ }
+
+ static void stop (void)
+@@ -15139,7 +16086,7 @@ static void includeParameters (decl_node n)
+
+ static unsigned int isHalt (decl_node n)
+ {
+- return (n->funccallF.function == haltN) || (n->funccallF.function->kind == halt);
++ return n->kind == halt;
+ }
+
+
+@@ -15174,7 +16121,9 @@ static unsigned int isLastStatementSequence (decl_node n, decl_isNodeF q)
+ mcDebug_assert (decl_isStatementSequence (n));
+ h = Indexing_HighIndice (n->stmtF.statements);
+ if (h > 0)
+- return isLastStatement ((decl_node) Indexing_GetIndice (n->stmtF.statements, h), q);
++ {
++ return isLastStatement ((decl_node) Indexing_GetIndice (n->stmtF.statements, h), q);
++ }
+ return FALSE;
+ }
+
+@@ -15190,11 +16139,17 @@ static unsigned int isLastStatementIf (decl_node n, decl_isNodeF q)
+ mcDebug_assert (decl_isIf (n));
+ ret = TRUE;
+ if ((n->ifF.elsif != NULL) && ret)
+- ret = isLastStatement (n->ifF.elsif, q);
++ {
++ ret = isLastStatement (n->ifF.elsif, q);
++ }
+ if ((n->ifF.then != NULL) && ret)
+- ret = isLastStatement (n->ifF.then, q);
++ {
++ ret = isLastStatement (n->ifF.then, q);
++ }
+ if ((n->ifF.else_ != NULL) && ret)
+- ret = isLastStatement (n->ifF.else_, q);
++ {
++ ret = isLastStatement (n->ifF.else_, q);
++ }
+ return ret;
+ }
+
+@@ -15210,11 +16165,17 @@ static unsigned int isLastStatementElsif (decl_node n, decl_isNodeF q)
+ mcDebug_assert (decl_isElsif (n));
+ ret = TRUE;
+ if ((n->elsifF.elsif != NULL) && ret)
+- ret = isLastStatement (n->elsifF.elsif, q);
++ {
++ ret = isLastStatement (n->elsifF.elsif, q);
++ }
+ if ((n->elsifF.then != NULL) && ret)
+- ret = isLastStatement (n->elsifF.then, q);
++ {
++ ret = isLastStatement (n->elsifF.then, q);
++ }
+ if ((n->elsifF.else_ != NULL) && ret)
+- ret = isLastStatement (n->elsifF.else_, q);
++ {
++ ret = isLastStatement (n->elsifF.else_, q);
++ }
+ return ret;
+ }
+
+@@ -15242,7 +16203,9 @@ static unsigned int isLastStatementCase (decl_node n, decl_isNodeF q)
+ i += 1;
+ }
+ if (n->caseF.else_ != NULL)
+- ret = ret && (isLastStatement (n->caseF.else_, q));
++ {
++ ret = ret && (isLastStatement (n->caseF.else_, q));
++ }
+ return ret;
+ }
+
+@@ -15256,20 +16219,35 @@ static unsigned int isLastStatement (decl_node n, decl_isNodeF q)
+ unsigned int ret;
+
+ if (decl_isStatementSequence (n))
+- return isLastStatementSequence (n, q);
++ {
++ return isLastStatementSequence (n, q);
++ }
+ else if (decl_isProcedure (n))
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (decl_isProcedure (n));
+ return isLastStatement (n->procedureF.beginStatements, q);
+ }
+ else if (decl_isIf (n))
+- return isLastStatementIf (n, q);
++ {
++ /* avoid dangling else. */
++ return isLastStatementIf (n, q);
++ }
+ else if (decl_isElsif (n))
+- return isLastStatementElsif (n, q);
++ {
++ /* avoid dangling else. */
++ return isLastStatementElsif (n, q);
++ }
+ else if (decl_isCase (n))
+- return isLastStatementCase (n, q);
++ {
++ /* avoid dangling else. */
++ return isLastStatementCase (n, q);
++ }
+ else if ((*q.proc) (n))
+- return TRUE;
++ {
++ /* avoid dangling else. */
++ return TRUE;
++ }
+ return FALSE;
+ }
+
+@@ -15293,11 +16271,17 @@ static void doProcedureC (decl_node n)
+ doLocalVarC (doP, n->procedureF.decls);
+ doUnboundedParamCopyC (doP, n);
+ if (s != (mcPretty_getcurline (doP)))
+- outText (doP, (char *) "\\n", 2);
++ {
++ outText (doP, (char *) "\\n", 2);
++ }
+ doStatementsC (doP, n->procedureF.beginStatements);
+ if (n->procedureF.returnType != NULL)
+- if (returnException && (! (isLastStatementReturn (n))))
+- doException (doP, (char *) "ReturnException", 15, n);
++ {
++ if (returnException && (! (isLastStatementReturn (n))))
++ {
++ doException (doP, (char *) "ReturnException", 15, n);
++ }
++ }
+ doP = outKc (doP, (char *) "}\\n", 3);
+ keyc_leaveScope (n);
+ }
+@@ -15311,7 +16295,9 @@ static void outProceduresC (mcPretty_pretty p, scopeT s)
+ {
+ doP = p;
+ if (debugDecl)
+- libc_printf ((char *) "seen %d procedures\\n", 20, Indexing_HighIndice (s.procedures));
++ {
++ libc_printf ((char *) "seen %d procedures\\n", 20, Indexing_HighIndice (s.procedures));
++ }
+ Indexing_ForeachIndiceInIndexDo (s.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) doProcedureC});
+ }
+
+@@ -15323,11 +16309,19 @@ static void outProceduresC (mcPretty_pretty p, scopeT s)
+ static void output (decl_node n, nodeProcedure c, nodeProcedure t, nodeProcedure v)
+ {
+ if (decl_isConst (n))
+- (*c.proc) (n);
++ {
++ (*c.proc) (n);
++ }
+ else if (decl_isVar (n))
+- (*v.proc) (n);
++ {
++ /* avoid dangling else. */
++ (*v.proc) (n);
++ }
+ else
+- (*t.proc) (n);
++ {
++ /* avoid dangling else. */
++ (*t.proc) (n);
++ }
+ }
+
+
+@@ -15354,11 +16348,17 @@ static dependentState allDependants (decl_node n)
+ static dependentState walkDependants (alists_alist l, decl_node n)
+ {
+ if ((n == NULL) || (alists_isItemInList (doneQ, (void *) n)))
+- return completed;
++ {
++ return completed;
++ }
+ else if (alists_isItemInList (l, (void *) n))
+- return recursive;
++ {
++ /* avoid dangling else. */
++ return recursive;
++ }
+ else
+ {
++ /* avoid dangling else. */
+ alists_includeItemIntoList (l, (void *) n);
+ return doDependants (l, n);
+ }
+@@ -15375,11 +16375,17 @@ static dependentState walkType (alists_alist l, decl_node n)
+
+ t = decl_getType (n);
+ if (alists_isItemInList (doneQ, (void *) t))
+- return completed;
++ {
++ return completed;
++ }
+ else if (alists_isItemInList (partialQ, (void *) t))
+- return blocked;
++ {
++ /* avoid dangling else. */
++ return blocked;
++ }
+ else
+ {
++ /* avoid dangling else. */
+ queueBlocked (t);
+ return blocked;
+ }
+@@ -15401,7 +16407,9 @@ static void db (char *a_, unsigned int _a_high, decl_node n)
+ {
+ outText (doP, (char *) a, _a_high);
+ if (n != NULL)
+- outTextS (doP, gen (n));
++ {
++ outTextS (doP, gen (n));
++ }
+ }
+ }
+
+@@ -15418,7 +16426,9 @@ static void dbt (char *a_, unsigned int _a_high)
+ memcpy (a, a_, _a_high+1);
+
+ if (mcOptions_getDebugTopological ())
+- outText (doP, (char *) a, _a_high);
++ {
++ outText (doP, (char *) a, _a_high);
++ }
+ }
+
+
+@@ -15453,7 +16463,9 @@ static void dbs (dependentState s, decl_node n)
+ CaseException ("../../gcc-versionno/gcc/gm2/mc/decl.def", 20, 1);
+ }
+ if (n != NULL)
+- outTextS (doP, gen (n));
++ {
++ outTextS (doP, gen (n));
++ }
+ outText (doP, (char *) "}\\n", 3);
+ }
+ }
+@@ -15475,11 +16487,13 @@ static void dbq (decl_node n)
+ }
+ else if (alists_isItemInList (partialQ, (void *) n))
+ {
++ /* avoid dangling else. */
+ db ((char *) "{P", 2, n);
+ outText (doP, (char *) "}", 1);
+ }
+ else if (alists_isItemInList (doneQ, (void *) n))
+ {
++ /* avoid dangling else. */
+ db ((char *) "{D", 2, n);
+ outText (doP, (char *) "}", 1);
+ }
+@@ -15582,7 +16596,9 @@ static dependentState walkVarient (alists_alist l, decl_node n)
+ static void queueBlocked (decl_node n)
+ {
+ if (! ((alists_isItemInList (doneQ, (void *) n)) || (alists_isItemInList (partialQ, (void *) n))))
+- addTodo (n);
++ {
++ addTodo (n);
++ }
+ }
+
+
+@@ -15596,7 +16612,9 @@ static dependentState walkVar (alists_alist l, decl_node n)
+
+ t = decl_getType (n);
+ if (alists_isItemInList (doneQ, (void *) t))
+- return completed;
++ {
++ return completed;
++ }
+ else
+ {
+ queueBlocked (t);
+@@ -15624,7 +16642,9 @@ static dependentState walkEnumeration (alists_alist l, decl_node n)
+ q = Indexing_GetIndice (n->enumerationF.listOfSons, i);
+ s = walkDependants (l, q);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ i += 1;
+ }
+ return s;
+@@ -15641,13 +16661,19 @@ static dependentState walkSubrange (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->subrangeF.low);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->subrangeF.high);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->subrangeF.type);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return completed;
+ }
+
+@@ -15662,10 +16688,14 @@ static dependentState walkSubscript (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->subscriptF.expr);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->subscriptF.type);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return completed;
+ }
+
+@@ -15681,8 +16711,10 @@ static dependentState walkPointer (alists_alist l, decl_node n)
+ /* if the type of, n, is done or partial then we can output pointer. */
+ t = decl_getType (n);
+ if ((alists_isItemInList (partialQ, (void *) t)) || (alists_isItemInList (doneQ, (void *) t)))
+- /* pointer to partial can always generate a complete type. */
+- return completed;
++ {
++ /* pointer to partial can always generate a complete type. */
++ return completed;
++ }
+ return walkType (l, n);
+ }
+
+@@ -15701,10 +16733,14 @@ static dependentState walkArray (alists_alist l, decl_node n)
+ s = walkDependants (l, n->arrayF.type);
+ queueBlocked (n->arrayF.type);
+ if (s == completed)
+- /* downgrade the completed to partial as it has not yet been written. */
+- return partial;
++ {
++ /* downgrade the completed to partial as it has not yet been written. */
++ return partial;
++ }
+ else
+- return s;
++ {
++ return s;
++ }
+ }
+ return walkDependants (l, n->arrayF.subr);
+ }
+@@ -15720,10 +16756,14 @@ static dependentState walkConst (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->constF.type);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->constF.value);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return completed;
+ }
+
+@@ -15738,8 +16778,10 @@ static dependentState walkVarParam (alists_alist l, decl_node n)
+
+ t = decl_getType (n);
+ if (alists_isItemInList (partialQ, (void *) t))
+- /* parameter can be issued from a partial. */
+- return completed;
++ {
++ /* parameter can be issued from a partial. */
++ return completed;
++ }
+ return walkDependants (l, t);
+ }
+
+@@ -15754,8 +16796,10 @@ static dependentState walkParam (alists_alist l, decl_node n)
+
+ t = decl_getType (n);
+ if (alists_isItemInList (partialQ, (void *) t))
+- /* parameter can be issued from a partial. */
+- return completed;
++ {
++ /* parameter can be issued from a partial. */
++ return completed;
++ }
+ return walkDependants (l, t);
+ }
+
+@@ -15770,8 +16814,10 @@ static dependentState walkOptarg (alists_alist l, decl_node n)
+
+ t = decl_getType (n);
+ if (alists_isItemInList (partialQ, (void *) t))
+- /* parameter can be issued from a partial. */
+- return completed;
++ {
++ /* parameter can be issued from a partial. */
++ return completed;
++ }
+ return walkDependants (l, t);
+ }
+
+@@ -15794,11 +16840,13 @@ static dependentState walkRecordField (alists_alist l, decl_node n)
+ }
+ else if (alists_isItemInList (doneQ, (void *) t))
+ {
++ /* avoid dangling else. */
+ dbs ((dependentState) completed, n);
+ return completed;
+ }
+ else
+ {
++ /* avoid dangling else. */
+ addTodo (t);
+ dbs ((dependentState) blocked, n);
+ dbq (n);
+@@ -15877,7 +16925,9 @@ static dependentState walkProcType (alists_alist l, decl_node n)
+ /* proctype can be generated from partial types. */
+ s = walkDependants (l, t);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ }
+ return walkParameters (l, n->proctypeF.parameters);
+ }
+@@ -15893,7 +16943,9 @@ static dependentState walkProcedure (alists_alist l, decl_node n)
+
+ s = walkDependants (l, decl_getType (n));
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return walkParameters (l, n->procedureF.parameters);
+ }
+
+@@ -15916,7 +16968,9 @@ static dependentState walkParameters (alists_alist l, Indexing_Index p)
+ q = Indexing_GetIndice (p, i);
+ s = walkDependants (l, q);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ i += 1;
+ }
+ return completed;
+@@ -15943,7 +16997,9 @@ static dependentState walkUnary (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->unaryF.arg);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return walkDependants (l, n->unaryF.resultType);
+ }
+
+@@ -15958,10 +17014,14 @@ static dependentState walkBinary (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->binaryF.left);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->binaryF.right);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return walkDependants (l, n->binaryF.resultType);
+ }
+
+@@ -15976,10 +17036,14 @@ static dependentState walkComponentRef (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->componentrefF.rec);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->componentrefF.field);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return walkDependants (l, n->componentrefF.resultType);
+ }
+
+@@ -15994,10 +17058,14 @@ static dependentState walkPointerRef (alists_alist l, decl_node n)
+
+ s = walkDependants (l, n->pointerrefF.ptr);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ s = walkDependants (l, n->pointerrefF.field);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ return walkDependants (l, n->pointerrefF.resultType);
+ }
+
+@@ -16015,14 +17083,18 @@ static dependentState walkSetValue (alists_alist l, decl_node n)
+ mcDebug_assert (decl_isSetValue (n));
+ s = walkDependants (l, n->setvalueF.type);
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ i = Indexing_LowIndice (n->setvalueF.values);
+ j = Indexing_HighIndice (n->setvalueF.values);
+ while (i <= j)
+ {
+ s = walkDependants (l, (decl_node) Indexing_GetIndice (n->setvalueF.values, i));
+ if (s != completed)
+- return s;
++ {
++ return s;
++ }
+ i += 1;
+ }
+ return completed;
+@@ -16177,6 +17249,10 @@ static dependentState doDependants (alists_alist l, decl_node n)
+ return walkPointerRef (l, n);
+ break;
+
++ case not:
++ case abs_:
++ case min:
++ case max:
+ case chr:
+ case cap:
+ case ord:
+@@ -16244,12 +17320,14 @@ static unsigned int tryComplete (decl_node n, nodeProcedure c, nodeProcedure t,
+ }
+ else if (((decl_isType (n)) && (decl_isTypeHidden (n))) && ((decl_getType (n)) == NULL))
+ {
++ /* avoid dangling else. */
+ /* can always emit hidden types. */
+ outputHidden (n);
+ return TRUE;
+ }
+ else if ((allDependants (n)) == completed)
+ {
++ /* avoid dangling else. */
+ output (n, c, t, v);
+ return TRUE;
+ }
+@@ -16271,6 +17349,7 @@ static unsigned int tryCompleteFromPartial (decl_node n, nodeProcedure t)
+ }
+ else if ((allDependants (n)) == completed)
+ {
++ /* avoid dangling else. */
+ (*t.proc) (n);
+ return TRUE;
+ }
+@@ -16284,6 +17363,7 @@ static unsigned int tryCompleteFromPartial (decl_node n, nodeProcedure t)
+
+ static void visitUnary (alists_alist v, decl_node n, nodeProcedure p)
+ {
++ mcDebug_assert (isUnary (n));
+ visitNode (v, n->unaryF.arg, p);
+ visitNode (v, n->unaryF.resultType, p);
+ }
+@@ -16319,7 +17399,9 @@ static void visitBoolean (alists_alist v, decl_node n, nodeProcedure p)
+ static void visitScope (alists_alist v, decl_node n, nodeProcedure p)
+ {
+ if (mustVisitScope)
+- visitNode (v, n, p);
++ {
++ visitNode (v, n, p);
++ }
+ }
+
+
+@@ -16908,6 +17990,17 @@ static void visitSetValue (alists_alist v, decl_node n, nodeProcedure p)
+ }
+
+
++/*
++ visitIntrinsic -
++*/
++
++static void visitIntrinsic (alists_alist v, decl_node n, nodeProcedure p)
++{
++ mcDebug_assert (isIntrinsic (n));
++ visitNode (v, n->intrinsicF.args, p);
++}
++
++
+ /*
+ visitDependants - helper procedure function called from visitNode.
+ node n has just been visited, this procedure will
+@@ -16943,32 +18036,20 @@ static void visitDependants (alists_alist v, decl_node n, nodeProcedure p)
+ case comment:
+ break;
+
++ case throw:
+ case halt:
+- break;
+-
+ case new:
+- break;
+-
+ case dispose:
+- break;
+-
+ case length:
+- break;
+-
+ case inc:
+- break;
+-
+ case dec:
+- break;
+-
+ case incl:
+- break;
+-
+ case excl:
++ visitIntrinsic (v, n, p);
+ break;
+
+ case boolean:
+- visitBoolean (v, n, p); /* handled in funccall. */
++ visitBoolean (v, n, p);
+ break;
+
+ case nil:
+@@ -17180,24 +18261,74 @@ static void visitDependants (alists_alist v, decl_node n, nodeProcedure p)
+ visitBinary (v, n, p);
+ break;
+
+- case re:
++ case re:
++ visitUnary (v, n, p);
++ break;
++
+ case im:
++ visitUnary (v, n, p);
++ break;
++
+ case abs_:
++ visitUnary (v, n, p);
++ break;
++
+ case chr:
++ visitUnary (v, n, p);
++ break;
++
+ case cap:
++ visitUnary (v, n, p);
++ break;
++
+ case high:
++ visitUnary (v, n, p);
++ break;
++
+ case ord:
++ visitUnary (v, n, p);
++ break;
++
+ case float_:
++ visitUnary (v, n, p);
++ break;
++
+ case trunc:
++ visitUnary (v, n, p);
++ break;
++
+ case not:
++ visitUnary (v, n, p);
++ break;
++
+ case neg:
++ visitUnary (v, n, p);
++ break;
++
+ case adr:
++ visitUnary (v, n, p);
++ break;
++
+ case size:
++ visitUnary (v, n, p);
++ break;
++
+ case tsize:
++ visitUnary (v, n, p);
++ break;
++
+ case min:
++ visitUnary (v, n, p);
++ break;
++
+ case max:
+- case throw:
++ visitUnary (v, n, p);
++ break;
++
+ case constexp:
++ visitUnary (v, n, p);
++ break;
++
+ case deref:
+ visitUnary (v, n, p);
+ break;
+@@ -17698,7 +18829,9 @@ static unsigned int tryPartial (decl_node n, nodeProcedure pt)
+ {
+ q = decl_getType (n);
+ while (decl_isPointer (q))
+- q = decl_getType (q);
++ {
++ q = decl_getType (q);
++ }
+ if (q != NULL)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+@@ -17710,6 +18843,7 @@ static unsigned int tryPartial (decl_node n, nodeProcedure pt)
+ }
+ else if (decl_isArray (q))
+ {
++ /* avoid dangling else. */
+ (*pt.proc) (n);
+ addTodo (q);
+ return TRUE;
+@@ -17741,11 +18875,19 @@ static void outputPartial (decl_node n)
+ mcPretty_setNeedSpace (doP);
+ s = getFQstring (n);
+ if (decl_isRecord (q))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_r", 2)));
++ {
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_r", 2)));
++ }
+ else if (decl_isArray (q))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_a", 2)));
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_a", 2)));
++ }
+ else if (decl_isProcType (q))
+- s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_p", 2)));
++ {
++ /* avoid dangling else. */
++ s = DynamicStrings_ConCat (s, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "_p", 2)));
++ }
+ outTextS (doP, s);
+ mcPretty_setNeedSpace (doP);
+ s = DynamicStrings_KillString (s);
+@@ -17782,12 +18924,16 @@ static void tryOutputTodo (nodeProcedure c, nodeProcedure t, nodeProcedure v, no
+ }
+ else if (tryPartial (d, pt))
+ {
++ /* avoid dangling else. */
+ alists_removeItemFromList (todoQ, (void *) d);
+ alists_includeItemIntoList (partialQ, (void *) d);
+ i = 1;
+ }
+ else
+- i += 1;
++ {
++ /* avoid dangling else. */
++ i += 1;
++ }
+ n = alists_noOfItemsInList (todoQ);
+ }
+ }
+@@ -17816,7 +18962,9 @@ static void tryOutputPartial (nodeProcedure t)
+ n -= 1;
+ }
+ else
+- i += 1;
++ {
++ i += 1;
++ }
+ }
+ }
+
+@@ -17873,7 +19021,9 @@ static void addEnumConst (decl_node n)
+ DynamicStrings_String s;
+
+ if ((decl_isConst (n)) || (decl_isEnumeration (n)))
+- addTodo (n);
++ {
++ addTodo (n);
++ }
+ }
+
+
+@@ -17974,11 +19124,19 @@ static void outImpInitC (mcPretty_pretty p, decl_node n)
+ static void runSimplifyTypes (decl_node n)
+ {
+ if (decl_isImp (n))
+- simplifyTypes (n->impF.decls);
++ {
++ simplifyTypes (n->impF.decls);
++ }
+ else if (decl_isModule (n))
+- simplifyTypes (n->moduleF.decls);
++ {
++ /* avoid dangling else. */
++ simplifyTypes (n->moduleF.decls);
++ }
+ else if (decl_isDef (n))
+- simplifyTypes (n->defF.decls);
++ {
++ /* avoid dangling else. */
++ simplifyTypes (n->defF.decls);
++ }
+ }
+
+
+@@ -18052,7 +19210,9 @@ static void runPrototypeExported (decl_node n)
+ static void runPrototypeDefC (decl_node n)
+ {
+ if (decl_isDef (n))
+- Indexing_ForeachIndiceInIndexDo (n->defF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) runPrototypeExported});
++ {
++ Indexing_ForeachIndiceInIndexDo (n->defF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) runPrototypeExported});
++ }
+ }
+
+
+@@ -18102,7 +19262,9 @@ static void outImpC (mcPretty_pretty p, decl_node n)
+ outDeclsImpC (p, n->impF.decls);
+ defModule = decl_lookupDef (decl_getSymName (n));
+ if (defModule != NULL)
+- runPrototypeDefC (defModule);
++ {
++ runPrototypeDefC (defModule);
++ }
+ }
+ Indexing_ForeachIndiceInIndexDo (n->impF.decls.procedures, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) doPrototypeC});
+ outProceduresC (p, n->impF.decls);
+@@ -18209,13 +19371,24 @@ static void outC (mcPretty_pretty p, decl_node n)
+ {
+ keyc_enterScope (n);
+ if (decl_isDef (n))
+- outDefC (p, n);
++ {
++ outDefC (p, n);
++ }
+ else if (decl_isImp (n))
+- outImpC (p, n);
++ {
++ /* avoid dangling else. */
++ outImpC (p, n);
++ }
+ else if (decl_isModule (n))
+- outModuleC (p, n);
++ {
++ /* avoid dangling else. */
++ outModuleC (p, n);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ keyc_leaveScope (n);
+ }
+
+@@ -18234,11 +19407,19 @@ static void doIncludeM2 (decl_node n)
+ mcPretty_print (doP, (char *) " ;\\n", 4);
+ s = DynamicStrings_KillString (s);
+ if (decl_isDef (n))
+- symbolKey_foreachNodeDo (n->defF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ {
++ symbolKey_foreachNodeDo (n->defF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ }
+ else if (decl_isImp (n))
+- symbolKey_foreachNodeDo (n->impF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ {
++ /* avoid dangling else. */
++ symbolKey_foreachNodeDo (n->impF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ }
+ else if (decl_isModule (n))
+- symbolKey_foreachNodeDo (n->moduleF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ {
++ /* avoid dangling else. */
++ symbolKey_foreachNodeDo (n->moduleF.decls.symbols, (symbolKey_performOperation) {(symbolKey_performOperation_t) addDone});
++ }
+ }
+
+
+@@ -18306,11 +19487,15 @@ static void doVarientFieldM2 (mcPretty_pretty p, decl_node n)
+ }
+ else if (decl_isVarient (q))
+ {
++ /* avoid dangling else. */
+ doVarientM2 (p, q);
+ outText (p, (char *) ";\\n", 3);
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ i += 1;
+ }
+ }
+@@ -18333,11 +19518,19 @@ static void doVarientM2 (mcPretty_pretty p, decl_node n)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if (decl_isRecordField (n->varientF.tag))
+- doRecordFieldM2 (p, n->varientF.tag);
++ {
++ doRecordFieldM2 (p, n->varientF.tag);
++ }
+ else if (decl_isVarientField (n->varientF.tag))
+- doVarientFieldM2 (p, n->varientF.tag);
++ {
++ /* avoid dangling else. */
++ doVarientFieldM2 (p, n->varientF.tag);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ }
+ mcPretty_setNeedSpace (p);
+ outText (p, (char *) "OF\\n", 4);
+@@ -18356,9 +19549,15 @@ static void doVarientM2 (mcPretty_pretty p, decl_node n)
+ }
+ }
+ else if (decl_isVarientField (q))
+- doVarientFieldM2 (p, q);
++ {
++ /* avoid dangling else. */
++ doVarientFieldM2 (p, q);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ i += 1;
+ }
+ outText (p, (char *) "END", 3);
+@@ -18395,11 +19594,15 @@ static void doRecordM2 (mcPretty_pretty p, decl_node n)
+ }
+ else if (decl_isVarient (f))
+ {
++ /* avoid dangling else. */
+ doVarientM2 (p, f);
+ outText (p, (char *) ";\\n", 3);
+ }
+ else if (decl_isVarientField (f))
+- doVarientFieldM2 (p, f);
++ {
++ /* avoid dangling else. */
++ doVarientFieldM2 (p, f);
++ }
+ i += 1;
+ }
+ p = outKm2 (p, (char *) "END", 3);
+@@ -18532,19 +19735,39 @@ static void doSystemM2 (mcPretty_pretty p, decl_node n)
+ static void doTypeM2 (mcPretty_pretty p, decl_node n)
+ {
+ if (isBase (n))
+- doBaseM2 (p, n);
++ {
++ doBaseM2 (p, n);
++ }
+ else if (isSystem (n))
+- doSystemM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doSystemM2 (p, n);
++ }
+ else if (decl_isType (n))
+- doTypeAliasM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doTypeAliasM2 (p, n);
++ }
+ else if (decl_isProcType (n))
+- doProcTypeM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doProcTypeM2 (p, n);
++ }
+ else if (decl_isPointer (n))
+- doPointerM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doPointerM2 (p, n);
++ }
+ else if (decl_isEnumeration (n))
+- doEnumerationM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doEnumerationM2 (p, n);
++ }
+ else if (decl_isRecord (n))
+- doRecordM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doRecordM2 (p, n);
++ }
+ }
+
+
+@@ -18615,13 +19838,17 @@ static void doParamM2 (mcPretty_pretty p, decl_node n)
+ mcDebug_assert (decl_isParam (n));
+ ptype = decl_getType (n);
+ if (n->paramF.namelist == NULL)
+- doTypeNameM2 (p, ptype);
++ {
++ doTypeNameM2 (p, ptype);
++ }
+ else
+ {
+ mcDebug_assert (isIdentList (n->paramF.namelist));
+ l = n->paramF.namelist->identlistF.names;
+ if (l == NULL)
+- doTypeNameM2 (p, ptype);
++ {
++ doTypeNameM2 (p, ptype);
++ }
+ else
+ {
+ t = wlists_noOfItemsInList (l);
+@@ -18663,13 +19890,17 @@ static void doVarParamM2 (mcPretty_pretty p, decl_node n)
+ mcPretty_setNeedSpace (p);
+ ptype = decl_getType (n);
+ if (n->varparamF.namelist == NULL)
+- doTypeNameM2 (p, ptype);
++ {
++ doTypeNameM2 (p, ptype);
++ }
+ else
+ {
+ mcDebug_assert (isIdentList (n->varparamF.namelist));
+ l = n->varparamF.namelist->identlistF.names;
+ if (l == NULL)
+- doTypeNameM2 (p, ptype);
++ {
++ doTypeNameM2 (p, ptype);
++ }
+ else
+ {
+ t = wlists_noOfItemsInList (l);
+@@ -18701,11 +19932,19 @@ static void doVarParamM2 (mcPretty_pretty p, decl_node n)
+ static void doParameterM2 (mcPretty_pretty p, decl_node n)
+ {
+ if (decl_isParam (n))
+- doParamM2 (p, n);
++ {
++ doParamM2 (p, n);
++ }
+ else if (decl_isVarParam (n))
+- doVarParamM2 (p, n);
++ {
++ /* avoid dangling else. */
++ doVarParamM2 (p, n);
++ }
+ else if (decl_isVarargs (n))
+- mcPretty_print (p, (char *) "...", 3);
++ {
++ /* avoid dangling else. */
++ mcPretty_print (p, (char *) "...", 3);
++ }
+ }
+
+
+@@ -18765,11 +20004,19 @@ static void outputPartialM2 (decl_node n)
+
+ q = decl_getType (n);
+ if (decl_isRecord (q))
+- doTypeM2 (doP, n);
++ {
++ doTypeM2 (doP, n);
++ }
+ else if (decl_isArray (q))
+- doTypeM2 (doP, n);
++ {
++ /* avoid dangling else. */
++ doTypeM2 (doP, n);
++ }
+ else if (decl_isProcType (q))
+- doTypeM2 (doP, n);
++ {
++ /* avoid dangling else. */
++ doTypeM2 (doP, n);
++ }
+ }
+
+
+@@ -18879,13 +20126,24 @@ static void outModuleM2 (mcPretty_pretty p, decl_node n)
+ static void outM2 (mcPretty_pretty p, decl_node n)
+ {
+ if (decl_isDef (n))
+- outDefM2 (p, n);
++ {
++ outDefM2 (p, n);
++ }
+ else if (decl_isImp (n))
+- outImpM2 (p, n);
++ {
++ /* avoid dangling else. */
++ outImpM2 (p, n);
++ }
+ else if (decl_isModule (n))
+- outModuleM2 (p, n);
++ {
++ /* avoid dangling else. */
++ outModuleM2 (p, n);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -18918,7 +20176,9 @@ static void addDoneDef (decl_node n)
+ mcError_errorAbort0 ((char *) "terminating compilation", 23);
+ }
+ else
+- addDone (n);
++ {
++ addDone (n);
++ }
+ }
+
+
+@@ -18929,7 +20189,9 @@ static void addDoneDef (decl_node n)
+ static decl_node dbgAdd (alists_alist l, decl_node n)
+ {
+ if (n != NULL)
+- alists_includeItemIntoList (l, (void *) n);
++ {
++ alists_includeItemIntoList (l, (void *) n);
++ }
+ return n;
+ }
+
+@@ -18945,9 +20207,13 @@ static void dbgType (alists_alist l, decl_node n)
+ t = dbgAdd (l, decl_getType (n));
+ out1 ((char *) "<%s type", 8, n);
+ if (t == NULL)
+- out0 ((char *) ", type = NIL\\n", 14);
++ {
++ out0 ((char *) ", type = NIL\\n", 14);
++ }
+ else
+- out1 ((char *) ", type = %s>\\n", 14, t);
++ {
++ out1 ((char *) ", type = %s>\\n", 14, t);
++ }
+ }
+
+
+@@ -18982,13 +20248,24 @@ static void dbgRecord (alists_alist l, decl_node n)
+ {
+ q = Indexing_GetIndice (n->recordF.listOfSons, i);
+ if (decl_isRecordField (q))
+- out1 ((char *) " <recordfield %s", 16, q);
++ {
++ out1 ((char *) " <recordfield %s", 16, q);
++ }
+ else if (decl_isVarientField (q))
+- out1 ((char *) " <varientfield %s", 17, q);
++ {
++ /* avoid dangling else. */
++ out1 ((char *) " <varientfield %s", 17, q);
++ }
+ else if (decl_isVarient (q))
+- out1 ((char *) " <varient %s", 12, q);
++ {
++ /* avoid dangling else. */
++ out1 ((char *) " <varient %s", 12, q);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ q = dbgAdd (l, decl_getType (q));
+ out1 ((char *) ": %s>\\n", 7, q);
+ i += 1;
+@@ -19011,7 +20288,9 @@ static void dbgVarient (alists_alist l, decl_node n)
+ out1 ((char *) "tag %s", 6, n->varientF.tag);
+ q = decl_getType (n->varientF.tag);
+ if (q == NULL)
+- outText (doP, (char *) "\\n", 2);
++ {
++ outText (doP, (char *) "\\n", 2);
++ }
+ else
+ {
+ out1 ((char *) ": %s\\n", 6, q);
+@@ -19023,13 +20302,24 @@ static void dbgVarient (alists_alist l, decl_node n)
+ {
+ q = Indexing_GetIndice (n->varientF.listOfSons, i);
+ if (decl_isRecordField (q))
+- out1 ((char *) " <recordfield %s", 16, q);
++ {
++ out1 ((char *) " <recordfield %s", 16, q);
++ }
+ else if (decl_isVarientField (q))
+- out1 ((char *) " <varientfield %s", 17, q);
++ {
++ /* avoid dangling else. */
++ out1 ((char *) " <varientfield %s", 17, q);
++ }
+ else if (decl_isVarient (q))
+- out1 ((char *) " <varient %s", 12, q);
++ {
++ /* avoid dangling else. */
++ out1 ((char *) " <varient %s", 12, q);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ q = dbgAdd (l, decl_getType (q));
+ out1 ((char *) ": %s>\\n", 7, q);
+ i += 1;
+@@ -19082,7 +20372,9 @@ static void dbgVar (alists_alist l, decl_node n)
+ static void dbgSubrange (alists_alist l, decl_node n)
+ {
+ if (n->subrangeF.low == NULL)
+- out1 ((char *) "%s", 2, n->subrangeF.type);
++ {
++ out1 ((char *) "%s", 2, n->subrangeF.type);
++ }
+ else
+ {
+ out1 ((char *) "[%s", 3, n->subrangeF.low);
+@@ -19102,7 +20394,9 @@ static void dbgArray (alists_alist l, decl_node n)
+ t = dbgAdd (l, decl_getType (n));
+ out1 ((char *) "<%s array ", 10, n);
+ if (n->arrayF.subr != NULL)
+- dbgSubrange (l, n->arrayF.subr);
++ {
++ dbgSubrange (l, n->arrayF.subr);
++ }
+ out1 ((char *) " of %s>\\n", 9, t);
+ }
+
+@@ -19116,21 +20410,45 @@ static void doDbg (alists_alist l, decl_node n)
+ if (n == NULL)
+ {} /* empty. */
+ else if (decl_isSubrange (n))
+- dbgSubrange (l, n);
++ {
++ /* avoid dangling else. */
++ dbgSubrange (l, n);
++ }
+ else if (decl_isType (n))
+- dbgType (l, n);
++ {
++ /* avoid dangling else. */
++ dbgType (l, n);
++ }
+ else if (decl_isRecord (n))
+- dbgRecord (l, n);
++ {
++ /* avoid dangling else. */
++ dbgRecord (l, n);
++ }
+ else if (decl_isVarient (n))
+- dbgVarient (l, n);
++ {
++ /* avoid dangling else. */
++ dbgVarient (l, n);
++ }
+ else if (decl_isEnumeration (n))
+- dbgEnumeration (l, n);
++ {
++ /* avoid dangling else. */
++ dbgEnumeration (l, n);
++ }
+ else if (decl_isPointer (n))
+- dbgPointer (l, n);
++ {
++ /* avoid dangling else. */
++ dbgPointer (l, n);
++ }
+ else if (decl_isArray (n))
+- dbgArray (l, n);
++ {
++ /* avoid dangling else. */
++ dbgArray (l, n);
++ }
+ else if (decl_isVar (n))
+- dbgVar (l, n);
++ {
++ /* avoid dangling else. */
++ dbgVar (l, n);
++ }
+ }
+
+
+@@ -19173,6 +20491,17 @@ static void addGenericBody (decl_node n, decl_node c)
+ {
+ switch (n->kind)
+ {
++ case throw:
++ case halt:
++ case new:
++ case dispose:
++ case inc:
++ case dec:
++ case incl:
++ case excl:
++ n->intrinsicF.intrinsicComment.body = c;
++ break;
++
+ case funccall:
+ n->funccallF.funccallComment.body = c;
+ break;
+@@ -19213,6 +20542,17 @@ static void addGenericAfter (decl_node n, decl_node c)
+ {
+ switch (n->kind)
+ {
++ case throw:
++ case halt:
++ case new:
++ case dispose:
++ case inc:
++ case dec:
++ case incl:
++ case excl:
++ n->intrinsicF.intrinsicComment.after = c;
++ break;
++
+ case funccall:
+ n->funccallF.funccallComment.after = c;
+ break;
+@@ -19532,7 +20872,6 @@ static decl_node doDupExpr (decl_node n)
+ case float_:
+ case trunc:
+ case ord:
+- case throw:
+ case not:
+ case neg:
+ case adr:
+@@ -19999,11 +21338,19 @@ void decl_resetEnumPos (decl_node n)
+ {
+ mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n)));
+ if (decl_isDef (n))
+- n->defF.enumFixup.count = 0;
++ {
++ n->defF.enumFixup.count = 0;
++ }
+ else if (decl_isImp (n))
+- n->impF.enumFixup.count = 0;
++ {
++ /* avoid dangling else. */
++ n->impF.enumFixup.count = 0;
++ }
+ else if (decl_isModule (n))
+- n->moduleF.enumFixup.count = 0;
++ {
++ /* avoid dangling else. */
++ n->moduleF.enumFixup.count = 0;
++ }
+ }
+
+
+@@ -20018,11 +21365,19 @@ decl_node decl_getNextEnum (void)
+ n = NULL;
+ mcDebug_assert (((decl_isDef (currentModule)) || (decl_isImp (currentModule))) || (decl_isModule (currentModule)));
+ if (decl_isDef (currentModule))
+- n = getNextFixup (&currentModule->defF.enumFixup);
++ {
++ n = getNextFixup (&currentModule->defF.enumFixup);
++ }
+ else if (decl_isImp (currentModule))
+- n = getNextFixup (&currentModule->impF.enumFixup);
++ {
++ /* avoid dangling else. */
++ n = getNextFixup (&currentModule->impF.enumFixup);
++ }
+ else if (decl_isModule (currentModule))
+- n = getNextFixup (&currentModule->moduleF.enumFixup);
++ {
++ /* avoid dangling else. */
++ n = getNextFixup (&currentModule->moduleF.enumFixup);
++ }
+ mcDebug_assert (n != NULL);
+ mcDebug_assert ((decl_isEnumeration (n)) || (decl_isEnumerationField (n)));
+ return n;
+@@ -20466,6 +21821,8 @@ decl_node decl_getType (decl_node n)
+ return booleanN;
+ break;
+
++ case max:
++ case min:
+ case re:
+ case im:
+ case abs_:
+@@ -20551,8 +21908,10 @@ decl_node decl_skipType (decl_node n)
+ while ((n != NULL) && (decl_isType (n)))
+ {
+ if ((decl_getType (n)) == NULL)
+- /* this will occur if, n, is an opaque type. */
+- return n;
++ {
++ /* this will occur if, n, is an opaque type. */
++ return n;
++ }
+ n = decl_getType (n);
+ }
+ return n;
+@@ -20632,17 +21991,19 @@ unsigned int decl_isExported (decl_node n)
+
+ s = decl_getScope (n);
+ if (s != NULL)
+- switch (s->kind)
+- {
+- case def:
+- return Indexing_IsIndiceInIndex (s->defF.exported, (void *) n);
+- break;
++ {
++ switch (s->kind)
++ {
++ case def:
++ return Indexing_IsIndiceInIndex (s->defF.exported, (void *) n);
++ break;
+
+
+- default:
+- return FALSE;
+- break;
+- }
++ default:
++ return FALSE;
++ break;
++ }
++ }
+ return FALSE;
+ }
+
+@@ -20933,7 +22294,9 @@ unsigned int decl_isConstSet (decl_node n)
+ {
+ mcDebug_assert (n != NULL);
+ if ((decl_isLiteral (n)) || (decl_isConst (n)))
+- return decl_isSet (decl_skipType (decl_getType (n)));
++ {
++ return decl_isSet (decl_skipType (decl_getType (n)));
++ }
+ return FALSE;
+ }
+
+@@ -21321,9 +22684,13 @@ decl_node decl_makeVarDecl (decl_node i, decl_node type)
+ decl_node decl_makeEnum (void)
+ {
+ if ((currentModule != NULL) && (decl_getEnumsComplete (currentModule)))
+- return decl_getNextEnum ();
++ {
++ return decl_getNextEnum ();
++ }
+ else
+- return doMakeEnum ();
++ {
++ return doMakeEnum ();
++ }
+ }
+
+
+@@ -21334,9 +22701,13 @@ decl_node decl_makeEnum (void)
+ decl_node decl_makeEnumField (decl_node e, nameKey_Name n)
+ {
+ if ((currentModule != NULL) && (decl_getEnumsComplete (currentModule)))
+- return decl_getNextEnum ();
++ {
++ return decl_getNextEnum ();
++ }
+ else
+- return doMakeEnumField (e, n);
++ {
++ return doMakeEnumField (e, n);
++ }
+ }
+
+
+@@ -21458,9 +22829,13 @@ decl_node decl_makeVarient (decl_node r)
+ n->varientF.listOfSons = Indexing_InitIndex (1);
+ /* if so use this n^.varientF.parent := r */
+ if (decl_isRecord (r))
+- n->varientF.varient = NULL;
++ {
++ n->varientF.varient = NULL;
++ }
+ else
+- n->varientF.varient = r;
++ {
++ n->varientF.varient = r;
++ }
+ n->varientF.tag = NULL;
+ n->varientF.scope = decl_getDeclScope ();
+ switch (r->kind)
+@@ -21514,9 +22889,13 @@ decl_node decl_addFieldsToRecord (decl_node r, decl_node v, decl_node i, decl_no
+ fn = wlists_getItemFromList (i->identlistF.names, j);
+ fj = symbolKey_getSymKey (p->recordF.localSymbols, (nameKey_Name) n);
+ if (fj == NULL)
+- fj = putFieldRecord (r, fn, t, v);
++ {
++ fj = putFieldRecord (r, fn, t, v);
++ }
+ else
+- mcMetaError_metaErrors2 ((char *) "record field {%1ad} has already been declared inside a {%2Dd} {%2a}", 67, (char *) "attempting to declare a duplicate record field", 46, (unsigned char *) &fj, (sizeof (fj)-1), (unsigned char *) &p, (sizeof (p)-1));
++ {
++ mcMetaError_metaErrors2 ((char *) "record field {%1ad} has already been declared inside a {%2Dd} {%2a}", 67, (char *) "attempting to declare a duplicate record field", 46, (unsigned char *) &fj, (sizeof (fj)-1), (unsigned char *) &p, (sizeof (p)-1));
++ }
+ j += 1;
+ }
+ return r;
+@@ -21538,14 +22917,18 @@ void decl_buildVarientSelector (decl_node r, decl_node v, nameKey_Name tag, decl
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if ((type == NULL) && (tag == nameKey_NulName))
+- mcMetaError_metaError1 ((char *) "expecting a tag field in the declaration of a varient record {%1Ua}", 67, (unsigned char *) &r, (sizeof (r)-1));
++ {
++ mcMetaError_metaError1 ((char *) "expecting a tag field in the declaration of a varient record {%1Ua}", 67, (unsigned char *) &r, (sizeof (r)-1));
++ }
+ else if (type == NULL)
+ {
++ /* avoid dangling else. */
+ f = decl_lookupSym (tag);
+ putVarientTag (v, f);
+ }
+ else
+ {
++ /* avoid dangling else. */
+ f = putFieldRecord (r, tag, type, v);
+ mcDebug_assert (decl_isRecordField (f));
+ f->recordfieldF.tag = TRUE;
+@@ -21981,7 +23364,9 @@ decl_node decl_lookupExported (decl_node n, nameKey_Name i)
+ mcDebug_assert (decl_isDef (n));
+ r = symbolKey_getSymKey (n->defF.decls.symbols, i);
+ if ((r != NULL) && (decl_isExported (r)))
+- return r;
++ {
++ return r;
++ }
+ return NULL;
+ }
+
+@@ -22004,11 +23389,15 @@ decl_node decl_lookupSym (nameKey_Name n)
+ s = Indexing_GetIndice (scopeStack, h);
+ m = decl_lookupInScope (s, n);
+ if (debugScopes && (m == NULL))
+- out3 ((char *) " [%d] search for symbol name %s in scope %s\\n", 45, h, n, s);
++ {
++ out3 ((char *) " [%d] search for symbol name %s in scope %s\\n", 45, h, n, s);
++ }
+ if (m != NULL)
+ {
+ if (debugScopes)
+- out3 ((char *) " [%d] search for symbol name %s in scope %s (found)\\n", 53, h, n, s);
++ {
++ out3 ((char *) " [%d] search for symbol name %s in scope %s (found)\\n", 53, h, n, s);
++ }
+ return m;
+ }
+ h -= 1;
+@@ -22027,15 +23416,28 @@ void decl_addImportedModule (decl_node m, decl_node i, unsigned int scoped)
+ {
+ mcDebug_assert ((decl_isDef (i)) || (decl_isModule (i)));
+ if (decl_isDef (m))
+- Indexing_IncludeIndiceIntoIndex (m->defF.importedModules, (void *) i);
++ {
++ Indexing_IncludeIndiceIntoIndex (m->defF.importedModules, (void *) i);
++ }
+ else if (decl_isImp (m))
+- Indexing_IncludeIndiceIntoIndex (m->impF.importedModules, (void *) i);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->impF.importedModules, (void *) i);
++ }
+ else if (decl_isModule (m))
+- Indexing_IncludeIndiceIntoIndex (m->moduleF.importedModules, (void *) i);
++ {
++ /* avoid dangling else. */
++ Indexing_IncludeIndiceIntoIndex (m->moduleF.importedModules, (void *) i);
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1);
++ }
+ if (scoped)
+- addModuleToScope (m, i);
++ {
++ addModuleToScope (m, i);
++ }
+ }
+
+
+@@ -22142,9 +23544,13 @@ void decl_foreachModModuleDo (symbolKey_performOperation p)
+ void decl_enterScope (decl_node n)
+ {
+ if (Indexing_IsIndiceInIndex (scopeStack, (void *) n))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- Indexing_IncludeIndiceIntoIndex (scopeStack, (void *) n);
++ {
++ Indexing_IncludeIndiceIntoIndex (scopeStack, (void *) n);
++ }
+ if (debugScopes)
+ {
+ libc_printf ((char *) "enter scope\\n", 13);
+@@ -22215,7 +23621,9 @@ void decl_putCommentDefProcedure (decl_node n)
+ {
+ mcDebug_assert (decl_isProcedure (n));
+ if (mcComment_isProcedureComment (mcLexBuf_lastcomment))
+- n->procedureF.defComment = mcLexBuf_lastcomment;
++ {
++ n->procedureF.defComment = mcLexBuf_lastcomment;
++ }
+ }
+
+
+@@ -22229,7 +23637,9 @@ void decl_putCommentModProcedure (decl_node n)
+ {
+ mcDebug_assert (decl_isProcedure (n));
+ if (mcComment_isProcedureComment (mcLexBuf_lastcomment))
+- n->procedureF.modComment = mcLexBuf_lastcomment;
++ {
++ n->procedureF.modComment = mcLexBuf_lastcomment;
++ }
+ }
+
+
+@@ -22260,9 +23670,13 @@ void decl_putReturnType (decl_node proc, decl_node type)
+ {
+ mcDebug_assert ((decl_isProcedure (proc)) || (decl_isProcType (proc)));
+ if (decl_isProcedure (proc))
+- proc->procedureF.returnType = type;
++ {
++ proc->procedureF.returnType = type;
++ }
+ else
+- proc->proctypeF.returnType = type;
++ {
++ proc->proctypeF.returnType = type;
++ }
+ }
+
+
+@@ -22274,9 +23688,13 @@ void decl_putOptReturn (decl_node proc)
+ {
+ mcDebug_assert ((decl_isProcedure (proc)) || (decl_isProcType (proc)));
+ if (decl_isProcedure (proc))
+- proc->procedureF.returnopt = TRUE;
++ {
++ proc->procedureF.returnopt = TRUE;
++ }
+ else
+- proc->proctypeF.returnopt = TRUE;
++ {
++ proc->proctypeF.returnopt = TRUE;
++ }
+ }
+
+
+@@ -22336,7 +23754,9 @@ void decl_paramLeave (decl_node n)
+ mcDebug_assert (decl_isProcedure (n));
+ n->procedureF.checking = TRUE;
+ if ((decl_isImp (currentModule)) || (decl_isModule (currentModule)))
+- n->procedureF.built = TRUE;
++ {
++ n->procedureF.built = TRUE;
++ }
+ }
+
+
+@@ -22364,7 +23784,9 @@ unsigned int decl_putIdent (decl_node n, nameKey_Name i)
+ {
+ mcDebug_assert (isIdentList (n));
+ if (wlists_isItemInList (n->identlistF.names, (unsigned int) i))
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+ {
+ wlists_putItemIntoList (n->identlistF.names, (unsigned int) i);
+@@ -22386,7 +23808,9 @@ void decl_addVarParameters (decl_node n, decl_node i, decl_node type)
+ mcDebug_assert (decl_isProcedure (n));
+ checkMakeVariables (n, i, type, TRUE);
+ if (n->procedureF.checking)
+- checkParameters (n, i, type, TRUE); /* will destroy, i. */
++ {
++ checkParameters (n, i, type, TRUE); /* will destroy, i. */
++ }
+ else
+ {
+ p = decl_makeVarParameter (i, type, n);
+@@ -22408,7 +23832,9 @@ void decl_addNonVarParameters (decl_node n, decl_node i, decl_node type)
+ mcDebug_assert (decl_isProcedure (n));
+ checkMakeVariables (n, i, type, FALSE);
+ if (n->procedureF.checking)
+- checkParameters (n, i, type, FALSE); /* will destroy, i. */
++ {
++ checkParameters (n, i, type, FALSE); /* will destroy, i. */
++ }
+ else
+ {
+ p = decl_makeNonVarParameter (i, type, n);
+@@ -22453,17 +23879,25 @@ void decl_addParameter (decl_node proc, decl_node param)
+ case procedure:
+ Indexing_IncludeIndiceIntoIndex (proc->procedureF.parameters, (void *) param);
+ if (decl_isVarargs (param))
+- proc->procedureF.vararg = TRUE;
++ {
++ proc->procedureF.vararg = TRUE;
++ }
+ if (decl_isOptarg (param))
+- proc->procedureF.optarg_ = param;
++ {
++ proc->procedureF.optarg_ = param;
++ }
+ break;
+
+ case proctype:
+ Indexing_IncludeIndiceIntoIndex (proc->proctypeF.parameters, (void *) param);
+ if (decl_isVarargs (param))
+- proc->proctypeF.vararg = TRUE;
++ {
++ proc->proctypeF.vararg = TRUE;
++ }
+ if (decl_isOptarg (param))
+- proc->proctypeF.optarg_ = param;
++ {
++ proc->proctypeF.optarg_ = param;
++ }
+ break;
+
+
+@@ -22481,37 +23915,84 @@ void decl_addParameter (decl_node proc, decl_node param)
+ decl_node decl_makeBinaryTok (mcReserved_toktype op, decl_node l, decl_node r)
+ {
+ if (op == mcReserved_equaltok)
+- return makeBinary ((nodeT) equal, l, r, booleanN);
++ {
++ return makeBinary ((nodeT) equal, l, r, booleanN);
++ }
+ else if ((op == mcReserved_hashtok) || (op == mcReserved_lessgreatertok))
+- return makeBinary ((nodeT) notequal, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) notequal, l, r, booleanN);
++ }
+ else if (op == mcReserved_lesstok)
+- return makeBinary ((nodeT) less, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) less, l, r, booleanN);
++ }
+ else if (op == mcReserved_greatertok)
+- return makeBinary ((nodeT) greater, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) greater, l, r, booleanN);
++ }
+ else if (op == mcReserved_greaterequaltok)
+- return makeBinary ((nodeT) greequal, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) greequal, l, r, booleanN);
++ }
+ else if (op == mcReserved_lessequaltok)
+- return makeBinary ((nodeT) lessequal, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) lessequal, l, r, booleanN);
++ }
+ else if (op == mcReserved_andtok)
+- return makeBinary ((nodeT) and, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) and, l, r, booleanN);
++ }
+ else if (op == mcReserved_ortok)
+- return makeBinary ((nodeT) or, l, r, booleanN);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) or, l, r, booleanN);
++ }
+ else if (op == mcReserved_plustok)
+- return makeBinary ((nodeT) plus, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) plus, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_minustok)
+- return makeBinary ((nodeT) sub, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) sub, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_divtok)
+- return makeBinary ((nodeT) div_, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) div_, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_timestok)
+- return makeBinary ((nodeT) mult, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) mult, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_modtok)
+- return makeBinary ((nodeT) mod, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) mod, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_intok)
+- return makeBinary ((nodeT) in, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) in, l, r, (decl_node) NULL);
++ }
+ else if (op == mcReserved_dividetok)
+- return makeBinary ((nodeT) divide, l, r, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeBinary ((nodeT) divide, l, r, (decl_node) NULL);
++ }
+ else
+- M2RTS_HALT (-1); /* most likely op needs a clause as above. */
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1); /* most likely op needs a clause as above. */
++ }
+ }
+
+
+@@ -22523,13 +24004,24 @@ decl_node decl_makeBinaryTok (mcReserved_toktype op, decl_node l, decl_node r)
+ decl_node decl_makeUnaryTok (mcReserved_toktype op, decl_node e)
+ {
+ if (op == mcReserved_nottok)
+- return makeUnary ((nodeT) not, e, booleanN);
++ {
++ return makeUnary ((nodeT) not, e, booleanN);
++ }
+ else if (op == mcReserved_plustok)
+- return makeUnary ((nodeT) plus, e, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeUnary ((nodeT) plus, e, (decl_node) NULL);
++ }
+ else if (op == mcReserved_minustok)
+- return makeUnary ((nodeT) neg, e, (decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ return makeUnary ((nodeT) neg, e, (decl_node) NULL);
++ }
+ else
+- M2RTS_HALT (-1); /* most likely op needs a clause as above. */
++ {
++ /* avoid dangling else. */
++ M2RTS_HALT (-1); /* most likely op needs a clause as above. */
++ }
+ }
+
+
+@@ -22568,7 +24060,9 @@ decl_node decl_makeComponentRef (decl_node rec, decl_node field)
+ return rec;
+ }
+ else
+- return doMakeComponentRef (rec, field);
++ {
++ return doMakeComponentRef (rec, field);
++ }
+ }
+
+
+@@ -22636,9 +24130,13 @@ decl_node decl_makeArrayRef (decl_node array, decl_node index)
+ t = decl_skipType (decl_getType (t));
+ do {
+ if (decl_isArray (t))
+- t = decl_skipType (decl_getType (t));
++ {
++ t = decl_skipType (decl_getType (t));
++ }
+ else
+- mcMetaError_metaError2 ((char *) "cannot access {%1N} dimension of array {%2a}", 44, (unsigned char *) &i, (sizeof (i)-1), (unsigned char *) &t, (sizeof (t)-1));
++ {
++ mcMetaError_metaError2 ((char *) "cannot access {%1N} dimension of array {%2a}", 44, (unsigned char *) &i, (sizeof (i)-1), (unsigned char *) &t, (sizeof (t)-1));
++ }
+ i += 1;
+ } while (! (i > j));
+ n->arrayrefF.resultType = t;
+@@ -22679,9 +24177,13 @@ decl_node decl_makeLiteralInt (nameKey_Name n)
+ s = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n));
+ m->literalF.name = n;
+ if ((DynamicStrings_char (s, -1)) == 'C')
+- m->literalF.type = charN;
++ {
++ m->literalF.type = charN;
++ }
+ else
+- m->literalF.type = ztypeN;
++ {
++ m->literalF.type = ztypeN;
++ }
+ s = DynamicStrings_KillString (s);
+ return m;
+ }
+@@ -22717,9 +24219,13 @@ decl_node decl_makeString (nameKey_Name n)
+ m->stringF.cstring = toCstring (n);
+ m->stringF.clength = lenCstring (m->stringF.cstring);
+ if (m->stringF.isCharCompatible)
+- m->stringF.cchar = toCchar (n);
++ {
++ m->stringF.cchar = toCchar (n);
++ }
+ else
+- m->stringF.cchar = NULL;
++ {
++ m->stringF.cchar = NULL;
++ }
+ return m;
+ }
+
+@@ -22785,15 +24291,29 @@ decl_node decl_includeSetValue (decl_node n, decl_node l, decl_node h)
+ decl_node decl_getBuiltinConst (nameKey_Name n)
+ {
+ if (n == (nameKey_makeKey ((char *) "BITS_PER_UNIT", 13)))
+- return bitsperunitN;
++ {
++ return bitsperunitN;
++ }
+ else if (n == (nameKey_makeKey ((char *) "BITS_PER_WORD", 13)))
+- return bitsperwordN;
++ {
++ /* avoid dangling else. */
++ return bitsperwordN;
++ }
+ else if (n == (nameKey_makeKey ((char *) "BITS_PER_CHAR", 13)))
+- return bitspercharN;
++ {
++ /* avoid dangling else. */
++ return bitspercharN;
++ }
+ else if (n == (nameKey_makeKey ((char *) "UNITS_PER_WORD", 14)))
+- return unitsperwordN;
++ {
++ /* avoid dangling else. */
++ return unitsperwordN;
++ }
+ else
+- return NULL;
++ {
++ /* avoid dangling else. */
++ return NULL;
++ }
+ }
+
+
+@@ -22841,9 +24361,13 @@ void decl_putExpList (decl_node n, decl_node e)
+ decl_node decl_makeConstExp (void)
+ {
+ if ((currentModule != NULL) && (getConstExpComplete (currentModule)))
+- return decl_getNextConstExp ();
++ {
++ return decl_getNextConstExp ();
++ }
+ else
+- return doMakeConstExp ();
++ {
++ return doMakeConstExp ();
++ }
+ }
+
+
+@@ -22857,11 +24381,19 @@ decl_node decl_getNextConstExp (void)
+
+ mcDebug_assert (((decl_isDef (currentModule)) || (decl_isImp (currentModule))) || (decl_isModule (currentModule)));
+ if (decl_isDef (currentModule))
+- return getNextFixup (&currentModule->defF.constFixup);
++ {
++ return getNextFixup (&currentModule->defF.constFixup);
++ }
+ else if (decl_isImp (currentModule))
+- return getNextFixup (&currentModule->impF.constFixup);
++ {
++ /* avoid dangling else. */
++ return getNextFixup (&currentModule->impF.constFixup);
++ }
+ else if (decl_isModule (currentModule))
+- return getNextFixup (&currentModule->moduleF.constFixup);
++ {
++ /* avoid dangling else. */
++ return getNextFixup (&currentModule->moduleF.constFixup);
++ }
+ return n;
+ }
+
+@@ -22914,11 +24446,19 @@ void decl_resetConstExpPos (decl_node n)
+ {
+ mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n)));
+ if (decl_isDef (n))
+- n->defF.constFixup.count = 0;
++ {
++ n->defF.constFixup.count = 0;
++ }
+ else if (decl_isImp (n))
+- n->impF.constFixup.count = 0;
++ {
++ /* avoid dangling else. */
++ n->impF.constFixup.count = 0;
++ }
+ else if (decl_isModule (n))
+- n->moduleF.constFixup.count = 0;
++ {
++ /* avoid dangling else. */
++ n->moduleF.constFixup.count = 0;
++ }
+ }
+
+
+@@ -22932,18 +24472,19 @@ decl_node decl_makeFuncCall (decl_node c, decl_node n)
+
+ mcDebug_assert ((n == NULL) || (decl_isExpList (n)));
+ if (((c == haltN) && ((decl_getMainModule ()) != (decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5))))) && ((decl_getMainModule ()) != (decl_lookupImp (nameKey_makeKey ((char *) "M2RTS", 5)))))
+- decl_addImportedModule (decl_getMainModule (), decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5)), FALSE);
+- if (isAnyType (c))
+- return makeCast (c, n);
+- else
++ {
++ decl_addImportedModule (decl_getMainModule (), decl_lookupDef (nameKey_makeKey ((char *) "M2RTS", 5)), FALSE);
++ }
++ f = checkIntrinsic (c, n);
++ if (f == NULL)
+ {
+ f = newNode ((nodeT) funccall);
+ f->funccallF.function = c;
+ f->funccallF.args = n;
+ f->funccallF.type = NULL;
+ initPair (&f->funccallF.funccallComment);
+- return f;
+ }
++ return f;
+ }
+
+
+@@ -22997,7 +24538,9 @@ void decl_addCommentBody (decl_node n)
+ {
+ b = mcLexBuf_getBodyComment ();
+ if (b != NULL)
+- addGenericBody (n, decl_makeCommentS (b));
++ {
++ addGenericBody (n, decl_makeCommentS (b));
++ }
+ }
+ }
+
+@@ -23014,7 +24557,9 @@ void decl_addCommentAfter (decl_node n)
+ {
+ a = mcLexBuf_getAfterComment ();
+ if (a != NULL)
+- addGenericAfter (n, decl_makeCommentS (a));
++ {
++ addGenericAfter (n, decl_makeCommentS (a));
++ }
+ }
+ }
+
+@@ -23331,7 +24876,9 @@ decl_node decl_makeCommentS (mcComment_commentDesc c)
+ decl_node n;
+
+ if (c == NULL)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+ {
+ n = newNode ((nodeT) comment);
+@@ -23716,9 +25263,13 @@ unsigned int decl_isRange (decl_node n)
+ decl_node decl_dupExpr (decl_node n)
+ {
+ if (n == NULL)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+- return doDupExpr (n);
++ {
++ return doDupExpr (n);
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/Gkeyc.c
++++ b/src/gcc/gm2/mc-boot/Gkeyc.c
+@@ -485,7 +485,9 @@ static void init (void);
+ static void checkCtype (mcPretty_pretty p)
+ {
+ if (seenCtype)
+- mcPretty_print (p, (char *) "#include <ctype.h>\\n", 20);
++ {
++ mcPretty_print (p, (char *) "#include <ctype.h>\\n", 20);
++ }
+ }
+
+
+@@ -496,7 +498,9 @@ static void checkCtype (mcPretty_pretty p)
+ static void checkAbs (mcPretty_pretty p)
+ {
+ if (((((seenLabs || seenAbs) || seenFabs) || seenFabsl) || seenSize_t) || seenSSize_t)
+- mcPretty_print (p, (char *) "#include <stdlib.h>\\n", 21);
++ {
++ mcPretty_print (p, (char *) "#include <stdlib.h>\\n", 21);
++ }
+ }
+
+
+@@ -507,7 +511,9 @@ static void checkAbs (mcPretty_pretty p)
+ static void checkLimits (mcPretty_pretty p)
+ {
+ if ((((((((((((((seenMemcpy || seenIntMin) || seenUIntMin) || seenLongMin) || seenULongMin) || seenCharMin) || seenUCharMin) || seenUIntMin) || seenIntMax) || seenUIntMax) || seenLongMax) || seenULongMax) || seenCharMax) || seenUCharMax) || seenUIntMax)
+- mcPretty_print (p, (char *) "#include <limits.h>\\n", 21);
++ {
++ mcPretty_print (p, (char *) "#include <limits.h>\\n", 21);
++ }
+ }
+
+
+@@ -518,7 +524,9 @@ static void checkLimits (mcPretty_pretty p)
+ static void checkFreeMalloc (mcPretty_pretty p)
+ {
+ if (seenFree || seenMalloc)
+- mcPretty_print (p, (char *) "#include <stdlib.h>\\n", 21);
++ {
++ mcPretty_print (p, (char *) "#include <stdlib.h>\\n", 21);
++ }
+ }
+
+
+@@ -591,7 +599,9 @@ static void checkFalse (mcPretty_pretty p)
+ static void checkNull (mcPretty_pretty p)
+ {
+ if (seenNull)
+- mcPretty_print (p, (char *) "#include <stddef.h>\\n", 21);
++ {
++ mcPretty_print (p, (char *) "#include <stddef.h>\\n", 21);
++ }
+ }
+
+
+@@ -602,7 +612,9 @@ static void checkNull (mcPretty_pretty p)
+ static void checkMemcpy (mcPretty_pretty p)
+ {
+ if (seenMemcpy || seenStrlen)
+- mcPretty_print (p, (char *) "#include <string.h>\\n", 21);
++ {
++ mcPretty_print (p, (char *) "#include <string.h>\\n", 21);
++ }
+ }
+
+
+@@ -628,7 +640,9 @@ static void checkM2RTS (mcPretty_pretty p)
+ static void checkException (mcPretty_pretty p)
+ {
+ if (seenException)
+- mcPretty_print (p, (char *) "# include \"Gmcrts.h\"\\n", 24);
++ {
++ mcPretty_print (p, (char *) "# include \"Gmcrts.h\"\\n", 24);
++ }
+ }
+
+
+@@ -639,7 +653,9 @@ static void checkException (mcPretty_pretty p)
+ static void checkComplex (mcPretty_pretty p)
+ {
+ if (seenComplex)
+- mcPretty_print (p, (char *) "# include <complex.h>\\n", 25);
++ {
++ mcPretty_print (p, (char *) "# include <complex.h>\\n", 25);
++ }
+ }
+
+
+@@ -652,7 +668,9 @@ static scope new (decl_node n)
+ scope s;
+
+ if (freeList == NULL)
+- Storage_ALLOCATE ((void **) &s, sizeof (_T1));
++ {
++ Storage_ALLOCATE ((void **) &s, sizeof (_T1));
++ }
+ else
+ {
+ s = freeList;
+@@ -703,7 +721,9 @@ static unsigned int mangleN (nameKey_Name n, DynamicStrings_String *m, unsigned
+ {
+ (*m) = DynamicStrings_ConCatChar ((*m), '_');
+ if (! (clash (nameKey_makekey (DynamicStrings_string ((*m))), scopes)))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ }
+ ReturnException ("../../gcc-versionno/gcc/gm2/mc/keyc.def", 20, 1);
+ }
+@@ -717,7 +737,9 @@ static unsigned int mangleN (nameKey_Name n, DynamicStrings_String *m, unsigned
+ static unsigned int clash (nameKey_Name n, unsigned int scopes)
+ {
+ if (((symbolKey_getSymKey (macros, n)) != NULL) || ((symbolKey_getSymKey (keywords, n)) != NULL))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ return scopes && ((symbolKey_getSymKey (stack->symbols, n)) != NULL);
+ }
+
+@@ -1240,7 +1262,9 @@ void keyc_leaveScope (decl_node n)
+ s->next = NULL;
+ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -1260,22 +1284,29 @@ DynamicStrings_String keyc_cname (nameKey_Name n, unsigned int scopes)
+
+ m = NULL;
+ if (clash (n, scopes))
+- if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes)))
+- {
+- /* avoid dangling else. */
+- if (scopes)
+- {
+- /* no longer a clash with, m, so add it to the current scope. */
+- n = nameKey_makekey (DynamicStrings_string (m));
+- symbolKey_putSymKey (stack->symbols, n, (void *) m);
+- }
+- }
+- else
+- /* mangleN must always succeed. */
+- M2RTS_HALT (-1);
++ {
++ if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes)))
++ {
++ /* avoid dangling else. */
++ if (scopes)
++ {
++ /* no longer a clash with, m, so add it to the current scope. */
++ n = nameKey_makekey (DynamicStrings_string (m));
++ symbolKey_putSymKey (stack->symbols, n, (void *) m);
++ }
++ }
++ else
++ {
++ /* mangleN must always succeed. */
++ M2RTS_HALT (-1);
++ }
++ }
+ else if (scopes)
+- /* no clash, add it to the current scope. */
+- symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n)));
++ {
++ /* avoid dangling else. */
++ /* no clash, add it to the current scope. */
++ symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n)));
++ }
+ return m;
+ }
+
+@@ -1296,20 +1327,29 @@ nameKey_Name keyc_cnamen (nameKey_Name n, unsigned int scopes)
+
+ m = NULL;
+ if (clash (n, scopes))
+- if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes)))
+- {
+- /* avoid dangling else. */
+- n = nameKey_makekey (DynamicStrings_string (m));
+- if (scopes)
+- /* no longer a clash with, m, so add it to the current scope. */
+- symbolKey_putSymKey (stack->symbols, n, (void *) m);
+- }
+- else
+- /* mangleN must always succeed. */
+- M2RTS_HALT (-1);
++ {
++ if (((mangle1 (n, &m, scopes)) || (mangle2 (n, &m, scopes))) || (mangleN (n, &m, scopes)))
++ {
++ /* avoid dangling else. */
++ n = nameKey_makekey (DynamicStrings_string (m));
++ if (scopes)
++ {
++ /* no longer a clash with, m, so add it to the current scope. */
++ symbolKey_putSymKey (stack->symbols, n, (void *) m);
++ }
++ }
++ else
++ {
++ /* mangleN must always succeed. */
++ M2RTS_HALT (-1);
++ }
++ }
+ else if (scopes)
+- /* no clash, add it to the current scope. */
+- symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n)));
++ {
++ /* avoid dangling else. */
++ /* no clash, add it to the current scope. */
++ symbolKey_putSymKey (stack->symbols, n, (void *) DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n)));
++ }
+ m = DynamicStrings_KillString (m);
+ return n;
+ }
+--- a/src/gcc/gm2/mc-boot/Glists.c
++++ b/src/gcc/gm2/mc-boot/Glists.c
+@@ -180,7 +180,9 @@ void lists_killList (lists_list *l)
+ if ((*l) != NULL)
+ {
+ if ((*l)->next != NULL)
+- lists_killList (&(*l)->next);
++ {
++ lists_killList (&(*l)->next);
++ }
+ Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1));
+ }
+ }
+@@ -198,9 +200,13 @@ void lists_putItemIntoList (lists_list l, void * c)
+ l->elements.array[l->noOfelements-1] = c;
+ }
+ else if (l->next != NULL)
+- lists_putItemIntoList (l->next, c);
++ {
++ /* avoid dangling else. */
++ lists_putItemIntoList (l->next, c);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ l->next = lists_initList ();
+ lists_putItemIntoList (l->next, c);
+ }
+@@ -216,9 +222,13 @@ void * lists_getItemFromList (lists_list l, unsigned int n)
+ while (l != NULL)
+ {
+ if (n <= l->noOfelements)
+- return l->elements.array[n-1];
++ {
++ return l->elements.array[n-1];
++ }
+ else
+- n -= l->noOfelements;
++ {
++ n -= l->noOfelements;
++ }
+ l = l->next;
+ }
+ return 0;
+@@ -236,15 +246,23 @@ unsigned int lists_getIndexOfList (lists_list l, void * c)
+ unsigned int i;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ i = 1;
+ while (i <= l->noOfelements)
+- if (l->elements.array[i-1] == c)
+- return i;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return i;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ return l->noOfelements+(lists_getIndexOfList (l->next, c));
+ }
+ }
+@@ -259,7 +277,9 @@ unsigned int lists_noOfItemsInList (lists_list l)
+ unsigned int t;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ t = 0;
+@@ -280,7 +300,9 @@ unsigned int lists_noOfItemsInList (lists_list l)
+ void lists_includeItemIntoList (lists_list l, void * c)
+ {
+ if (! (lists_isItemInList (l, c)))
+- lists_putItemIntoList (l, c);
++ {
++ lists_putItemIntoList (l, c);
++ }
+ }
+
+
+@@ -302,9 +324,13 @@ void lists_removeItemFromList (lists_list l, void * c)
+ do {
+ i = 1;
+ while ((i <= l->noOfelements) && (l->elements.array[i-1] != c))
+- i += 1;
++ {
++ i += 1;
++ }
+ if ((i <= l->noOfelements) && (l->elements.array[i-1] == c))
+- found = TRUE;
++ {
++ found = TRUE;
++ }
+ else
+ {
+ p = l;
+@@ -312,7 +338,9 @@ void lists_removeItemFromList (lists_list l, void * c)
+ }
+ } while (! ((l == NULL) || found));
+ if (found)
+- removeItem (p, l, i);
++ {
++ removeItem (p, l, i);
++ }
+ }
+ }
+
+@@ -328,10 +356,16 @@ unsigned int lists_isItemInList (lists_list l, void * c)
+ do {
+ i = 1;
+ while (i <= l->noOfelements)
+- if (l->elements.array[i-1] == c)
+- return TRUE;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return TRUE;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ l = l->next;
+ } while (! (l == NULL));
+ return FALSE;
+--- a/src/gcc/gm2/mc-boot/GmcComment.c
++++ b/src/gcc/gm2/mc-boot/GmcComment.c
+@@ -165,9 +165,13 @@ static void dumpComment (mcComment_commentDesc cd);
+ static unsigned int Min (unsigned int a, unsigned int b)
+ {
+ if (a < b)
+- return a;
++ {
++ return a;
++ }
+ else
+- return b;
++ {
++ return b;
++ }
+ }
+
+
+@@ -178,10 +182,16 @@ static unsigned int Min (unsigned int a, unsigned int b)
+ static DynamicStrings_String RemoveNewlines (DynamicStrings_String s)
+ {
+ while ((DynamicStrings_Length (s)) > 0)
+- if ((DynamicStrings_char (s, 0)) == ASCII_nl)
+- s = DynamicStrings_RemoveWhitePrefix (DynamicStrings_Slice (s, 1, 0));
+- else
+- return DynamicStrings_RemoveWhitePrefix (s);
++ {
++ if ((DynamicStrings_char (s, 0)) == ASCII_nl)
++ {
++ s = DynamicStrings_RemoveWhitePrefix (DynamicStrings_Slice (s, 1, 0));
++ }
++ else
++ {
++ return DynamicStrings_RemoveWhitePrefix (s);
++ }
++ }
+ return s;
+ }
+
+@@ -238,9 +248,13 @@ static void dumpComment (mcComment_commentDesc cd)
+ CaseException ("../../gcc-versionno/gcc/gm2/mc/mcComment.def", 20, 1);
+ }
+ if (cd->used)
+- libc_printf ((char *) " used", 5);
++ {
++ libc_printf ((char *) " used", 5);
++ }
+ else
+- libc_printf ((char *) " unused", 7);
++ {
++ libc_printf ((char *) " unused", 7);
++ }
+ libc_printf ((char *) " contents = %s\\n", 16, DynamicStrings_string (cd->content));
+ }
+
+@@ -259,9 +273,13 @@ mcComment_commentDesc mcComment_initComment (unsigned int onlySpaces)
+ Storage_ALLOCATE ((void **) &cd, sizeof (_T1));
+ mcDebug_assert (cd != NULL);
+ if (onlySpaces)
+- cd->type = inBody;
++ {
++ cd->type = inBody;
++ }
+ else
+- cd->type = afterStatement;
++ {
++ cd->type = afterStatement;
++ }
+ cd->content = DynamicStrings_InitString ((char *) "", 0);
+ cd->procName = nameKey_NulName;
+ cd->used = FALSE;
+@@ -277,7 +295,9 @@ mcComment_commentDesc mcComment_initComment (unsigned int onlySpaces)
+ void mcComment_addText (mcComment_commentDesc cd, void * cs)
+ {
+ if (cd != NULL)
+- cd->content = DynamicStrings_ConCat (cd->content, DynamicStrings_InitStringCharStar (cs));
++ {
++ cd->content = DynamicStrings_ConCat (cd->content, DynamicStrings_InitStringCharStar (cs));
++ }
+ }
+
+
+@@ -288,7 +308,9 @@ void mcComment_addText (mcComment_commentDesc cd, void * cs)
+ DynamicStrings_String mcComment_getContent (mcComment_commentDesc cd)
+ {
+ if (cd != NULL)
+- return cd->content;
++ {
++ return cd->content;
++ }
+ return NULL;
+ }
+
+@@ -303,9 +325,13 @@ void * mcComment_getCommentCharStar (mcComment_commentDesc cd)
+
+ s = mcComment_getContent (cd);
+ if (s == NULL)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+- return DynamicStrings_string (s);
++ {
++ return DynamicStrings_string (s);
++ }
+ }
+
+
+@@ -318,11 +344,13 @@ void * mcComment_getCommentCharStar (mcComment_commentDesc cd)
+ void mcComment_setProcedureComment (mcComment_commentDesc cd, nameKey_Name procname)
+ {
+ if (cd != NULL)
+- if (seenProcedure (cd, procname))
+- {
+- cd->type = procedureHeading;
+- cd->procName = procname;
+- }
++ {
++ if (seenProcedure (cd, procname))
++ {
++ cd->type = procedureHeading;
++ cd->procName = procname;
++ }
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GmcComp.c
++++ b/src/gcc/gm2/mc-boot/GmcComp.c
+@@ -239,7 +239,9 @@ static decl_node examineCompilationUnit (void)
+ {
+ mcLexBuf_getToken ();
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- mcLexBuf_getToken ();
++ {
++ mcLexBuf_getToken ();
++ }
+ else
+ {
+ mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "expecting language string after FOR keyword", 43)));
+@@ -247,29 +249,41 @@ static decl_node examineCompilationUnit (void)
+ }
+ }
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- return decl_lookupDef (nameKey_makekey (mcLexBuf_currentstring));
++ {
++ return decl_lookupDef (nameKey_makekey (mcLexBuf_currentstring));
++ }
+ }
+ else
+- mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after DEFINITION keyword", 39)));
++ {
++ mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after DEFINITION keyword", 39)));
++ }
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+ {
++ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- return decl_lookupImp (nameKey_makekey (mcLexBuf_currentstring));
++ {
++ return decl_lookupImp (nameKey_makekey (mcLexBuf_currentstring));
++ }
+ }
+ else
+- mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after IMPLEMENTATION keyword", 43)));
++ {
++ mcflex_mcError (DynamicStrings_string (DynamicStrings_InitString ((char *) "MODULE missing after IMPLEMENTATION keyword", 43)));
++ }
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- return decl_lookupModule (nameKey_makekey (mcLexBuf_currentstring));
++ {
++ return decl_lookupModule (nameKey_makekey (mcLexBuf_currentstring));
++ }
+ }
+ mcLexBuf_getToken ();
+ }
+@@ -330,10 +344,14 @@ static void p1 (decl_node n)
+ /* avoid dangling else. */
+ pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef});
+ if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ()))
+- pass (1, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (1, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+ else
+- pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (1, n, (parserFunction) {(parserFunction_t) mcp1_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+
+
+@@ -348,10 +366,14 @@ static void p2 (decl_node n)
+ /* avoid dangling else. */
+ pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef});
+ if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ()))
+- pass (2, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (2, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+ else
+- pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (2, n, (parserFunction) {(parserFunction_t) mcp2_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+
+
+@@ -366,10 +388,14 @@ static void p3 (decl_node n)
+ /* avoid dangling else. */
+ pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef});
+ if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ()))
+- pass (3, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (3, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+ else
+- pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (3, n, (parserFunction) {(parserFunction_t) mcp3_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+
+
+@@ -384,10 +410,14 @@ static void p4 (decl_node n)
+ /* avoid dangling else. */
+ pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isDef}, (openFunction) {(openFunction_t) openDef});
+ if ((decl_hasHidden (n)) && (mcOptions_getExtendedOpaque ()))
+- pass (4, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (4, decl_lookupImp (decl_getSymName (n)), (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImp}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+ else
+- pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ {
++ pass (4, n, (parserFunction) {(parserFunction_t) mcp4_CompilationUnit}, (decl_isNodeF) {(decl_isNodeF_t) decl_isImpOrModule}, (openFunction) {(openFunction_t) openMod});
++ }
+ }
+
+
+@@ -414,10 +444,14 @@ static unsigned int doOpen (decl_node n, DynamicStrings_String symName, DynamicS
+ decl_setSource (n, nameKey_makekey (DynamicStrings_string (postProcessed)));
+ decl_setCurrentModule (n);
+ if (mcLexBuf_openSource (postProcessed))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to open %s\\n", 19, (unsigned char *) &fileName, (sizeof (fileName)-1));
+ if (exitOnFailure)
+- libc_exit (1);
++ {
++ libc_exit (1);
++ }
+ return FALSE;
+ }
+
+@@ -443,11 +477,15 @@ static unsigned int openDef (decl_node n, unsigned int exitOnFailure)
+ {
+ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find definition module %s.def\\n", 41, (unsigned char *) &symName, (sizeof (symName)-1));
+ if (exitOnFailure)
+- libc_exit (1);
++ {
++ libc_exit (1);
++ }
+ }
+ }
+ else
+- fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName));
++ {
++ fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName));
++ }
+ return doOpen (n, symName, fileName, exitOnFailure);
+ }
+
+@@ -472,15 +510,23 @@ static unsigned int openMod (decl_node n, unsigned int exitOnFailure)
+ if (! (mcSearch_findSourceModFile (symName, &fileName)))
+ {
+ if (decl_isImp (n))
+- mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find implementation module %s.mod\\n", 45, (unsigned char *) &symName, (sizeof (symName)-1));
++ {
++ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find implementation module %s.mod\\n", 45, (unsigned char *) &symName, (sizeof (symName)-1));
++ }
+ else
+- mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find program module %s.mod\\n", 38, (unsigned char *) &symName, (sizeof (symName)-1));
++ {
++ mcPrintf_fprintf1 (FIO_StdErr, (char *) "failed to find program module %s.mod\\n", 38, (unsigned char *) &symName, (sizeof (symName)-1));
++ }
+ if (exitOnFailure)
+- libc_exit (1);
++ {
++ libc_exit (1);
++ }
+ }
+ }
+ else
+- fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName));
++ {
++ fileName = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (sourceName));
++ }
+ return doOpen (n, symName, fileName, exitOnFailure);
+ }
+
+@@ -529,12 +575,16 @@ static void doPass (unsigned int parseDefs, unsigned int parseMain, unsigned int
+ {
+ decl_unsetVisited (decl_getMainModule ());
+ if (parseDefs && (decl_isImp (decl_getMainModule ())))
+- /* we need to parse the definition module of a corresponding implementation module. */
+- (*p.proc) ((void *) decl_lookupDef (decl_getSymName (decl_getMainModule ())));
++ {
++ /* we need to parse the definition module of a corresponding implementation module. */
++ (*p.proc) ((void *) decl_lookupDef (decl_getSymName (decl_getMainModule ())));
++ }
+ (*p.proc) ((void *) decl_getMainModule ());
+ }
+ if (parseDefs)
+- decl_foreachDefModuleDo (p);
++ {
++ decl_foreachDefModuleDo (p);
++ }
+ mcError_flushWarnings ();
+ mcError_flushErrors ();
+ setToPassNo (0);
+@@ -568,7 +618,9 @@ static void init (void)
+ void mcComp_compile (DynamicStrings_String s)
+ {
+ if (s != NULL)
+- doCompile (s);
++ {
++ doCompile (s);
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GmcDebug.c
++++ b/src/gcc/gm2/mc-boot/GmcDebug.c
+@@ -52,7 +52,9 @@ void mcDebug_writeDebug (char *a_, unsigned int _a_high);
+ void mcDebug_assert (unsigned int q)
+ {
+ if (! q)
+- mcError_internalError ((char *) "assert failed", 13, (char *) "../../gcc-versionno/gcc/gm2/mc/mcDebug.mod", 42, 36);
++ {
++ mcError_internalError ((char *) "assert failed", 13, (char *) "../../gcc-versionno/gcc/gm2/mc/mcDebug.mod", 42, 36);
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GmcError.c
++++ b/src/gcc/gm2/mc-boot/GmcError.c
+@@ -292,9 +292,13 @@ static void cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns
+ /* make a local copy of each unbounded array. */
+ memcpy (b, b_, _b_high+1);
+
+- if ((_a_high) == (_b_high))
+- for (i=0; i<=_a_high; i++)
+- a[i] = b[i];
++ if (_a_high == _b_high)
++ {
++ for (i=0; i<=_a_high; i++)
++ {
++ a[i] = b[i];
++ }
++ }
+ }
+
+ static unsigned int translateNameToCharStar (char *a, unsigned int _a_high, unsigned int n)
+@@ -322,8 +326,10 @@ static unsigned int translateNameToCharStar (char *a, unsigned int _a_high, unsi
+ }
+ argno += 1;
+ if (argno > n)
+- /* all done */
+- return FALSE;
++ {
++ /* all done */
++ return FALSE;
++ }
+ }
+ i += 1;
+ }
+@@ -346,9 +352,13 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i
+
+ col += 1;
+ if (Xcode)
+- leader = FormatStrings_Sprintf2 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:", 6)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1));
++ {
++ leader = FormatStrings_Sprintf2 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:", 6)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1));
++ }
+ else
+- leader = FormatStrings_Sprintf3 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:%d:", 9)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1), (unsigned char *) &col, (sizeof (col)-1));
++ {
++ leader = FormatStrings_Sprintf3 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) "%s:%d:%d:", 9)), (unsigned char *) &file, (sizeof (file)-1), (unsigned char *) &line, (sizeof (line)-1), (unsigned char *) &col, (sizeof (col)-1));
++ }
+ p = DynamicStrings_string (s);
+ newline = TRUE;
+ space = FALSE;
+@@ -366,7 +376,9 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i
+ newline = (*p) == ASCII_nl;
+ space = (*p) == ' ';
+ if (newline && Xcode)
+- mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1));
++ {
++ mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1));
++ }
+ StdIO_Write ((*p));
+ p += 1;
+ }
+@@ -375,7 +387,9 @@ static void outString (DynamicStrings_String file, unsigned int line, unsigned i
+ if (Xcode)
+ {
+ if (! space)
+- StdIO_Write (' ');
++ {
++ StdIO_Write (' ');
++ }
+ mcPrintf_printf1 ((char *) "(pos: %d)", 9, (unsigned char *) &col, (sizeof (col)-1));
+ }
+ StdIO_Write (ASCII_nl);
+@@ -409,7 +423,9 @@ static DynamicStrings_String doFormat1 (char *a_, unsigned int _a_high, unsigned
+ s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) &s, (sizeof (s)-1));
+ }
+ else
+- s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) w, _w_high);
++ {
++ s = FormatStrings_Sprintf1 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)), (unsigned char *) w, _w_high);
++ }
+ return s;
+ }
+
+@@ -599,13 +615,21 @@ static void checkIncludes (unsigned int token, unsigned int depth)
+ {
+ lineno = mcLexBuf_tokenToLineNo (token, depth+1);
+ if (depth == 0)
+- mcPrintf_printf2 ((char *) "In file included from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1));
++ {
++ mcPrintf_printf2 ((char *) "In file included from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1));
++ }
+ else
+- mcPrintf_printf2 ((char *) " from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1));
++ {
++ mcPrintf_printf2 ((char *) " from %s:%d", 27, (unsigned char *) &included, (sizeof (included)-1), (unsigned char *) &lineno, (sizeof (lineno)-1));
++ }
+ if ((mcLexBuf_findFileNameFromToken (token, depth+2)) == NULL)
+- mcPrintf_printf0 ((char *) ":\\n", 3);
++ {
++ mcPrintf_printf0 ((char *) ":\\n", 3);
++ }
+ else
+- mcPrintf_printf0 ((char *) ",\\n", 3);
++ {
++ mcPrintf_printf0 ((char *) ",\\n", 3);
++ }
+ checkIncludes (token, depth+1);
+ }
+ }
+@@ -622,28 +646,34 @@ static unsigned int flushAll (mcError_error e, unsigned int FatalStatus)
+
+ written = FALSE;
+ if (e != NULL)
+- do {
+- if ((FatalStatus == e->fatal) && (e->s != NULL))
+- {
+- checkIncludes (e->token, 0);
+- if (e->fatal)
+- e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " error: ", 8), DynamicStrings_Mark (e->s));
+- else
+- e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " warning: ", 10), DynamicStrings_Mark (e->s));
+- outString (mcLexBuf_findFileNameFromToken (e->token, 0), mcLexBuf_tokenToLineNo (e->token, 0), mcLexBuf_tokenToColumnNo (e->token, 0), e->s);
+- if ((e->child != NULL) && (flushAll (e->child, FatalStatus)))
+- {} /* empty. */
+- e->s = NULL;
+- written = TRUE;
+- }
+- f = e;
+- e = e->next;
+- if (! Debugging)
+- {
+- f->s = DynamicStrings_KillString (f->s);
+- Storage_DEALLOCATE ((void **) &f, sizeof (_T1));
+- }
+- } while (! (e == NULL));
++ {
++ do {
++ if ((FatalStatus == e->fatal) && (e->s != NULL))
++ {
++ checkIncludes (e->token, 0);
++ if (e->fatal)
++ {
++ e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " error: ", 8), DynamicStrings_Mark (e->s));
++ }
++ else
++ {
++ e->s = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " warning: ", 10), DynamicStrings_Mark (e->s));
++ }
++ outString (mcLexBuf_findFileNameFromToken (e->token, 0), mcLexBuf_tokenToLineNo (e->token, 0), mcLexBuf_tokenToColumnNo (e->token, 0), e->s);
++ if ((e->child != NULL) && (flushAll (e->child, FatalStatus)))
++ {} /* empty. */
++ e->s = NULL;
++ written = TRUE;
++ }
++ f = e;
++ e = e->next;
++ if (! Debugging)
++ {
++ f->s = DynamicStrings_KillString (f->s);
++ Storage_DEALLOCATE ((void **) &f, sizeof (_T1));
++ }
++ } while (! (e == NULL));
++ }
+ return written;
+ }
+
+@@ -789,7 +819,9 @@ mcError_error mcError_newError (unsigned int atTokenNo)
+ {
+ f = head;
+ while ((f->next != NULL) && (f->next->token < atTokenNo))
+- f = f->next;
++ {
++ f = f->next;
++ }
+ e->next = f->next;
+ f->next = e;
+ }
+@@ -823,7 +855,9 @@ mcError_error mcError_chainError (unsigned int atTokenNo, mcError_error e)
+ mcError_error f;
+
+ if (e == NULL)
+- return mcError_newError (atTokenNo);
++ {
++ return mcError_newError (atTokenNo);
++ }
+ else
+ {
+ Storage_ALLOCATE ((void **) &f, sizeof (_T1));
+@@ -849,9 +883,13 @@ void mcError_errorFormat0 (mcError_error e, char *a_, unsigned int _a_high)
+ errorFormat routines provide a printf capability for the error handle.
+ */
+ if (e->s == NULL)
+- e->s = FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)));
++ {
++ e->s = FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)));
++ }
+ else
+- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)))));
++ {
++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (FormatStrings_Sprintf0 (DynamicStrings_Mark (DynamicStrings_InitString ((char *) a, _a_high)))));
++ }
+ }
+
+ void mcError_errorFormat1 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w_, unsigned int _w_high)
+@@ -866,9 +904,13 @@ void mcError_errorFormat1 (mcError_error e, char *a_, unsigned int _a_high, unsi
+
+ s1 = doFormat1 ((char *) a, _a_high, (unsigned char *) w, _w_high);
+ if (e->s == NULL)
+- e->s = s1;
++ {
++ e->s = s1;
++ }
+ else
+- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ {
++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ }
+ }
+
+ void mcError_errorFormat2 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high)
+@@ -885,9 +927,13 @@ void mcError_errorFormat2 (mcError_error e, char *a_, unsigned int _a_high, unsi
+
+ s1 = doFormat2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high);
+ if (e->s == NULL)
+- e->s = s1;
++ {
++ e->s = s1;
++ }
+ else
+- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ {
++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ }
+ }
+
+ void mcError_errorFormat3 (mcError_error e, char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high)
+@@ -906,9 +952,13 @@ void mcError_errorFormat3 (mcError_error e, char *a_, unsigned int _a_high, unsi
+
+ s1 = doFormat3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high);
+ if (e->s == NULL)
+- e->s = s1;
++ {
++ e->s = s1;
++ }
+ else
+- e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ {
++ e->s = DynamicStrings_ConCat (e->s, DynamicStrings_Mark (s1));
++ }
+ }
+
+ void mcError_errorString (mcError_error e, DynamicStrings_String str)
+@@ -955,7 +1005,9 @@ void mcError_errorStringsAt2 (DynamicStrings_String s1, DynamicStrings_String s2
+ mcError_error e;
+
+ if (s1 == s2)
+- s2 = DynamicStrings_Dup (s1);
++ {
++ s2 = DynamicStrings_Dup (s1);
++ }
+ e = mcError_newError (tok1);
+ mcError_errorString (e, s1);
+ mcError_errorString (mcError_chainError (tok2, e), s2);
+@@ -1000,7 +1052,9 @@ void mcError_warnStringsAt2 (DynamicStrings_String s1, DynamicStrings_String s2,
+ mcError_error e;
+
+ if (s1 == s2)
+- s2 = DynamicStrings_Dup (s1);
++ {
++ s2 = DynamicStrings_Dup (s1);
++ }
+ e = mcError_newWarning (tok1);
+ mcError_errorString (e, s1);
+ mcError_errorString (mcError_chainError (tok2, e), s2);
+@@ -1093,7 +1147,9 @@ void mcError_errorAbort0 (char *a_, unsigned int _a_high)
+
+ mcError_flushWarnings ();
+ if (! (StrLib_StrEqual ((char *) a, _a_high, (char *) "", 0)))
+- mcError_writeFormat0 ((char *) a, _a_high);
++ {
++ mcError_writeFormat0 ((char *) a, _a_high);
++ }
+ if (! (flushAll (head, TRUE)))
+ {
+ mcError_writeFormat0 ((char *) "unidentified error", 18);
+--- a/src/gcc/gm2/mc-boot/GmcFileName.c
++++ b/src/gcc/gm2/mc-boot/GmcFileName.c
+@@ -72,9 +72,13 @@ DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename);
+ DynamicStrings_String mcFileName_calculateFileName (DynamicStrings_String module, DynamicStrings_String extension)
+ {
+ if (MaxFileName == 0)
+- return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, MaxFileName), '.'), extension);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, MaxFileName), '.'), extension);
++ }
+ else
+- return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, (MaxFileName-(DynamicStrings_Length (extension)))-1), '.'), extension);
++ {
++ return DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (module, 0, (MaxFileName-(DynamicStrings_Length (extension)))-1), '.'), extension);
++ }
+ }
+
+
+@@ -98,9 +102,13 @@ DynamicStrings_String mcFileName_calculateStemName (DynamicStrings_String module
+ DynamicStrings_String mcFileName_extractExtension (DynamicStrings_String filename, DynamicStrings_String ext)
+ {
+ if (DynamicStrings_Equal (ext, DynamicStrings_Mark (DynamicStrings_Slice (filename, (int) -(DynamicStrings_Length (ext)), 0))))
+- return DynamicStrings_Slice (filename, 0, (int) -(DynamicStrings_Length (ext)));
++ {
++ return DynamicStrings_Slice (filename, 0, (int) -(DynamicStrings_Length (ext)));
++ }
+ else
+- return filename;
++ {
++ return filename;
++ }
+ }
+
+
+@@ -115,9 +123,13 @@ DynamicStrings_String mcFileName_extractModule (DynamicStrings_String filename)
+
+ i = DynamicStrings_Index (filename, Directory, 0);
+ if (i == -1)
+- return DynamicStrings_Dup (filename);
++ {
++ return DynamicStrings_Dup (filename);
++ }
+ else
+- return DynamicStrings_Slice (filename, i+1, 0);
++ {
++ return DynamicStrings_Slice (filename, i+1, 0);
++ }
+ }
+
+ void _M2_mcFileName_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GmcLexBuf.c
++++ b/src/gcc/gm2/mc-boot/GmcLexBuf.c
+@@ -421,14 +421,20 @@ static void debugLex (unsigned int n)
+ tokenBucket b;
+
+ if (nextTokNo > n)
+- o = nextTokNo-n;
++ {
++ o = nextTokNo-n;
++ }
+ else
+- o = 0;
++ {
++ o = 0;
++ }
+ i = 0;
+ do {
+ t = o+i;
+ if (nextTokNo == t)
+- mcPrintf_printf0 ((char *) "nextTokNo ", 10);
++ {
++ mcPrintf_printf0 ((char *) "nextTokNo ", 10);
++ }
+ b = findtokenBucket (&t);
+ if (b == NULL)
+ {
+@@ -461,7 +467,9 @@ static void seekTo (unsigned int t)
+ t -= 1;
+ b = findtokenBucket (&t);
+ if (b == NULL)
+- updateFromBucket (b, t);
++ {
++ updateFromBucket (b, t);
++ }
+ }
+ }
+
+@@ -480,7 +488,9 @@ static tokenBucket peeptokenBucket (unsigned int *t)
+
+ ct = mcLexBuf_currenttoken;
+ if (Debugging)
+- debugLex (5);
++ {
++ debugLex (5);
++ }
+ old = mcLexBuf_getTokenNo ();
+ do {
+ n = (*t);
+@@ -503,14 +513,22 @@ static tokenBucket peeptokenBucket (unsigned int *t)
+ (*t) = n;
+ nextTokNo = old+1;
+ if (Debugging)
+- mcPrintf_printf2 ((char *) "nextTokNo = %d, old = %d\\n", 26, (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1), (unsigned char *) &old, (sizeof (old)-1));
++ {
++ mcPrintf_printf2 ((char *) "nextTokNo = %d, old = %d\\n", 26, (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1), (unsigned char *) &old, (sizeof (old)-1));
++ }
+ b = findtokenBucket (&old);
+ if (Debugging)
+- mcPrintf_printf1 ((char *) " adjusted old = %d\\n", 21, (unsigned char *) &old, (sizeof (old)-1));
++ {
++ mcPrintf_printf1 ((char *) " adjusted old = %d\\n", 21, (unsigned char *) &old, (sizeof (old)-1));
++ }
+ if (b != NULL)
+- updateFromBucket (b, old);
++ {
++ updateFromBucket (b, old);
++ }
+ if (Debugging)
+- debugLex (5);
++ {
++ debugLex (5);
++ }
+ mcDebug_assert (ct == mcLexBuf_currenttoken);
+ return b;
+ }
+@@ -542,29 +560,37 @@ static void peepAfterComment (void)
+ t = cno+peep;
+ b = peeptokenBucket (&t);
+ if ((b == NULL) || (mcLexBuf_currenttoken == mcReserved_eoftok))
+- finished = TRUE;
++ {
++ finished = TRUE;
++ }
+ else
+ {
+ nextline = b->buf.array[t].line;
+ if (nextline == curline)
+- switch (b->buf.array[t].token)
+- {
+- case mcReserved_eoftok:
+- case mcReserved_endtok:
+- finished = TRUE;
+- break;
+-
+- case mcReserved_commenttok:
+- if (mcComment_isAfterComment (b->buf.array[t].com))
+- afterComment = b->buf.array[t].com;
+- break;
+-
+-
+- default:
+- break;
+- }
++ {
++ switch (b->buf.array[t].token)
++ {
++ case mcReserved_eoftok:
++ case mcReserved_endtok:
++ finished = TRUE;
++ break;
++
++ case mcReserved_commenttok:
++ if (mcComment_isAfterComment (b->buf.array[t].com))
++ {
++ afterComment = b->buf.array[t].com;
++ }
++ break;
++
++
++ default:
++ break;
++ }
++ }
+ else
+- finished = TRUE;
++ {
++ finished = TRUE;
++ }
+ }
+ peep += 1;
+ } while (! (finished));
+@@ -627,7 +653,9 @@ static sourceList newElement (void * s)
+
+ Storage_ALLOCATE ((void **) &l, sizeof (_T1));
+ if (l == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ l->name = DynamicStrings_InitStringCharStar (s);
+@@ -1053,9 +1081,13 @@ static void updateFromBucket (tokenBucket b, unsigned int offset)
+ mcLexBuf_currentinteger = b->buf.array[offset].int_;
+ mcLexBuf_currentcomment = b->buf.array[offset].com;
+ if (mcLexBuf_currentcomment != NULL)
+- mcLexBuf_lastcomment = mcLexBuf_currentcomment;
++ {
++ mcLexBuf_lastcomment = mcLexBuf_currentcomment;
++ }
+ if (Debugging)
+- mcPrintf_printf3 ((char *) "line %d (# %d %d) ", 19, (unsigned char *) &b->buf.array[offset].line, (sizeof (b->buf.array[offset].line)-1), (unsigned char *) &offset, (sizeof (offset)-1), (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1));
++ {
++ mcPrintf_printf3 ((char *) "line %d (# %d %d) ", 19, (unsigned char *) &b->buf.array[offset].line, (sizeof (b->buf.array[offset].line)-1), (unsigned char *) &offset, (sizeof (offset)-1), (unsigned char *) &nextTokNo, (sizeof (nextTokNo)-1));
++ }
+ }
+
+
+@@ -1081,36 +1113,48 @@ static void doGetToken (void)
+ {
+ a = mcflex_getToken ();
+ if (listOfTokens.tail == NULL)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+ if (nextTokNo >= listOfTokens.lastBucketOffset)
+- /* nextTokNo is in the last bucket or needs to be read. */
+- if ((nextTokNo-listOfTokens.lastBucketOffset) < listOfTokens.tail->len)
+- {
+- if (Debugging)
+- mcPrintf_printf0 ((char *) "fetching token from buffer (updateFromBucket)\\n", 47);
+- updateFromBucket (listOfTokens.tail, nextTokNo-listOfTokens.lastBucketOffset);
+- }
+- else
+- {
+- if (Debugging)
+- mcPrintf_printf0 ((char *) "calling flex to place token into buffer\\n", 41);
+- /* call the lexical phase to place a new token into the last bucket. */
+- a = mcflex_getToken ();
+- mcLexBuf_getToken (); /* and call ourselves again to collect the token from bucket. */
+- return; /* and call ourselves again to collect the token from bucket. */
+- }
++ {
++ /* nextTokNo is in the last bucket or needs to be read. */
++ if ((nextTokNo-listOfTokens.lastBucketOffset) < listOfTokens.tail->len)
++ {
++ if (Debugging)
++ {
++ mcPrintf_printf0 ((char *) "fetching token from buffer (updateFromBucket)\\n", 47);
++ }
++ updateFromBucket (listOfTokens.tail, nextTokNo-listOfTokens.lastBucketOffset);
++ }
++ else
++ {
++ if (Debugging)
++ {
++ mcPrintf_printf0 ((char *) "calling flex to place token into buffer\\n", 41);
++ }
++ /* call the lexical phase to place a new token into the last bucket. */
++ a = mcflex_getToken ();
++ mcLexBuf_getToken (); /* and call ourselves again to collect the token from bucket. */
++ return; /* and call ourselves again to collect the token from bucket. */
++ }
++ }
+ else
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "fetching token from buffer\\n", 28);
++ {
++ mcPrintf_printf0 ((char *) "fetching token from buffer\\n", 28);
++ }
+ t = nextTokNo;
+ b = findtokenBucket (&t);
+ updateFromBucket (b, t);
+ }
+ }
+ if (Debugging)
+- displayToken (mcLexBuf_currenttoken);
++ {
++ displayToken (mcLexBuf_currenttoken);
++ }
+ nextTokNo += 1;
+ }
+
+@@ -1123,7 +1167,9 @@ static void doGetToken (void)
+ static void syncOpenWithBuffer (void)
+ {
+ if (listOfTokens.tail != NULL)
+- nextTokNo = listOfTokens.lastBucketOffset+listOfTokens.tail->len;
++ {
++ nextTokNo = listOfTokens.lastBucketOffset+listOfTokens.tail->len;
++ }
+ }
+
+
+@@ -1139,9 +1185,13 @@ static tokenBucket findtokenBucket (unsigned int *tokenNo)
+ while (b != NULL)
+ {
+ if ((*tokenNo) < b->len)
+- return b;
++ {
++ return b;
++ }
+ else
+- (*tokenNo) -= b->len;
++ {
++ (*tokenNo) -= b->len;
++ }
+ b = b->next;
+ }
+ return NULL;
+@@ -1176,6 +1226,7 @@ static void addTokToList (mcReserved_toktype t, nameKey_Name n, int i, mcComment
+ }
+ else if (listOfTokens.tail->len == MaxBucketSize)
+ {
++ /* avoid dangling else. */
+ mcDebug_assert (listOfTokens.tail->next == NULL);
+ Storage_ALLOCATE ((void **) &listOfTokens.tail->next, sizeof (_T2));
+ if (listOfTokens.tail->next == NULL)
+@@ -1216,12 +1267,18 @@ static unsigned int isLastTokenEof (void)
+ {
+ b = listOfTokens.head;
+ if (b == listOfTokens.tail)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ while (b->next != listOfTokens.tail)
+- b = b->next;
++ {
++ b = b->next;
++ }
+ }
+ else
+- b = listOfTokens.tail;
++ {
++ b = listOfTokens.tail;
++ }
+ mcDebug_assert (b->len > 0); /* len should always be >0 */
+ return b->buf.array[b->len-1].token == mcReserved_eoftok; /* len should always be >0 */
+ }
+@@ -1286,15 +1343,19 @@ unsigned int mcLexBuf_openSource (DynamicStrings_String s)
+ return TRUE;
+ }
+ else
+- if (mcflex_openSource (DynamicStrings_string (s)))
+- {
+- mcLexBuf_setFile (DynamicStrings_string (s));
+- syncOpenWithBuffer ();
+- mcLexBuf_getToken ();
+- return TRUE;
+- }
+- else
+- return FALSE;
++ {
++ if (mcflex_openSource (DynamicStrings_string (s)))
++ {
++ mcLexBuf_setFile (DynamicStrings_string (s));
++ syncOpenWithBuffer ();
++ mcLexBuf_getToken ();
++ return TRUE;
++ }
++ else
++ {
++ return FALSE;
++ }
++ }
+ }
+
+
+@@ -1305,8 +1366,12 @@ unsigned int mcLexBuf_openSource (DynamicStrings_String s)
+ void mcLexBuf_closeSource (void)
+ {
+ if (useBufferedTokens)
+- while (mcLexBuf_currenttoken != mcReserved_eoftok)
+- mcLexBuf_getToken ();
++ {
++ while (mcLexBuf_currenttoken != mcReserved_eoftok)
++ {
++ mcLexBuf_getToken ();
++ }
++ }
+ /* a subsequent call to mcflex.OpenSource will really close the file */
+ }
+
+@@ -1366,11 +1431,13 @@ void mcLexBuf_getToken (void)
+ }
+ else if (mcComment_isBodyComment (mcLexBuf_currentcomment))
+ {
++ /* avoid dangling else. */
+ bodyComment = mcLexBuf_currentcomment;
+ afterComment = NULL;
+ }
+ else if (mcComment_isAfterComment (mcLexBuf_currentcomment))
+ {
++ /* avoid dangling else. */
+ procedureComment = NULL;
+ bodyComment = NULL;
+ afterComment = mcLexBuf_currentcomment;
+@@ -1390,7 +1457,9 @@ void mcLexBuf_insertToken (mcReserved_toktype token)
+ if (listOfTokens.tail != NULL)
+ {
+ if (listOfTokens.tail->len > 0)
+- listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
++ {
++ listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
++ }
+ addTokToList (mcLexBuf_currenttoken, (nameKey_Name) nameKey_NulName, 0, (mcComment_commentDesc) NULL, mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
+ mcLexBuf_getToken ();
+ }
+@@ -1407,7 +1476,9 @@ void mcLexBuf_insertTokenAndRewind (mcReserved_toktype token)
+ if (listOfTokens.tail != NULL)
+ {
+ if (listOfTokens.tail->len > 0)
+- listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
++ {
++ listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
++ }
+ addTokToList (mcLexBuf_currenttoken, (nameKey_Name) nameKey_NulName, 0, (mcComment_commentDesc) NULL, mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
+ mcLexBuf_currenttoken = token;
+ }
+@@ -1432,9 +1503,13 @@ unsigned int mcLexBuf_getPreviousTokenLineNo (void)
+ unsigned int mcLexBuf_getLineNo (void)
+ {
+ if (nextTokNo == 0)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- return mcLexBuf_tokenToLineNo (mcLexBuf_getTokenNo (), 0);
++ {
++ return mcLexBuf_tokenToLineNo (mcLexBuf_getTokenNo (), 0);
++ }
+ }
+
+
+@@ -1445,9 +1520,13 @@ unsigned int mcLexBuf_getLineNo (void)
+ unsigned int mcLexBuf_getTokenNo (void)
+ {
+ if (nextTokNo == 0)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- return nextTokNo-1;
++ {
++ return nextTokNo-1;
++ }
+ }
+
+
+@@ -1466,22 +1545,30 @@ unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned int depth)
+
+ b = findtokenBucket (&tokenNo);
+ if (b == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- if (depth == 0)
+- return b->buf.array[tokenNo].line;
+- else
+- {
+- l = b->buf.array[tokenNo].file->left;
+- while (depth > 0)
+- {
+- l = l->left;
+- if (l == b->buf.array[tokenNo].file->left)
+- return 0;
+- depth -= 1;
+- }
+- return l->line;
+- }
++ {
++ if (depth == 0)
++ {
++ return b->buf.array[tokenNo].line;
++ }
++ else
++ {
++ l = b->buf.array[tokenNo].file->left;
++ while (depth > 0)
++ {
++ l = l->left;
++ if (l == b->buf.array[tokenNo].file->left)
++ {
++ return 0;
++ }
++ depth -= 1;
++ }
++ return l->line;
++ }
++ }
+ }
+
+
+@@ -1493,9 +1580,13 @@ unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned int depth)
+ unsigned int mcLexBuf_getColumnNo (void)
+ {
+ if (nextTokNo == 0)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- return mcLexBuf_tokenToColumnNo (mcLexBuf_getTokenNo (), 0);
++ {
++ return mcLexBuf_tokenToColumnNo (mcLexBuf_getTokenNo (), 0);
++ }
+ }
+
+
+@@ -1514,22 +1605,30 @@ unsigned int mcLexBuf_tokenToColumnNo (unsigned int tokenNo, unsigned int depth)
+
+ b = findtokenBucket (&tokenNo);
+ if (b == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+- if (depth == 0)
+- return b->buf.array[tokenNo].col;
+- else
+- {
+- l = b->buf.array[tokenNo].file->left;
+- while (depth > 0)
+- {
+- l = l->left;
+- if (l == b->buf.array[tokenNo].file->left)
+- return 0;
+- depth -= 1;
+- }
+- return l->col;
+- }
++ {
++ if (depth == 0)
++ {
++ return b->buf.array[tokenNo].col;
++ }
++ else
++ {
++ l = b->buf.array[tokenNo].file->left;
++ while (depth > 0)
++ {
++ l = l->left;
++ if (l == b->buf.array[tokenNo].file->left)
++ {
++ return 0;
++ }
++ depth -= 1;
++ }
++ return l->col;
++ }
++ }
+ }
+
+
+@@ -1548,7 +1647,9 @@ DynamicStrings_String mcLexBuf_findFileNameFromToken (unsigned int tokenNo, unsi
+
+ b = findtokenBucket (&tokenNo);
+ if (b == NULL)
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+ {
+ l = b->buf.array[tokenNo].file->left;
+@@ -1556,7 +1657,9 @@ DynamicStrings_String mcLexBuf_findFileNameFromToken (unsigned int tokenNo, unsi
+ {
+ l = l->left;
+ if (l == b->buf.array[tokenNo].file->left)
+- return NULL;
++ {
++ return NULL;
++ }
+ depth -= 1;
+ }
+ return l->name;
+@@ -1596,7 +1699,9 @@ void mcLexBuf_addTok (mcReserved_toktype t)
+ void mcLexBuf_addTokCharStar (mcReserved_toktype t, void * s)
+ {
+ if ((libc_strlen (s)) > 80)
+- stop ();
++ {
++ stop ();
++ }
+ addTokToList (t, nameKey_makekey (s), 0, (mcComment_commentDesc) NULL, mcflex_getLineNo (), mcflex_getColumnNo (), currentSource);
+ currentUsed = TRUE;
+ }
+@@ -1656,14 +1761,16 @@ void mcLexBuf_pushFile (void * filename)
+ checkIfNeedToDuplicate ();
+ addTo (newElement (filename));
+ if (Debugging)
+- if (currentSource->right != currentSource)
+- {
+- l = currentSource;
+- do {
+- mcPrintf_printf3 ((char *) "name = %s, line = %d, col = %d\\n", 32, (unsigned char *) &l->name, (sizeof (l->name)-1), (unsigned char *) &l->line, (sizeof (l->line)-1), (unsigned char *) &l->col, (sizeof (l->col)-1));
+- l = l->right;
+- } while (! (l == currentSource));
+- }
++ {
++ if (currentSource->right != currentSource)
++ {
++ l = currentSource;
++ do {
++ mcPrintf_printf3 ((char *) "name = %s, line = %d, col = %d\\n", 32, (unsigned char *) &l->name, (sizeof (l->name)-1), (unsigned char *) &l->line, (sizeof (l->line)-1), (unsigned char *) &l->col, (sizeof (l->col)-1));
++ l = l->right;
++ } while (! (l == currentSource));
++ }
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GmcMetaError.c
++++ b/src/gcc/gm2/mc-boot/GmcMetaError.c
+@@ -397,7 +397,9 @@ static void internalFormat (DynamicStrings_String s, int i, char *m_, unsigned i
+ FIO_WriteLine (FIO_StdOut);
+ s = DynamicStrings_KillString (s);
+ if (i > 0)
+- i -= 1;
++ {
++ i -= 1;
++ }
+ s = DynamicStrings_Mult (DynamicStrings_InitString ((char *) " ", 1), (unsigned int) i);
+ s = DynamicStrings_ConCatChar (s, '^');
+ s = SFIO_WriteS (FIO_StdOut, s);
+@@ -413,7 +415,9 @@ static void internalFormat (DynamicStrings_String s, int i, char *m_, unsigned i
+ static DynamicStrings_String x (DynamicStrings_String a, DynamicStrings_String b)
+ {
+ if (a != b)
+- mcError_internalError ((char *) "different string returned", 25, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 110);
++ {
++ mcError_internalError ((char *) "different string returned", 25, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 110);
++ }
+ return a;
+ }
+
+@@ -439,7 +443,9 @@ static void then (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna
+ (*i) += 1;
+ ebnf (e, t, r, s, sym, i, l);
+ if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}'))
+- internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ }
+ }
+ }
+
+@@ -453,7 +459,9 @@ static DynamicStrings_String doNumber (unsigned int bol, varargs_vararg sym, Dyn
+ unsigned int c;
+
+ if ((DynamicStrings_Length (o)) > 0)
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ (*quotes) = FALSE;
+@@ -473,7 +481,9 @@ static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, Dyna
+ unsigned int c;
+
+ if ((DynamicStrings_Length (o)) > 0)
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ (*quotes) = FALSE;
+@@ -481,7 +491,9 @@ static DynamicStrings_String doCount (unsigned int bol, varargs_vararg sym, Dyna
+ varargs_arg (sym, (unsigned char *) &c, (sizeof (c)-1));
+ o = DynamicStrings_ConCat (o, StringConvert_ctos (c, 0, ' '));
+ if (((c % 100) >= 11) && ((c % 100) <= 13))
+- o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "th", 2)));
++ {
++ o = DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "th", 2)));
++ }
+
+ else {
+ switch (c % 10)
+@@ -520,9 +532,13 @@ static DynamicStrings_String doAscii (unsigned int bol, varargs_vararg sym, Dyna
+ varargs_next (sym, bol);
+ varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1));
+ if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n)))
+- return o;
++ {
++ return o;
++ }
+ else
+- return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))));
++ {
++ return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))));
++ }
+ }
+
+
+@@ -537,22 +553,33 @@ static DynamicStrings_String doName (unsigned int bol, varargs_vararg sym, Dynam
+ varargs_next (sym, bol);
+ varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1));
+ if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n)))
+- return o;
+- else
+- if (decl_isZtype (n))
+- {
+- (*quotes) = FALSE;
+- return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the ZType", 9)));
+- }
+- else if (decl_isRtype (n))
+- {
+- (*quotes) = FALSE;
+- return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the RType", 9)));
+- }
+- else if ((decl_getSymName (n)) != nameKey_NulName)
+- return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))));
+- else
++ {
+ return o;
++ }
++ else
++ {
++ if (decl_isZtype (n))
++ {
++ (*quotes) = FALSE;
++ return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the ZType", 9)));
++ }
++ else if (decl_isRtype (n))
++ {
++ /* avoid dangling else. */
++ (*quotes) = FALSE;
++ return DynamicStrings_ConCat (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "the RType", 9)));
++ }
++ else if ((decl_getSymName (n)) != nameKey_NulName)
++ {
++ /* avoid dangling else. */
++ return DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n))));
++ }
++ else
++ {
++ /* avoid dangling else. */
++ return o;
++ }
++ }
+ }
+
+
+@@ -569,7 +596,9 @@ static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym,
+ varargs_next (sym, bol);
+ varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1));
+ if (((DynamicStrings_Length (o)) > 0) || (decl_isTemporary (n)))
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ s = decl_getScope (n);
+@@ -581,7 +610,9 @@ static DynamicStrings_String doQualified (unsigned int bol, varargs_vararg sym,
+ o = x (o, DynamicStrings_ConCat (o, DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (decl_getSymName (n)))));
+ }
+ else
+- o = x (o, doAscii (bol, sym, o));
++ {
++ o = x (o, doAscii (bol, sym, o));
++ }
+ varargs_end (&mod);
+ return o;
+ }
+@@ -601,7 +632,9 @@ static DynamicStrings_String doType (unsigned int bol, varargs_vararg *sym, Dyna
+ varargs_next ((*sym), bol);
+ varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1));
+ if (((DynamicStrings_Length (o)) > 0) || ((decl_getType (n)) == NULL))
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ n = decl_skipType (decl_getType (n));
+@@ -624,16 +657,22 @@ static DynamicStrings_String doSkipType (unsigned int bol, varargs_vararg *sym,
+ varargs_next ((*sym), bol);
+ varargs_arg ((*sym), (unsigned char *) &n, (sizeof (n)-1));
+ if ((DynamicStrings_Length (o)) > 0)
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ n = decl_skipType (decl_getType (n));
+ varargs_next ((*sym), bol);
+ varargs_replace ((*sym), (unsigned char *) &n, (sizeof (n)-1));
+ if ((decl_getSymName (n)) == nameKey_NulName)
+- return o;
++ {
++ return o;
++ }
+ else
+- return x (o, doAscii (bol, (*sym), o));
++ {
++ return x (o, doAscii (bol, (*sym), o));
++ }
+ }
+ }
+
+@@ -648,7 +687,9 @@ static DynamicStrings_String doKey (unsigned int bol, varargs_vararg sym, Dynami
+ nameKey_Name n;
+
+ if ((DynamicStrings_Length (o)) > 0)
+- return o;
++ {
++ return o;
++ }
+ else
+ {
+ varargs_next (sym, bol);
+@@ -668,19 +709,27 @@ static mcError_error doError (mcError_error e, errorType t, unsigned int tok)
+ {
+ case chained:
+ if (e == NULL)
+- mcError_internalError ((char *) "should not be chaining an error onto an empty error note", 56, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 356);
++ {
++ mcError_internalError ((char *) "should not be chaining an error onto an empty error note", 56, (char *) "../../gcc-versionno/gcc/gm2/mc/mcMetaError.mod", 46, 356);
++ }
+ else
+- e = mcError_chainError (tok, e);
++ {
++ e = mcError_chainError (tok, e);
++ }
+ break;
+
+ case newerror:
+ if (e == NULL)
+- e = mcError_newError (tok);
++ {
++ e = mcError_newError (tok);
++ }
+ break;
+
+ case newwarning:
+ if (e == NULL)
+- e = mcError_newWarning (tok);
++ {
++ e = mcError_newWarning (tok);
++ }
+ break;
+
+
+@@ -753,11 +802,18 @@ static mcError_error doUsed (mcError_error e, errorType t, unsigned int bol, var
+ static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings_String b)
+ {
+ if (((DynamicStrings_Length (a)) == 1) && ((DynamicStrings_char (a, 0)) == 'a'))
+- a = x (a, DynamicStrings_ConCatChar (a, 'n'));
++ {
++ a = x (a, DynamicStrings_ConCatChar (a, 'n'));
++ }
+ else if ((((DynamicStrings_Length (a)) > 1) && ((DynamicStrings_char (a, -1)) == 'a')) && (isWhite (DynamicStrings_char (a, -2))))
+- a = x (a, DynamicStrings_ConCatChar (a, 'n'));
++ {
++ /* avoid dangling else. */
++ a = x (a, DynamicStrings_ConCatChar (a, 'n'));
++ }
+ if (((DynamicStrings_Length (a)) > 0) && (! (isWhite (DynamicStrings_char (a, -1)))))
+- a = x (a, DynamicStrings_ConCatChar (a, ' '));
++ {
++ a = x (a, DynamicStrings_ConCatChar (a, ' '));
++ }
+ return x (a, DynamicStrings_ConCat (a, b));
+ }
+
+@@ -769,57 +825,126 @@ static DynamicStrings_String ConCatWord (DynamicStrings_String a, DynamicStrings
+ static DynamicStrings_String symDesc (decl_node n, DynamicStrings_String o)
+ {
+ if (decl_isLiteral (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "literal", 7)));
++ {
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "literal", 7)));
++ }
+ else if (decl_isConstSet (n))
+- /*
++ {
++ /* avoid dangling else. */
++ /*
+ ELSIF IsConstructor(n)
+ THEN
+ RETURN( ConCatWord (o, Mark (InitString ('constructor'))) )
+ */
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant set", 12)));
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant set", 12)));
++ }
+ else if (decl_isConst (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant", 8)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "constant", 8)));
++ }
+ else if (decl_isArray (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "array", 5)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "array", 5)));
++ }
+ else if (decl_isVar (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "variable", 8)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "variable", 8)));
++ }
+ else if (decl_isEnumeration (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration type", 16)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration type", 16)));
++ }
+ else if (decl_isEnumerationField (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration field", 17)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "enumeration field", 17)));
++ }
+ else if (decl_isUnbounded (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "unbounded parameter", 19)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "unbounded parameter", 19)));
++ }
+ else if (decl_isProcType (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure type", 14)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure type", 14)));
++ }
+ else if (decl_isProcedure (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure", 9)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "procedure", 9)));
++ }
+ else if (decl_isPointer (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "pointer", 7)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "pointer", 7)));
++ }
+ else if (decl_isParameter (n))
+- if (decl_isVarParam (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "var parameter", 13)));
+- else
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "parameter", 9)));
++ {
++ /* avoid dangling else. */
++ if (decl_isVarParam (n))
++ {
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "var parameter", 13)));
++ }
++ else
++ {
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "parameter", 9)));
++ }
++ }
+ else if (decl_isType (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "type", 4)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "type", 4)));
++ }
+ else if (decl_isRecord (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record", 6)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record", 6)));
++ }
+ else if (decl_isRecordField (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record field", 12)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "record field", 12)));
++ }
+ else if (decl_isVarient (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "varient record", 14)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "varient record", 14)));
++ }
+ else if (decl_isModule (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "module", 6)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "module", 6)));
++ }
+ else if (decl_isDef (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "definition module", 17)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "definition module", 17)));
++ }
+ else if (decl_isImp (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "implementation module", 21)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "implementation module", 21)));
++ }
+ else if (decl_isSet (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "set", 3)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "set", 3)));
++ }
+ else if (decl_isSubrange (n))
+- return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "subrange", 8)));
++ {
++ /* avoid dangling else. */
++ return ConCatWord (o, DynamicStrings_Mark (DynamicStrings_InitString ((char *) "subrange", 8)));
++ }
+ else
+- return o;
++ {
++ /* avoid dangling else. */
++ return o;
++ }
+ }
+
+
+@@ -837,7 +962,9 @@ static DynamicStrings_String doDesc (unsigned int bol, varargs_vararg sym, Dynam
+ varargs_arg (sym, (unsigned char *) &n, (sizeof (n)-1));
+ o = symDesc (n, o);
+ if ((DynamicStrings_Length (o)) > 0)
+- (*quotes) = FALSE;
++ {
++ (*quotes) = FALSE;
++ }
+ }
+ return o;
+ }
+@@ -852,12 +979,18 @@ static DynamicStrings_String addQuoted (DynamicStrings_String r, DynamicStrings_
+ if ((DynamicStrings_Length (o)) > 0)
+ {
+ if (! (isWhite (DynamicStrings_char (r, -1))))
+- r = x (r, DynamicStrings_ConCatChar (r, ' '));
++ {
++ r = x (r, DynamicStrings_ConCatChar (r, ' '));
++ }
+ if (quotes)
+- r = x (r, DynamicStrings_ConCatChar (r, '\''));
++ {
++ r = x (r, DynamicStrings_ConCatChar (r, '\''));
++ }
+ r = x (r, DynamicStrings_ConCat (r, o));
+ if (quotes)
+- r = x (r, DynamicStrings_ConCatChar (r, '\''));
++ {
++ r = x (r, DynamicStrings_ConCatChar (r, '\''));
++ }
+ }
+ return r;
+ }
+@@ -939,7 +1072,9 @@ static void op (mcError_error *e, errorType *t, DynamicStrings_String *r, Dynami
+ o = DynamicStrings_KillString (o);
+ o = DynamicStrings_InitString ((char *) "", 0);
+ if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}'))
+- internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ }
+ (*i) -= 1;
+ break;
+
+@@ -1002,7 +1137,9 @@ static void percenttoken (mcError_error *e, errorType t, DynamicStrings_String *
+ break;
+ }
+ if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}'))
+- internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ }
+ }
+ }
+
+@@ -1044,10 +1181,14 @@ static void lbra (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna
+ (*i) += 1;
+ }
+ if ((DynamicStrings_char (s, (*i))) != '%')
+- internalFormat (s, (*i), (char *) "expecting to see %", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see %", 18);
++ }
+ percenttoken (e, (*t), r, s, sym, i, l, positive);
+ if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}'))
+- internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ }
+ }
+ }
+
+@@ -1082,7 +1223,9 @@ static void ebnf (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna
+ case '{':
+ lbra (e, t, r, s, sym, i, l);
+ if (((*i) < l) && ((DynamicStrings_char (s, (*i))) != '}'))
+- internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ {
++ internalFormat (s, (*i), (char *) "expecting to see }", 18);
++ }
+ break;
+
+ case '}':
+@@ -1092,7 +1235,9 @@ static void ebnf (mcError_error *e, errorType *t, DynamicStrings_String *r, Dyna
+
+ default:
+ if ((((isWhite (DynamicStrings_char (s, (*i)))) && ((DynamicStrings_Length ((*r))) > 0)) && (! (isWhite (DynamicStrings_char ((*r), -1))))) || (! (isWhite (DynamicStrings_char (s, (*i))))))
+- (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i))));
++ {
++ (*r) = x ((*r), DynamicStrings_ConCatChar ((*r), DynamicStrings_char (s, (*i))));
++ }
+ break;
+ }
+ (*i) += 1;
+--- a/src/gcc/gm2/mc-boot/GmcOptions.c
++++ b/src/gcc/gm2/mc-boot/GmcOptions.c
+@@ -279,7 +279,9 @@ static void displayVersion (unsigned int mustExit)
+ mcPrintf_printf0 ((char *) "This is free software: you are free to change and redistribute it.\\n", 68);
+ mcPrintf_printf0 ((char *) "There is NO WARRANTY, to the extent permitted by law.\\n", 55);
+ if (mustExit)
+- libc_exit (0);
++ {
++ libc_exit (0);
++ }
+ }
+
+
+@@ -329,9 +331,14 @@ static void displayHelp (void)
+ static void commentBegin (FIO_File f)
+ {
+ if (langC || langCPP)
+- FIO_WriteString (f, (char *) "/* ", 3);
++ {
++ FIO_WriteString (f, (char *) "/* ", 3);
++ }
+ else if (langM2)
+- FIO_WriteString (f, (char *) "(* ", 3);
++ {
++ /* avoid dangling else. */
++ FIO_WriteString (f, (char *) "(* ", 3);
++ }
+ }
+
+
+@@ -348,6 +355,7 @@ static void commentEnd (FIO_File f)
+ }
+ else if (langM2)
+ {
++ /* avoid dangling else. */
+ FIO_WriteString (f, (char *) " *)", 3);
+ FIO_WriteLine (f);
+ }
+@@ -476,9 +484,13 @@ static void issueGPL (FIO_File f)
+ FIO_WriteLine (f);
+ }
+ if (gplHeader)
+- gplBody (f);
++ {
++ gplBody (f);
++ }
+ if (glplHeader)
+- glplBody (f);
++ {
++ glplBody (f);
++ }
+ commentEnd (f);
+ FIO_WriteLine (f);
+ }
+@@ -579,14 +591,20 @@ static unsigned int optionIs (char *left_, unsigned int _left_high, DynamicStrin
+ memcpy (left, left_, _left_high+1);
+
+ if ((DynamicStrings_Length (right)) == (StrLib_StrLen ((char *) left, _left_high)))
+- return DynamicStrings_EqualArray (right, (char *) left, _left_high);
++ {
++ return DynamicStrings_EqualArray (right, (char *) left, _left_high);
++ }
+ else if ((DynamicStrings_Length (right)) > (StrLib_StrLen ((char *) left, _left_high)))
+ {
++ /* avoid dangling else. */
+ s = DynamicStrings_Mark (DynamicStrings_Slice (right, 0, (int) StrLib_StrLen ((char *) left, _left_high)));
+ return DynamicStrings_EqualArray (s, (char *) left, _left_high);
+ }
+ else
+- return FALSE;
++ {
++ /* avoid dangling else. */
++ return FALSE;
++ }
+ }
+
+
+@@ -604,16 +622,21 @@ static void setLang (DynamicStrings_String arg)
+ }
+ else if (optionIs ((char *) "c", 1, arg))
+ {
++ /* avoid dangling else. */
+ decl_setLangC ();
+ langC = TRUE;
+ }
+ else if (optionIs ((char *) "m2", 2, arg))
+ {
++ /* avoid dangling else. */
+ decl_setLangM2 ();
+ langM2 = TRUE;
+ }
+ else
+- displayHelp ();
++ {
++ /* avoid dangling else. */
++ displayHelp ();
++ }
+ }
+
+
+@@ -624,45 +647,91 @@ static void setLang (DynamicStrings_String arg)
+ static void handleOption (DynamicStrings_String arg)
+ {
+ if ((optionIs ((char *) "--quiet", 7, arg)) || (optionIs ((char *) "-q", 2, arg)))
+- setQuiet (TRUE);
++ {
++ setQuiet (TRUE);
++ }
+ else if ((optionIs ((char *) "--verbose", 9, arg)) || (optionIs ((char *) "-v", 2, arg)))
+- setVerbose (TRUE);
++ {
++ /* avoid dangling else. */
++ setVerbose (TRUE);
++ }
+ else if (optionIs ((char *) "--version", 9, arg))
+- displayVersion (TRUE);
++ {
++ /* avoid dangling else. */
++ displayVersion (TRUE);
++ }
+ else if (optionIs ((char *) "--olang=", 8, arg))
+- setLang (DynamicStrings_Slice (arg, 8, 0));
++ {
++ /* avoid dangling else. */
++ setLang (DynamicStrings_Slice (arg, 8, 0));
++ }
+ else if (optionIs ((char *) "-I", 2, arg))
+- setSearchPath (DynamicStrings_Slice (arg, 2, 0));
++ {
++ /* avoid dangling else. */
++ setSearchPath (DynamicStrings_Slice (arg, 2, 0));
++ }
+ else if ((optionIs ((char *) "--help", 6, arg)) || (optionIs ((char *) "-h", 2, arg)))
+- displayHelp ();
++ {
++ /* avoid dangling else. */
++ displayHelp ();
++ }
+ else if (optionIs ((char *) "--cpp", 5, arg))
+- cppProgram = DynamicStrings_InitString ((char *) "cpp", 3);
++ {
++ /* avoid dangling else. */
++ cppProgram = DynamicStrings_InitString ((char *) "cpp", 3);
++ }
+ else if (optionIs ((char *) "-o=", 3, arg))
+- setOutputFile (DynamicStrings_Slice (arg, 3, 0));
++ {
++ /* avoid dangling else. */
++ setOutputFile (DynamicStrings_Slice (arg, 3, 0));
++ }
+ else if (optionIs ((char *) "--extended-opaque", 17, arg))
+- setExtendedOpaque (TRUE);
++ {
++ /* avoid dangling else. */
++ setExtendedOpaque (TRUE);
++ }
+ else if (optionIs ((char *) "--debug-top", 11, arg))
+- mcOptions_setDebugTopological (TRUE);
++ {
++ /* avoid dangling else. */
++ mcOptions_setDebugTopological (TRUE);
++ }
+ else if (optionIs ((char *) "--h-file-prefix=", 16, arg))
+- setHPrefix (DynamicStrings_Slice (arg, 16, 0));
++ {
++ /* avoid dangling else. */
++ setHPrefix (DynamicStrings_Slice (arg, 16, 0));
++ }
+ else if (optionIs ((char *) "--ignore-fq", 11, arg))
+- setIgnoreFQ (TRUE);
++ {
++ /* avoid dangling else. */
++ setIgnoreFQ (TRUE);
++ }
+ else if (optionIs ((char *) "--gpl-header", 12, arg))
+- gplHeader = TRUE;
++ {
++ /* avoid dangling else. */
++ gplHeader = TRUE;
++ }
+ else if (optionIs ((char *) "--glpl-header", 13, arg))
+- glplHeader = TRUE;
++ {
++ /* avoid dangling else. */
++ glplHeader = TRUE;
++ }
+ else if (optionIs ((char *) "--summary=\"", 11, arg))
+ {
++ /* avoid dangling else. */
+ summary = TRUE;
+ summaryContents = DynamicStrings_Slice (arg, 11, -1);
+ }
+ else if (optionIs ((char *) "--contributed=\"", 15, arg))
+ {
++ /* avoid dangling else. */
+ contributed = TRUE;
+ contributedContents = DynamicStrings_Slice (arg, 13, -1);
+ }
+ else if (optionIs ((char *) "--project=\"", 11, arg))
+- projectContents = DynamicStrings_Slice (arg, 10, -1);
++ {
++ /* avoid dangling else. */
++ projectContents = DynamicStrings_Slice (arg, 10, -1);
++ }
+ }
+
+
+@@ -684,7 +753,9 @@ DynamicStrings_String mcOptions_handleOptions (void)
+ {
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ if ((DynamicStrings_char (arg, 0)) == '-')
+- handleOption (arg);
++ {
++ handleOption (arg);
++ }
+ else
+ {
+ if (! summary)
+@@ -740,13 +811,17 @@ DynamicStrings_String mcOptions_getCppCommandLine (void)
+ DynamicStrings_String s;
+
+ if (DynamicStrings_EqualArray (cppProgram, (char *) "", 0))
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+ {
+ s = DynamicStrings_Dup (cppProgram);
+ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), cppArgs);
+ if (mcOptions_getQuiet ())
+- s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((char *) "-quiet", 6)));
++ {
++ s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (s, ' '), DynamicStrings_Mark (DynamicStrings_InitString ((char *) "-quiet", 6)));
++ }
+ return s;
+ }
+ }
+--- a/src/gcc/gm2/mc-boot/GmcPreprocess.c
++++ b/src/gcc/gm2/mc-boot/GmcPreprocess.c
+@@ -135,14 +135,18 @@ DynamicStrings_String mcPreprocess_preprocessModule (DynamicStrings_String filen
+
+ command = mcOptions_getCppCommandLine ();
+ if (DynamicStrings_EqualArray (command, (char *) "", 0))
+- return filename;
++ {
++ return filename;
++ }
+ else
+ {
+ tempfile = DynamicStrings_InitStringCharStar ((void *) makeTempFile (DynamicStrings_InitString ((char *) "cpp", 3)));
+ commandLine = DynamicStrings_Dup (command);
+ commandLine = DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (commandLine), ' '), filename), DynamicStrings_Mark (DynamicStrings_InitString ((char *) " -o ", 4))), tempfile);
+ if (mcOptions_getVerbose ())
+- mcPrintf_fprintf1 (FIO_StdOut, (char *) "%s\\n", 4, (unsigned char *) &commandLine, (sizeof (commandLine)-1));
++ {
++ mcPrintf_fprintf1 (FIO_StdOut, (char *) "%s\\n", 4, (unsigned char *) &commandLine, (sizeof (commandLine)-1));
++ }
+ if ((libc_system (DynamicStrings_string (commandLine))) != 0)
+ {
+ mcPrintf_fprintf1 (FIO_StdErr, (char *) "C preprocessor failed when preprocessing %s\\n", 45, (unsigned char *) &filename, (sizeof (filename)-1));
+@@ -157,7 +161,9 @@ void _M2_mcPreprocess_init (__attribute__((unused)) int argc, __attribute__((unu
+ {
+ listOfFiles = alists_initList ();
+ if (! (M2RTS_InstallTerminationProcedure ((PROC ) {(PROC_t) removeFiles})))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+ void _M2_mcPreprocess_finish (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GmcPretty.c
++++ b/src/gcc/gm2/mc-boot/GmcPretty.c
+@@ -312,9 +312,13 @@ void mcPretty_setindent (mcPretty_pretty p, unsigned int n)
+ unsigned int mcPretty_getcurpos (mcPretty_pretty s)
+ {
+ if (s->needsSpace)
+- return s->curPos+1;
++ {
++ return s->curPos+1;
++ }
+ else
+- return s->curPos;
++ {
++ return s->curPos;
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/GmcPrintf.c
++++ b/src/gcc/gm2/mc-boot/GmcPrintf.c
+@@ -156,11 +156,17 @@ static void cast (unsigned char *a, unsigned int _a_high, unsigned char *b_, uns
+ /* make a local copy of each unbounded array. */
+ memcpy (b, b_, _b_high+1);
+
+- if ((_a_high) == (_b_high))
+- for (i=0; i<=_a_high; i++)
+- a[i] = b[i];
++ if (_a_high == _b_high)
++ {
++ for (i=0; i<=_a_high; i++)
++ {
++ a[i] = b[i];
++ }
++ }
+ else
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ }
+
+
+@@ -190,8 +196,10 @@ static unsigned int TranslateNameToCharStar (char *a, unsigned int _a_high, unsi
+ }
+ argno += 1;
+ if (argno > n)
+- /* all done */
+- return FALSE;
++ {
++ /* all done */
++ return FALSE;
++ }
+ }
+ i += 1;
+ }
+--- a/src/gcc/gm2/mc-boot/GmcQuiet.c
++++ b/src/gcc/gm2/mc-boot/GmcQuiet.c
+@@ -42,7 +42,9 @@ void mcQuiet_qprintf0 (char *a_, unsigned int _a_high)
+ memcpy (a, a_, _a_high+1);
+
+ if (! (mcOptions_getQuiet ()))
+- mcPrintf_printf0 ((char *) a, _a_high);
++ {
++ mcPrintf_printf0 ((char *) a, _a_high);
++ }
+ }
+
+ void mcQuiet_qprintf1 (char *a_, unsigned int _a_high, unsigned char *w_, unsigned int _w_high)
+@@ -55,7 +57,9 @@ void mcQuiet_qprintf1 (char *a_, unsigned int _a_high, unsigned char *w_, unsign
+ memcpy (w, w_, _w_high+1);
+
+ if (! (mcOptions_getQuiet ()))
+- mcPrintf_printf1 ((char *) a, _a_high, (unsigned char *) w, _w_high);
++ {
++ mcPrintf_printf1 ((char *) a, _a_high, (unsigned char *) w, _w_high);
++ }
+ }
+
+ void mcQuiet_qprintf2 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high)
+@@ -70,7 +74,9 @@ void mcQuiet_qprintf2 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig
+ memcpy (w2, w2_, _w2_high+1);
+
+ if (! (mcOptions_getQuiet ()))
+- mcPrintf_printf2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high);
++ {
++ mcPrintf_printf2 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high);
++ }
+ }
+
+ void mcQuiet_qprintf3 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high)
+@@ -87,7 +93,9 @@ void mcQuiet_qprintf3 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig
+ memcpy (w3, w3_, _w3_high+1);
+
+ if (! (mcOptions_getQuiet ()))
+- mcPrintf_printf3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high);
++ {
++ mcPrintf_printf3 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high);
++ }
+ }
+
+ void mcQuiet_qprintf4 (char *a_, unsigned int _a_high, unsigned char *w1_, unsigned int _w1_high, unsigned char *w2_, unsigned int _w2_high, unsigned char *w3_, unsigned int _w3_high, unsigned char *w4_, unsigned int _w4_high)
+@@ -106,7 +114,9 @@ void mcQuiet_qprintf4 (char *a_, unsigned int _a_high, unsigned char *w1_, unsig
+ memcpy (w4, w4_, _w4_high+1);
+
+ if (! (mcOptions_getQuiet ()))
+- mcPrintf_printf4 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high, (unsigned char *) w4, _w4_high);
++ {
++ mcPrintf_printf4 ((char *) a, _a_high, (unsigned char *) w1, _w1_high, (unsigned char *) w2, _w2_high, (unsigned char *) w3, _w3_high, (unsigned char *) w4, _w4_high);
++ }
+ }
+
+ void _M2_mcQuiet_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GmcSearch.c
++++ b/src/gcc/gm2/mc-boot/GmcSearch.c
+@@ -209,7 +209,9 @@ static void Init (void)
+ void mcSearch_initSearchPath (DynamicStrings_String path)
+ {
+ if (InitialPath != NULL)
+- InitialPath = DynamicStrings_KillString (InitialPath);
++ {
++ InitialPath = DynamicStrings_KillString (InitialPath);
++ }
+ InitialPath = path;
+ }
+
+@@ -227,7 +229,9 @@ void mcSearch_prependSearchPath (DynamicStrings_String path)
+ UserPath = DynamicStrings_Dup (path);
+ }
+ else
+- UserPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (UserPath, ':'), path);
++ {
++ UserPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (UserPath, ':'), path);
++ }
+ DSdbExit (UserPath);
+ }
+
+@@ -254,17 +258,27 @@ unsigned int mcSearch_findSourceFile (DynamicStrings_String FileName, DynamicStr
+ DynamicStrings_String newpath;
+
+ if (DynamicStrings_EqualArray (UserPath, (char *) "", 0))
+- if (DynamicStrings_EqualArray (InitialPath, (char *) "", 0))
+- completeSearchPath = DynamicStrings_InitString ((char *) ".", 1);
+- else
+- completeSearchPath = DynamicStrings_Dup (InitialPath);
++ {
++ if (DynamicStrings_EqualArray (InitialPath, (char *) "", 0))
++ {
++ completeSearchPath = DynamicStrings_InitString ((char *) ".", 1);
++ }
++ else
++ {
++ completeSearchPath = DynamicStrings_Dup (InitialPath);
++ }
++ }
+ else
+- completeSearchPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (UserPath), ':'), InitialPath);
++ {
++ completeSearchPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (UserPath), ':'), InitialPath);
++ }
+ start = 0;
+ end = DynamicStrings_Index (completeSearchPath, ':', (unsigned int ) (start));
+ do {
+ if (end == -1)
+- end = 0;
++ {
++ end = 0;
++ }
+ newpath = DynamicStrings_Slice (completeSearchPath, start, end);
+ if (DynamicStrings_EqualArray (newpath, (char *) ".", 1))
+ {
+@@ -272,7 +286,9 @@ unsigned int mcSearch_findSourceFile (DynamicStrings_String FileName, DynamicStr
+ newpath = DynamicStrings_Dup (FileName);
+ }
+ else
+- newpath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (newpath, Directory), FileName);
++ {
++ newpath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (newpath, Directory), FileName);
++ }
+ if (SFIO_Exists (newpath))
+ {
+ (*fullPath) = newpath;
+@@ -308,7 +324,9 @@ unsigned int mcSearch_findSourceDefFile (DynamicStrings_String stem, DynamicStri
+ {
+ f = mcFileName_calculateFileName (stem, Def);
+ if (mcSearch_findSourceFile (f, fullPath))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ f = DynamicStrings_KillString (f);
+ }
+ /* and try the GNU Modula-2 default extension */
+@@ -332,7 +350,9 @@ unsigned int mcSearch_findSourceModFile (DynamicStrings_String stem, DynamicStri
+ {
+ f = mcFileName_calculateFileName (stem, Mod);
+ if (mcSearch_findSourceFile (f, fullPath))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ f = DynamicStrings_KillString (f);
+ }
+ /* and try the GNU Modula-2 default extension */
+--- a/src/gcc/gm2/mc-boot/GmcStack.c
++++ b/src/gcc/gm2/mc-boot/GmcStack.c
+@@ -122,9 +122,13 @@ void mcStack_kill (mcStack_stack *s)
+ void * mcStack_push (mcStack_stack s, void * a)
+ {
+ if (s->count == 0)
+- Indexing_PutIndice (s->list, Indexing_LowIndice (s->list), a);
++ {
++ Indexing_PutIndice (s->list, Indexing_LowIndice (s->list), a);
++ }
+ else
+- Indexing_PutIndice (s->list, (Indexing_HighIndice (s->list))+1, a);
++ {
++ Indexing_PutIndice (s->list, (Indexing_HighIndice (s->list))+1, a);
++ }
+ s->count += 1;
+ return a;
+ }
+@@ -139,7 +143,9 @@ void * mcStack_pop (mcStack_stack s)
+ void * a;
+
+ if (s->count == 0)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+ {
+ s->count -= 1;
+@@ -183,9 +189,13 @@ unsigned int mcStack_depth (mcStack_stack s)
+ void * mcStack_access (mcStack_stack s, unsigned int i)
+ {
+ if ((i > s->count) || (i == 0))
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ else
+- return Indexing_GetIndice (s->list, i);
++ {
++ return Indexing_GetIndice (s->list, i);
++ }
+ }
+
+ void _M2_mcStack_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GmcStream.c
++++ b/src/gcc/gm2/mc-boot/GmcStream.c
+@@ -229,7 +229,9 @@ void mcStream_setDest (FIO_File f)
+ FIO_File mcStream_combine (void)
+ {
+ if (! seenDest)
+- M2RTS_HALT (-1);
++ {
++ M2RTS_HALT (-1);
++ }
+ Indexing_ForeachIndiceInIndexDo (frag, (Indexing_IndexProcedure) {(Indexing_IndexProcedure_t) copy});
+ removeFiles ();
+ return destFile;
+--- a/src/gcc/gm2/mc-boot/Gmcp1.c
++++ b/src/gcc/gm2/mc-boot/Gmcp1.c
+@@ -2391,9 +2391,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
+ message = DynamicStrings_KillString (message);
+ }
+ else if (n == 1)
+- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ {
++ /* avoid dangling else. */
++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ }
+ else
+ {
++ /* avoid dangling else. */
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message);
+ message = DynamicStrings_KillString (message);
+ }
+@@ -2789,17 +2793,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ DescribeError (stopset0, stopset1, stopset2);
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ {
++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ }
+ /*
+ yes the ORD(currenttoken) looks ugly, but it is *much* safer than
+ using currenttoken<sometok as a change to the ordering of the
+ token declarations below would cause this to break. Using ORD() we are
+ immune from such changes
+ */
+- while (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- mcLexBuf_getToken ();
++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ mcLexBuf_getToken ();
++ }
+ if (Debugging)
+- mcPrintf_printf0 ((char *) " ***\\n", 6);
++ {
++ mcPrintf_printf0 ((char *) " ***\\n", 6);
++ }
+ }
+
+
+@@ -2811,8 +2821,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ /* and again (see above re: ORD)
+ */
+- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- SyntaxError (stopset0, stopset1, stopset2);
++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ SyntaxError (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -2830,12 +2842,20 @@ static void WarnMissingToken (mcReserved_toktype t)
+ s0 = (SetOfStop0) 0;
+ s1 = (SetOfStop1) 0;
+ s2 = (SetOfStop2) 0;
+- if (((unsigned int) (t)) < 32)
+- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
+- else if (((unsigned int) (t)) < 64)
+- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ if ( ((unsigned int) (t)) < 32)
++ {
++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
++ }
++ else if ( ((unsigned int) (t)) < 64)
++ {
++ /* avoid dangling else. */
++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ }
+ else
+- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ {
++ /* avoid dangling else. */
++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ }
+ str = DescribeStop (s0, s1, s2);
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str));
+ mcError_errorStringAt (str, mcLexBuf_getTokenNo ());
+@@ -2852,7 +2872,9 @@ static void MissingToken (mcReserved_toktype t)
+ if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok))
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ {
++ mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ }
+ mcLexBuf_insertToken (t);
+ }
+ }
+@@ -2864,14 +2886,16 @@ static void MissingToken (mcReserved_toktype t)
+
+ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+ {
+ WarnMissingToken (t);
+ mcLexBuf_insertTokenAndRewind (t);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -2881,10 +2905,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S
+
+ static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+- return TRUE;
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ {
++ return TRUE;
++ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -2900,11 +2928,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ {
+ /* and again (see above re: ORD)
+ */
+- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
+- /* SyntaxCheck would fail since currentoken is not part of the stopset
++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
++ {
++ /* SyntaxCheck would fail since currentoken is not part of the stopset
+ we check to see whether any of currenttoken might be a commonly omitted token */
+- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
+- {} /* empty. */
++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
++ {} /* empty. */
++ }
+ }
+
+
+@@ -2919,10 +2949,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (Pass1)
+- PeepToken (stopset0, stopset1, stopset2);
++ {
++ PeepToken (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- MissingToken (t);
++ {
++ MissingToken (t);
++ }
+ SyntaxCheck (stopset0, stopset1, stopset2);
+ }
+
+@@ -3008,11 +3042,19 @@ static void registerImport (nameKey_Name ident, unsigned int scoped)
+ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_definitiontok)
+- DefinitionModule (stopset0, stopset1, stopset2);
++ {
++ DefinitionModule (stopset0, stopset1, stopset2);
++ }
+ else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0)))
+- ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ }
+ }
+
+
+@@ -3040,10 +3082,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ curmodule = decl_lookupModule (curident);
+ decl_enterScope (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3081,10 +3127,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ decl_enterScope (decl_lookupDef (curident));
+ decl_enterScope (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3107,11 +3157,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+- ImplementationModule (stopset0, stopset1, stopset2);
++ {
++ ImplementationModule (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+- ProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ }
+ }
+
+
+@@ -3126,11 +3184,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops
+ static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- Integer (stopset0, stopset1, stopset2);
++ {
++ Integer (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- Real (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Real (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -3185,23 +3251,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -3243,13 +3335,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ ConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ }
+ }
+
+
+@@ -3264,13 +3363,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -3306,21 +3416,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -3337,26 +3470,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- ConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstFactor (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ }
+ }
+
+
+@@ -3444,7 +3593,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -3470,18 +3621,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ConstActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -3532,9 +3697,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -3542,7 +3710,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -3592,7 +3763,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- AlignmentExpression (stopset0, stopset1, stopset2);
++ {
++ AlignmentExpression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3623,7 +3796,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- ByteAlignment (stopset0, stopset1, stopset2);
++ {
++ ByteAlignment (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3663,19 +3838,39 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SimpleType (stopset0, stopset1, stopset2);
++ {
++ SimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -3695,14 +3890,25 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ /* avoid dangling else. */
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- Enumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Enumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -3796,7 +4002,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+@@ -3925,7 +4133,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FieldList (stopset0, stopset1, stopset2);
++ {
++ FieldList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3950,6 +4160,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+@@ -3968,7 +4179,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ }
+ }
+
+
+@@ -3983,7 +4197,9 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4096,23 +4312,49 @@ static void SilentConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
+ static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -4156,13 +4398,20 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ SilentConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88);
++ }
+ }
+
+
+@@ -4177,13 +4426,24 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -4219,21 +4479,44 @@ static void SilentConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -4252,26 +4535,42 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- SilentConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ SilentConstFactor (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- SilentConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ }
+ }
+
+
+@@ -4323,17 +4622,23 @@ static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ SilentConstString (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+- else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ else
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -4407,7 +4712,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4425,7 +4732,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- SilentConstructor (stopset0, stopset1, stopset2);
++ {
++ SilentConstructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+ /* avoid dangling else. */
+@@ -4435,16 +4744,27 @@ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- SilentConstructor (stopset0, stopset1, stopset2);
++ {
++ SilentConstructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- SilentActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier {", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier {", 30);
++ }
+ }
+
+
+@@ -4479,7 +4799,9 @@ static void SilentActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4515,11 +4837,19 @@ static void SilentExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_settok)
+- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
+- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ }
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ SimpleType (stopset0, stopset1, stopset2);
+ }
+@@ -4553,7 +4883,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ {
+ Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalTypeList (stopset0, stopset1, stopset2);
++ {
++ FormalTypeList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4576,12 +4908,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
++ /* avoid dangling else. */
+ ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ }
+ }
+
+
+@@ -4620,9 +4956,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Qualident (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Qualident (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier [", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier [", 30);
++ }
+ }
+
+
+@@ -4658,16 +5000,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ FormalType (stopset0, stopset1, stopset2);
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FormalType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ FormalType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ }
+ }
+
+
+@@ -4747,7 +5098,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -4770,14 +5123,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
+- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ }
+ }
+
+
+@@ -4877,13 +5237,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Term (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Term (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Term (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ }
+ }
+
+
+@@ -4919,29 +5286,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ string (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Factor (stopset0, stopset1, stopset2);
++ {
++ Factor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ }
+ }
+
+
+@@ -4966,23 +5354,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0)))
+ {
+ /* avoid dangling else. */
+ SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -4997,7 +5398,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5014,7 +5417,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5045,7 +5450,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Expression (stopset0, stopset1, stopset2);
++ {
++ Expression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5070,31 +5477,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ {
++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_iftok)
+- IfStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IfStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+- CaseStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ CaseStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_whiletok)
+- WhileStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WhileStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_repeattok)
+- RepeatStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RepeatStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_looptok)
+- LoopStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ LoopStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_fortok)
+- ForStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ForStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_withtok)
+- WithStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_asmtok)
+- AsmStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ AsmStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_exittok)
+- ExitStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ExitStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_returntok)
+- ReturnStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ReturnStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_retrytok)
+- RetryStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RetryStatement (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5135,7 +5580,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expression (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ /* epsilon */
+ }
+
+@@ -5229,15 +5677,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_endtok)
+- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_elsetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+ StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ }
+ }
+
+
+@@ -5461,7 +5915,9 @@ static void ProcedureIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Ident (stopset0, stopset1, stopset2);
+ curproc = decl_lookupSym (curident);
+ if (curproc == NULL)
+- curproc = decl_makeProcedure (curident);
++ {
++ curproc = decl_makeProcedure (curident);
++ }
+ mcComment_setProcedureComment (mcLexBuf_lastcomment, curident);
+ decl_putCommentModProcedure (curproc);
+ }
+@@ -5494,9 +5950,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5521,7 +5983,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_enterScope (curproc);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalParameters (stopset0, stopset1, stopset2);
++ {
++ FormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5540,11 +6004,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_builtintok)
+- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5565,7 +6037,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefFormalParameters (stopset0, stopset1, stopset2);
++ {
++ DefFormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5583,7 +6057,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_begintok)
+ {
+@@ -5606,7 +6082,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
+ FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -5761,6 +6239,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -5771,6 +6250,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -5781,16 +6261,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ }
+ }
+
+
+@@ -5806,7 +6291,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+@@ -5823,7 +6310,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- DefExtendedFP (stopset0, stopset1, stopset2);
++ {
++ DefExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -5835,7 +6324,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -5851,7 +6343,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+@@ -5868,7 +6362,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- ExtendedFP (stopset0, stopset1, stopset2);
++ {
++ ExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -5880,7 +6376,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -5895,11 +6394,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- NonVarFPSection (stopset0, stopset1, stopset2);
++ {
++ NonVarFPSection (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+- VarFPSection (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ VarFPSection (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ }
+ }
+
+
+@@ -5914,11 +6421,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- DefOptArg (stopset0, stopset1, stopset2);
++ {
++ DefOptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -5933,11 +6448,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- OptArg (stopset0, stopset1, stopset2);
++ {
++ OptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6053,13 +6576,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0, stopset1, stopset2);
+ }
+@@ -6101,13 +6630,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+
+@@ -6186,11 +6722,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_fromtok)
+- FromImport (stopset0, stopset1, stopset2);
++ {
++ FromImport (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_importtok)
+- WithoutFromImport (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithoutFromImport (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ }
+ }
+
+
+@@ -6236,15 +6780,23 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
+ curmodule = decl_lookupDef (curident);
+ if (c)
+- decl_putDefForC (curmodule);
++ {
++ decl_putDefForC (curmodule);
++ }
+ decl_enterScope (curmodule);
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -6283,13 +6835,17 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -6343,13 +6899,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6360,11 +6920,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ }
+ }
+
+
+@@ -6380,7 +6944,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_volatiletok)
+- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+@@ -6399,7 +6965,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_colontok)
+- AsmOperandSpec (stopset0, stopset1, stopset2);
++ {
++ AsmOperandSpec (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6442,7 +7010,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok))
+- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -6479,7 +7049,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- NamedOperand (stopset0, stopset1, stopset2);
++ {
++ NamedOperand (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6512,7 +7084,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+--- a/src/gcc/gm2/mc-boot/Gmcp2.c
++++ b/src/gcc/gm2/mc-boot/Gmcp2.c
+@@ -2506,9 +2506,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
+ message = DynamicStrings_KillString (message);
+ }
+ else if (n == 1)
+- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ {
++ /* avoid dangling else. */
++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ }
+ else
+ {
++ /* avoid dangling else. */
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message);
+ message = DynamicStrings_KillString (message);
+ }
+@@ -2904,17 +2908,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ DescribeError (stopset0, stopset1, stopset2);
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ {
++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ }
+ /*
+ yes the ORD(currenttoken) looks ugly, but it is *much* safer than
+ using currenttoken<sometok as a change to the ordering of the
+ token declarations below would cause this to break. Using ORD() we are
+ immune from such changes
+ */
+- while (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- mcLexBuf_getToken ();
++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ mcLexBuf_getToken ();
++ }
+ if (Debugging)
+- mcPrintf_printf0 ((char *) " ***\\n", 6);
++ {
++ mcPrintf_printf0 ((char *) " ***\\n", 6);
++ }
+ }
+
+
+@@ -2926,8 +2936,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ /* and again (see above re: ORD)
+ */
+- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- SyntaxError (stopset0, stopset1, stopset2);
++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ SyntaxError (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -2945,12 +2957,20 @@ static void WarnMissingToken (mcReserved_toktype t)
+ s0 = (SetOfStop0) 0;
+ s1 = (SetOfStop1) 0;
+ s2 = (SetOfStop2) 0;
+- if (((unsigned int) (t)) < 32)
+- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
+- else if (((unsigned int) (t)) < 64)
+- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ if ( ((unsigned int) (t)) < 32)
++ {
++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
++ }
++ else if ( ((unsigned int) (t)) < 64)
++ {
++ /* avoid dangling else. */
++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ }
+ else
+- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ {
++ /* avoid dangling else. */
++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ }
+ str = DescribeStop (s0, s1, s2);
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str));
+ mcError_errorStringAt (str, mcLexBuf_getTokenNo ());
+@@ -2967,7 +2987,9 @@ static void MissingToken (mcReserved_toktype t)
+ if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok))
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ {
++ mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ }
+ mcLexBuf_insertToken (t);
+ }
+ }
+@@ -2979,14 +3001,16 @@ static void MissingToken (mcReserved_toktype t)
+
+ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+ {
+ WarnMissingToken (t);
+ mcLexBuf_insertTokenAndRewind (t);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -2996,10 +3020,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S
+
+ static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+- return TRUE;
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ {
++ return TRUE;
++ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3015,11 +3043,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ {
+ /* and again (see above re: ORD)
+ */
+- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
+- /* SyntaxCheck would fail since currentoken is not part of the stopset
++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
++ {
++ /* SyntaxCheck would fail since currentoken is not part of the stopset
+ we check to see whether any of currenttoken might be a commonly omitted token */
+- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
+- {} /* empty. */
++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
++ {} /* empty. */
++ }
+ }
+
+
+@@ -3034,10 +3064,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (Pass1)
+- PeepToken (stopset0, stopset1, stopset2);
++ {
++ PeepToken (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- MissingToken (t);
++ {
++ MissingToken (t);
++ }
+ SyntaxCheck (stopset0, stopset1, stopset2);
+ }
+
+@@ -3120,11 +3154,19 @@ static void registerImport (nameKey_Name ident, unsigned int scoped)
+ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_definitiontok)
+- DefinitionModule (stopset0, stopset1, stopset2);
++ {
++ DefinitionModule (stopset0, stopset1, stopset2);
++ }
+ else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0)))
+- ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ }
+ }
+
+
+@@ -3154,10 +3196,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ curmodule = decl_lookupModule (curident);
+ decl_enterScope (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3198,10 +3244,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ decl_enterScope (decl_lookupDef (curident));
+ decl_enterScope (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3225,11 +3275,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+- ImplementationModule (stopset0, stopset1, stopset2);
++ {
++ ImplementationModule (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+- ProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ }
+ }
+
+
+@@ -3244,11 +3302,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops
+ static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- Integer (stopset0, stopset1, stopset2);
++ {
++ Integer (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- Real (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Real (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -3319,23 +3385,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -3377,13 +3469,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ ConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ }
+ }
+
+
+@@ -3398,13 +3497,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -3440,21 +3550,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -3471,26 +3604,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- ConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstFactor (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ }
+ }
+
+
+@@ -3578,7 +3727,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -3604,18 +3755,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ConstActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -3666,9 +3831,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -3676,7 +3844,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -3726,7 +3897,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- AlignmentExpression (stopset0, stopset1, stopset2);
++ {
++ AlignmentExpression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3757,7 +3930,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- ByteAlignment (stopset0, stopset1, stopset2);
++ {
++ ByteAlignment (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3793,19 +3968,39 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- DefSimpleType (stopset0, stopset1, stopset2);
++ {
++ DefSimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -3825,14 +4020,25 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ /* avoid dangling else. */
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- Enumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Enumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -3960,7 +4166,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+@@ -4089,7 +4297,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FieldList (stopset0, stopset1, stopset2);
++ {
++ FieldList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4114,6 +4324,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+@@ -4132,7 +4343,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ }
+ }
+
+
+@@ -4147,7 +4361,9 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4260,23 +4476,49 @@ static void SilentConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
+ static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -4320,13 +4562,20 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ SilentConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { identifier string - +", 88);
++ }
+ }
+
+
+@@ -4341,13 +4590,24 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -4383,21 +4643,44 @@ static void SilentConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -4416,26 +4699,42 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- SilentConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ SilentConstFactor (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- SilentConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ }
+ }
+
+
+@@ -4487,9 +4786,12 @@ static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -4497,7 +4799,10 @@ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stop
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -4571,7 +4876,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4589,7 +4896,9 @@ static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- SilentConstructor (stopset0, stopset1, stopset2);
++ {
++ SilentConstructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+ /* avoid dangling else. */
+@@ -4599,16 +4908,27 @@ static void SilentConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- SilentConstructor (stopset0, stopset1, stopset2);
++ {
++ SilentConstructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- SilentActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SilentActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier {", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier {", 30);
++ }
+ }
+
+
+@@ -4643,7 +4963,9 @@ static void SilentActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4679,11 +5001,19 @@ static void SilentExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_settok)
+- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
+- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ }
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ SimpleType (stopset0, stopset1, stopset2);
+ }
+@@ -4717,7 +5047,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ {
+ Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalTypeList (stopset0, stopset1, stopset2);
++ {
++ FormalTypeList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4740,12 +5072,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
++ /* avoid dangling else. */
+ ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ }
+ }
+
+
+@@ -4784,9 +5120,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Qualident (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Qualident (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier [", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier [", 30);
++ }
+ }
+
+
+@@ -4822,16 +5164,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ FormalType (stopset0, stopset1, stopset2);
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FormalType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ FormalType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ }
+ }
+
+
+@@ -4964,7 +5315,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -4987,14 +5340,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
+- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ }
+ }
+
+
+@@ -5094,13 +5454,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Term (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Term (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Term (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ }
+ }
+
+
+@@ -5136,29 +5503,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ string (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Factor (stopset0, stopset1, stopset2);
++ {
++ Factor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ }
+ }
+
+
+@@ -5183,23 +5571,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0)))
+ {
+ /* avoid dangling else. */
+ SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -5214,7 +5615,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5231,7 +5634,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5262,7 +5667,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Expression (stopset0, stopset1, stopset2);
++ {
++ Expression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5287,31 +5694,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ {
++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_iftok)
+- IfStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IfStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+- CaseStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ CaseStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_whiletok)
+- WhileStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WhileStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_repeattok)
+- RepeatStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RepeatStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_looptok)
+- LoopStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ LoopStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_fortok)
+- ForStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ForStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_withtok)
+- WithStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_asmtok)
+- AsmStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ AsmStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_exittok)
+- ExitStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ExitStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_returntok)
+- ReturnStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ReturnStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_retrytok)
+- RetryStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RetryStatement (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5352,7 +5797,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expression (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ /* epsilon */
+ }
+
+@@ -5446,15 +5894,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_endtok)
+- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_elsetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+ StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ }
+ }
+
+
+@@ -5678,9 +6132,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5705,7 +6165,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_enterScope (curproc);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalParameters (stopset0, stopset1, stopset2);
++ {
++ FormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5724,11 +6186,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_builtintok)
+- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5749,7 +6219,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefFormalParameters (stopset0, stopset1, stopset2);
++ {
++ DefFormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5767,7 +6239,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_begintok)
+ {
+@@ -5790,7 +6264,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
+ FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -5945,6 +6421,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -5955,6 +6432,7 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -5965,16 +6443,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ }
+ }
+
+
+@@ -5990,7 +6473,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+@@ -6007,7 +6492,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- DefExtendedFP (stopset0, stopset1, stopset2);
++ {
++ DefExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6019,7 +6506,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6035,7 +6525,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+@@ -6052,7 +6544,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- ExtendedFP (stopset0, stopset1, stopset2);
++ {
++ ExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6064,7 +6558,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6079,11 +6576,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- NonVarFPSection (stopset0, stopset1, stopset2);
++ {
++ NonVarFPSection (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+- VarFPSection (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ VarFPSection (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ }
+ }
+
+
+@@ -6098,11 +6603,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- DefOptArg (stopset0, stopset1, stopset2);
++ {
++ DefOptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6117,11 +6630,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- OptArg (stopset0, stopset1, stopset2);
++ {
++ OptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6237,13 +6758,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0, stopset1, stopset2);
+ }
+@@ -6285,13 +6812,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+
+@@ -6361,11 +6895,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_fromtok)
+- FromImport (stopset0, stopset1, stopset2);
++ {
++ FromImport (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_importtok)
+- WithoutFromImport (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithoutFromImport (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ }
+ }
+
+
+@@ -6403,12 +6945,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ curmodule = decl_lookupDef (curident);
+ decl_enterScope (curmodule);
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -6448,11 +6996,15 @@ static void DefQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (! (decl_isDef (typeExp)))
+- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ {
++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ }
+ Ident (stopset0, stopset1, stopset2);
+ typeExp = decl_lookupInScope (typeExp, curident);
+ if (typeExp == NULL)
+- ErrorArray ((char *) "identifier not found in definition module", 41);
++ {
++ ErrorArray ((char *) "identifier not found in definition module", 41);
++ }
+ }
+ }
+
+@@ -6474,9 +7026,13 @@ static void DefOptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- decl_putType (typeDes, typeExp);
++ {
++ decl_putType (typeDes, typeExp);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -6531,7 +7087,9 @@ static void DefEnumIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ /* while */
+ if (typeDes != NULL)
+- decl_putType (typeDes, n);
++ {
++ decl_putType (typeDes, n);
++ }
+ }
+
+
+@@ -6563,13 +7121,24 @@ static void DefEnumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- DefTypeEquiv (stopset0, stopset1, stopset2);
++ {
++ DefTypeEquiv (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefEnumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ DefEnumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -6585,19 +7154,39 @@ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void DefType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- DefSimpleType (stopset0, stopset1, stopset2);
++ {
++ DefSimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -6618,16 +7207,22 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
+ typeDes = decl_lookupSym (curident);
+ if (mcLexBuf_currenttoken == mcReserved_semicolontok)
+- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefType (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -6674,13 +7269,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6691,11 +7290,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ }
+ }
+
+
+@@ -6711,7 +7314,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_volatiletok)
+- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+@@ -6730,7 +7335,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_colontok)
+- AsmOperandSpec (stopset0, stopset1, stopset2);
++ {
++ AsmOperandSpec (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6773,7 +7380,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok))
+- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -6810,7 +7419,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- NamedOperand (stopset0, stopset1, stopset2);
++ {
++ NamedOperand (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6843,7 +7454,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+--- a/src/gcc/gm2/mc-boot/Gmcp3.c
++++ b/src/gcc/gm2/mc-boot/Gmcp3.c
+@@ -2264,12 +2264,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current)
+ mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current)));
+ s = decl_lookupExported (m, name);
+ if (s == NULL)
+- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ }
+ else
+ {
+ o = decl_import (current, s);
+ if (s != o)
+- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ }
+ }
+ }
+
+@@ -2761,9 +2765,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
+ message = DynamicStrings_KillString (message);
+ }
+ else if (n == 1)
+- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ {
++ /* avoid dangling else. */
++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ }
+ else
+ {
++ /* avoid dangling else. */
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message);
+ message = DynamicStrings_KillString (message);
+ }
+@@ -3159,17 +3167,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ DescribeError (stopset0, stopset1, stopset2);
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ {
++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ }
+ /*
+ yes the ORD(currenttoken) looks ugly, but it is *much* safer than
+ using currenttoken<sometok as a change to the ordering of the
+ token declarations below would cause this to break. Using ORD() we are
+ immune from such changes
+ */
+- while (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- mcLexBuf_getToken ();
++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ mcLexBuf_getToken ();
++ }
+ if (Debugging)
+- mcPrintf_printf0 ((char *) " ***\\n", 6);
++ {
++ mcPrintf_printf0 ((char *) " ***\\n", 6);
++ }
+ }
+
+
+@@ -3181,8 +3195,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ /* and again (see above re: ORD)
+ */
+- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- SyntaxError (stopset0, stopset1, stopset2);
++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ SyntaxError (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3200,12 +3216,20 @@ static void WarnMissingToken (mcReserved_toktype t)
+ s0 = (SetOfStop0) 0;
+ s1 = (SetOfStop1) 0;
+ s2 = (SetOfStop2) 0;
+- if (((unsigned int) (t)) < 32)
+- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
+- else if (((unsigned int) (t)) < 64)
+- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ if ( ((unsigned int) (t)) < 32)
++ {
++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
++ }
++ else if ( ((unsigned int) (t)) < 64)
++ {
++ /* avoid dangling else. */
++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ }
+ else
+- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ {
++ /* avoid dangling else. */
++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ }
+ str = DescribeStop (s0, s1, s2);
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str));
+ mcError_errorStringAt (str, mcLexBuf_getTokenNo ());
+@@ -3222,7 +3246,9 @@ static void MissingToken (mcReserved_toktype t)
+ if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok))
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ {
++ mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ }
+ mcLexBuf_insertToken (t);
+ }
+ }
+@@ -3234,14 +3260,16 @@ static void MissingToken (mcReserved_toktype t)
+
+ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+ {
+ WarnMissingToken (t);
+ mcLexBuf_insertTokenAndRewind (t);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3251,10 +3279,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S
+
+ static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+- return TRUE;
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ {
++ return TRUE;
++ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3270,11 +3302,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ {
+ /* and again (see above re: ORD)
+ */
+- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
+- /* SyntaxCheck would fail since currentoken is not part of the stopset
++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
++ {
++ /* SyntaxCheck would fail since currentoken is not part of the stopset
+ we check to see whether any of currenttoken might be a commonly omitted token */
+- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
+- {} /* empty. */
++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
++ {} /* empty. */
++ }
+ }
+
+
+@@ -3289,10 +3323,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (Pass1)
+- PeepToken (stopset0, stopset1, stopset2);
++ {
++ PeepToken (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- MissingToken (t);
++ {
++ MissingToken (t);
++ }
+ SyntaxCheck (stopset0, stopset1, stopset2);
+ }
+
+@@ -3350,11 +3388,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_definitiontok)
+- DefinitionModule (stopset0, stopset1, stopset2);
++ {
++ DefinitionModule (stopset0, stopset1, stopset2);
++ }
+ else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0)))
+- ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ }
+ }
+
+
+@@ -3387,10 +3433,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ decl_enterScope (curmodule);
+ decl_resetEnumPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3434,10 +3484,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ decl_enterScope (curmodule);
+ decl_resetEnumPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3461,11 +3515,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+- ImplementationModule (stopset0, stopset1, stopset2);
++ {
++ ImplementationModule (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+- ProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ }
+ }
+
+
+@@ -3480,11 +3542,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops
+ static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- Integer (stopset0, stopset1, stopset2);
++ {
++ Integer (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- Real (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Real (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -3605,23 +3675,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -3663,13 +3759,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ ConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ }
+ }
+
+
+@@ -3684,13 +3787,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -3726,21 +3840,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -3757,26 +3894,42 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- ConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstExpressionNop (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstFactor (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ }
+ }
+
+
+@@ -3864,7 +4017,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -3890,18 +4045,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ConstActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -3917,7 +4086,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -3975,9 +4146,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -3985,7 +4159,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -4016,7 +4193,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- AlignmentExpression (stopset0, stopset1, stopset2);
++ {
++ AlignmentExpression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4047,7 +4226,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- ByteAlignment (stopset0, stopset1, stopset2);
++ {
++ ByteAlignment (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4218,7 +4399,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ n = push (decl_makeRecord ());
+ n = push ((decl_node) NULL); /* no varient */
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ mcDebug_assert ((pop ()) == NULL);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+@@ -4348,7 +4531,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FieldList (stopset0, stopset1, stopset2);
++ {
++ FieldList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4455,6 +4640,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ /* addRecordToList */
+ d = depth ();
+@@ -4493,7 +4679,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ mcDebug_assert (d == (depth ()));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ }
+ }
+
+
+@@ -4510,9 +4699,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else
+- curident = nameKey_NulName;
++ {
++ curident = nameKey_NulName;
++ }
+ }
+
+
+@@ -4573,7 +4766,9 @@ static void CaseTag (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ mcDebug_assert (decl_isVarient (push (pop ())));
+ }
+ else
+- q = NULL;
++ {
++ q = NULL;
++ }
+ decl_buildVarientSelector (r, w, tagident, q);
+ }
+
+@@ -4723,11 +4918,19 @@ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ decl_node n;
+
+ if (mcLexBuf_currenttoken == mcReserved_settok)
+- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
+- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ }
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ SimpleType (stopset0, stopset1, stopset2);
+ n = push (decl_makeSet (pop ()));
+@@ -4772,7 +4975,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ curproc = push (decl_makeProcType ());
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalTypeList (stopset0, stopset1, stopset2);
++ {
++ FormalTypeList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4795,12 +5000,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
++ /* avoid dangling else. */
+ ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ }
+ }
+
+
+@@ -4848,11 +5057,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
++ /* avoid dangling else. */
+ PushQualident (stopset0, stopset1, stopset2);
+ decl_putReturnType (curproc, pop ());
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier [", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier [", 30);
++ }
+ }
+
+
+@@ -4909,17 +5122,22 @@ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ FormalType (stopset0, stopset1, stopset2);
+ n = push (decl_makeVarParameter ((decl_node) NULL, pop (), curproc));
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+ {
++ /* avoid dangling else. */
+ FormalType (stopset0, stopset1, stopset2);
+ n = push (decl_makeNonVarParameter ((decl_node) NULL, pop (), curproc));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ }
+ }
+
+
+@@ -5030,7 +5248,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5053,14 +5273,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
+- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ }
+ }
+
+
+@@ -5160,13 +5387,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Term (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Term (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Term (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ }
+ }
+
+
+@@ -5202,29 +5436,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ string (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Factor (stopset0, stopset1, stopset2);
++ {
++ Factor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ }
+ }
+
+
+@@ -5249,23 +5504,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0)))
+ {
+ /* avoid dangling else. */
+ SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -5280,7 +5548,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5297,7 +5567,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5328,7 +5600,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Expression (stopset0, stopset1, stopset2);
++ {
++ Expression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5353,31 +5627,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ {
++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_iftok)
+- IfStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IfStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+- CaseStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ CaseStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_whiletok)
+- WhileStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WhileStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_repeattok)
+- RepeatStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RepeatStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_looptok)
+- LoopStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ LoopStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_fortok)
+- ForStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ForStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_withtok)
+- WithStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_asmtok)
+- AsmStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ AsmStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_exittok)
+- ExitStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ExitStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_returntok)
+- ReturnStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ReturnStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_retrytok)
+- RetryStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RetryStatement (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5418,7 +5730,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expression (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ /* epsilon */
+ }
+
+@@ -5512,15 +5827,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_endtok)
+- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_elsetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+ StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ }
+ }
+
+
+@@ -5767,9 +6088,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5791,7 +6118,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalParameters (stopset0, stopset1, stopset2);
++ {
++ FormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5810,11 +6139,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_builtintok)
+- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5835,7 +6172,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefFormalParameters (stopset0, stopset1, stopset2);
++ {
++ DefFormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5851,7 +6190,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_begintok)
+ {
+@@ -5873,7 +6214,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
+ FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -6028,13 +6371,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6045,16 +6392,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ }
+ }
+
+
+@@ -6075,7 +6427,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -6093,7 +6447,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- DefExtendedFP (stopset0, stopset1, stopset2);
++ {
++ DefExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6105,7 +6461,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6126,7 +6485,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -6144,7 +6505,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- ExtendedFP (stopset0, stopset1, stopset2);
++ {
++ ExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6156,7 +6519,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6171,11 +6537,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- NonVarFPSection (stopset0, stopset1, stopset2);
++ {
++ NonVarFPSection (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+- VarFPSection (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ VarFPSection (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ }
+ }
+
+
+@@ -6192,14 +6566,20 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- DefOptArg (stopset0, stopset1, stopset2);
++ {
++ DefOptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
+ decl_addParameter (curproc, decl_makeVarargs ());
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6214,11 +6594,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- OptArg (stopset0, stopset1, stopset2);
++ {
++ OptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6419,13 +6807,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0, stopset1, stopset2);
+ }
+@@ -6467,13 +6861,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+
+@@ -6572,11 +6973,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_fromtok)
+- FromImport (stopset0, stopset1, stopset2);
++ {
++ FromImport (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_importtok)
+- WithoutFromImport (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithoutFromImport (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ }
+ }
+
+
+@@ -6617,12 +7026,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ decl_enterScope (curmodule);
+ decl_resetEnumPos (curmodule);
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -6664,16 +7079,22 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ typeExp = push (decl_lookupSym (curident));
+ if (typeExp == NULL)
+- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ {
++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ }
+ if (mcLexBuf_currenttoken == mcReserved_periodtok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (! (decl_isDef (typeExp)))
+- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ {
++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ }
+ Ident (stopset0, stopset1, stopset2);
+ typeExp = replace (decl_lookupInScope (typeExp, curident));
+ if (typeExp == NULL)
+- ErrorArray ((char *) "identifier not found in definition module", 41);
++ {
++ ErrorArray ((char *) "identifier not found in definition module", 41);
++ }
+ }
+ }
+
+@@ -6797,13 +7218,24 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+
+ d = depth ();
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeEquiv (stopset0, stopset1, stopset2);
++ {
++ TypeEquiv (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- Enumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Enumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ mcDebug_assert (d == ((depth ())-1));
+ }
+
+@@ -6820,19 +7252,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SimpleType (stopset0, stopset1, stopset2);
++ {
++ SimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -6855,9 +7307,12 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
+ typeDes = decl_lookupSym (curident);
+ if (mcLexBuf_currenttoken == mcReserved_semicolontok)
+- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_putType (typeDes, pop ());
+@@ -6865,7 +7320,10 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -6896,13 +7354,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6913,11 +7375,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ }
+ }
+
+
+@@ -6933,7 +7399,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_volatiletok)
+- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+@@ -6952,7 +7420,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_colontok)
+- AsmOperandSpec (stopset0, stopset1, stopset2);
++ {
++ AsmOperandSpec (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6995,7 +7465,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok))
+- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -7032,7 +7504,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- NamedOperand (stopset0, stopset1, stopset2);
++ {
++ NamedOperand (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -7065,7 +7539,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+--- a/src/gcc/gm2/mc-boot/Gmcp4.c
++++ b/src/gcc/gm2/mc-boot/Gmcp4.c
+@@ -2225,12 +2225,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current)
+ mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current)));
+ s = decl_lookupExported (m, name);
+ if (s == NULL)
+- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ }
+ else
+ {
+ o = decl_import (current, s);
+ if (s != o)
+- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ }
+ }
+ }
+
+@@ -2722,9 +2726,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
+ message = DynamicStrings_KillString (message);
+ }
+ else if (n == 1)
+- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ {
++ /* avoid dangling else. */
++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ }
+ else
+ {
++ /* avoid dangling else. */
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message);
+ message = DynamicStrings_KillString (message);
+ }
+@@ -3120,17 +3128,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ DescribeError (stopset0, stopset1, stopset2);
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ {
++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ }
+ /*
+ yes the ORD(currenttoken) looks ugly, but it is *much* safer than
+ using currenttoken<sometok as a change to the ordering of the
+ token declarations below would cause this to break. Using ORD() we are
+ immune from such changes
+ */
+- while (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- mcLexBuf_getToken ();
++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ mcLexBuf_getToken ();
++ }
+ if (Debugging)
+- mcPrintf_printf0 ((char *) " ***\\n", 6);
++ {
++ mcPrintf_printf0 ((char *) " ***\\n", 6);
++ }
+ }
+
+
+@@ -3142,8 +3156,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ /* and again (see above re: ORD)
+ */
+- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- SyntaxError (stopset0, stopset1, stopset2);
++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ SyntaxError (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3161,12 +3177,20 @@ static void WarnMissingToken (mcReserved_toktype t)
+ s0 = (SetOfStop0) 0;
+ s1 = (SetOfStop1) 0;
+ s2 = (SetOfStop2) 0;
+- if (((unsigned int) (t)) < 32)
+- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
+- else if (((unsigned int) (t)) < 64)
+- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ if ( ((unsigned int) (t)) < 32)
++ {
++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
++ }
++ else if ( ((unsigned int) (t)) < 64)
++ {
++ /* avoid dangling else. */
++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ }
+ else
+- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ {
++ /* avoid dangling else. */
++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ }
+ str = DescribeStop (s0, s1, s2);
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str));
+ mcError_errorStringAt (str, mcLexBuf_getTokenNo ());
+@@ -3183,7 +3207,9 @@ static void MissingToken (mcReserved_toktype t)
+ if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok))
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ {
++ mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ }
+ mcLexBuf_insertToken (t);
+ }
+ }
+@@ -3195,14 +3221,16 @@ static void MissingToken (mcReserved_toktype t)
+
+ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+ {
+ WarnMissingToken (t);
+ mcLexBuf_insertTokenAndRewind (t);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3212,10 +3240,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S
+
+ static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+- return TRUE;
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ {
++ return TRUE;
++ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3231,11 +3263,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ {
+ /* and again (see above re: ORD)
+ */
+- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
+- /* SyntaxCheck would fail since currentoken is not part of the stopset
++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
++ {
++ /* SyntaxCheck would fail since currentoken is not part of the stopset
+ we check to see whether any of currenttoken might be a commonly omitted token */
+- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
+- {} /* empty. */
++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
++ {} /* empty. */
++ }
+ }
+
+
+@@ -3250,10 +3284,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (Pass1)
+- PeepToken (stopset0, stopset1, stopset2);
++ {
++ PeepToken (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- MissingToken (t);
++ {
++ MissingToken (t);
++ }
+ SyntaxCheck (stopset0, stopset1, stopset2);
+ }
+
+@@ -3317,11 +3355,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_definitiontok)
+- DefinitionModule (stopset0, stopset1, stopset2);
++ {
++ DefinitionModule (stopset0, stopset1, stopset2);
++ }
+ else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0)))
+- ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ }
+ }
+
+
+@@ -3352,10 +3398,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ decl_enterScope (curmodule);
+ decl_resetConstExpPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3396,10 +3446,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ decl_enterScope (curmodule);
+ decl_resetConstExpPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3422,11 +3476,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+- ImplementationModule (stopset0, stopset1, stopset2);
++ {
++ ImplementationModule (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+- ProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ }
+ }
+
+
+@@ -3441,11 +3503,19 @@ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stops
+ static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- Integer (stopset0, stopset1, stopset2);
++ {
++ Integer (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- Real (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Real (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -3565,23 +3635,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -3648,14 +3744,21 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ConstTerm (stopset0, stopset1, stopset2);
+ n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_minustok, pop ()));
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { string identifier - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ { string identifier - +", 88);
++ }
+ }
+
+
+@@ -3670,13 +3773,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -3729,21 +3843,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -3782,23 +3919,41 @@ static void NotConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- ConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+- NotConstFactor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ NotConstFactor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( { identifier string integer number real number", 84);
++ }
+ }
+
+
+@@ -3924,7 +4079,9 @@ static void ConstConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ n = push (decl_makeSetValue ());
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -3992,6 +4149,7 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ ConstActualParameters (stopset0, stopset1, stopset2);
+ p = pop ();
+ q = pop ();
+@@ -3999,7 +4157,10 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ mcDebug_assert ((d+1) == (depth ()));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -4033,7 +4194,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ n = push (decl_makeExpList ());
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ mcDebug_assert (decl_isExpList (peep ()));
+ }
+@@ -4129,6 +4292,7 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -4136,7 +4300,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -4167,7 +4334,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- AlignmentExpression (stopset0, stopset1, stopset2);
++ {
++ AlignmentExpression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4198,7 +4367,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- ByteAlignment (stopset0, stopset1, stopset2);
++ {
++ ByteAlignment (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4312,7 +4483,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+@@ -4441,7 +4614,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FieldList (stopset0, stopset1, stopset2);
++ {
++ FieldList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4466,6 +4641,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -4484,7 +4660,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ }
+ }
+
+
+@@ -4501,9 +4680,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else
+- curident = nameKey_NulName;
++ {
++ curident = nameKey_NulName;
++ }
+ }
+
+
+@@ -4595,11 +4778,19 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_settok)
+- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
+- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ }
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ SimpleType (stopset0, stopset1, stopset2);
+ }
+@@ -4633,7 +4824,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ {
+ Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalTypeList (stopset0, stopset1, stopset2);
++ {
++ FormalTypeList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4656,12 +4849,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
++ /* avoid dangling else. */
+ ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ }
+ }
+
+
+@@ -4700,9 +4897,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Qualident (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Qualident (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier [", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier [", 30);
++ }
+ }
+
+
+@@ -4738,16 +4941,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ FormalType (stopset0, stopset1, stopset2);
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FormalType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ FormalType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ }
+ }
+
+
+@@ -4827,7 +5039,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -4850,14 +5064,21 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
+- Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_uparrowtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ }
+ }
+
+
+@@ -4957,13 +5178,20 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Term (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Term (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Term (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number identifier { - +", 74);
++ }
+ }
+
+
+@@ -4999,29 +5227,50 @@ static void Term (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ string (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Factor (stopset0, stopset1, stopset2);
++ {
++ Factor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( identifier { string integer number real number", 70);
++ }
+ }
+
+
+@@ -5101,7 +5350,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5127,23 +5378,36 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok))))) != 0)))
+ {
+ /* avoid dangling else. */
+ SimpleDes (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( ^ [ . {", 27);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -5158,7 +5422,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5175,7 +5441,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5206,7 +5474,9 @@ static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Expect ((mcReserved_toktype) mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Expression (stopset0, stopset1, stopset2);
++ {
++ Expression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5231,31 +5501,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ {
++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_iftok)
+- IfStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IfStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+- CaseStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ CaseStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_whiletok)
+- WhileStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WhileStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_repeattok)
+- RepeatStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RepeatStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_looptok)
+- LoopStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ LoopStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_fortok)
+- ForStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ForStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_withtok)
+- WithStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_asmtok)
+- AsmStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ AsmStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_exittok)
+- ExitStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ExitStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_returntok)
+- ReturnStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ReturnStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_retrytok)
+- RetryStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RetryStatement (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: RETRY RETURN EXIT ASM WITH FOR LOOP REPEAT WHILE CASE IF identifier", 85);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5296,7 +5604,10 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expression (stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ActualParameters (stopset0, stopset1, stopset2);
++ }
+ /* epsilon */
+ }
+
+@@ -5390,15 +5701,21 @@ static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_endtok)
+- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_elsetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+ StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ }
+ }
+
+
+@@ -5645,9 +5962,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5669,7 +5992,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalParameters (stopset0, stopset1, stopset2);
++ {
++ FormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5688,11 +6013,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_builtintok)
+- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -5713,7 +6046,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefFormalParameters (stopset0, stopset1, stopset2);
++ {
++ DefFormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -5729,7 +6064,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_begintok)
+ {
+@@ -5751,7 +6088,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
+ FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -5906,13 +6245,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -5923,16 +6266,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ }
+ }
+
+
+@@ -5953,7 +6301,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -5971,7 +6321,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- DefExtendedFP (stopset0, stopset1, stopset2);
++ {
++ DefExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -5983,7 +6335,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6004,7 +6359,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -6022,7 +6379,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- ExtendedFP (stopset0, stopset1, stopset2);
++ {
++ ExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6034,7 +6393,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6049,11 +6411,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- NonVarFPSection (stopset0, stopset1, stopset2);
++ {
++ NonVarFPSection (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+- VarFPSection (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ VarFPSection (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ }
+ }
+
+
+@@ -6068,11 +6438,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- DefOptArg (stopset0, stopset1, stopset2);
++ {
++ DefOptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6087,11 +6465,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- OptArg (stopset0, stopset1, stopset2);
++ {
++ OptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -6207,13 +6593,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0, stopset1, stopset2);
+ }
+@@ -6255,13 +6647,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+
+@@ -6351,11 +6750,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_fromtok)
+- FromImport (stopset0, stopset1, stopset2);
++ {
++ FromImport (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_importtok)
+- WithoutFromImport (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithoutFromImport (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ }
+ }
+
+
+@@ -6394,12 +6801,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ decl_enterScope (curmodule);
+ decl_resetConstExpPos (curmodule);
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -6440,16 +6853,22 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ typeExp = push (decl_lookupSym (curident));
+ if (typeExp == NULL)
+- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ {
++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ }
+ if (mcLexBuf_currenttoken == mcReserved_periodtok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (! (decl_isDef (typeExp)))
+- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ {
++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ }
+ Ident (stopset0, stopset1, stopset2);
+ typeExp = replace (decl_lookupInScope (typeExp, curident));
+ if (typeExp == NULL)
+- ErrorArray ((char *) "identifier not found in definition module", 41);
++ {
++ ErrorArray ((char *) "identifier not found in definition module", 41);
++ }
+ }
+ }
+
+@@ -6465,7 +6884,9 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6531,13 +6952,24 @@ static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeEquiv (stopset0, stopset1, stopset2);
++ {
++ TypeEquiv (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- Enumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Enumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -6553,19 +6985,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SimpleType (stopset0, stopset1, stopset2);
++ {
++ SimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -6583,16 +7035,22 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_semicolontok)
+- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -6627,11 +7085,15 @@ static void DefQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (! (decl_isDef (typeExp)))
+- ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ {
++ ErrorArray ((char *) "the first component of this qualident must be a definition module", 65);
++ }
+ Ident (stopset0, stopset1, stopset2);
+ typeExp = decl_lookupInScope (typeExp, curident);
+ if (typeExp == NULL)
+- ErrorArray ((char *) "identifier not found in definition module", 41);
++ {
++ ErrorArray ((char *) "identifier not found in definition module", 41);
++ }
+ }
+ }
+
+@@ -6699,13 +7161,24 @@ static void DefEnumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- DefTypeEquiv (stopset0, stopset1, stopset2);
++ {
++ DefTypeEquiv (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefEnumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ DefEnumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -6721,19 +7194,39 @@ static void DefSimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void DefType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- DefSimpleType (stopset0, stopset1, stopset2);
++ {
++ DefSimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -6752,16 +7245,22 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
+ {
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_semicolontok)
+- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefType (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -6808,13 +7307,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6825,11 +7328,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ }
+ }
+
+
+@@ -6845,7 +7352,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ {
+ Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_volatiletok)
+- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+@@ -6864,7 +7373,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_colontok)
+- AsmOperandSpec (stopset0, stopset1, stopset2);
++ {
++ AsmOperandSpec (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6907,7 +7418,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok))
+- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -6944,7 +7457,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- NamedOperand (stopset0, stopset1, stopset2);
++ {
++ NamedOperand (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6977,7 +7492,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+--- a/src/gcc/gm2/mc-boot/Gmcp5.c
++++ b/src/gcc/gm2/mc-boot/Gmcp5.c
+@@ -2387,18 +2387,34 @@ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void followNode (decl_node n)
+ {
+ if (decl_isVar (n))
+- mcPrintf_printf0 ((char *) "variable: ", 10);
++ {
++ mcPrintf_printf0 ((char *) "variable: ", 10);
++ }
+ else if (decl_isParameter (n))
+- mcPrintf_printf0 ((char *) "parameter: ", 11);
++ {
++ /* avoid dangling else. */
++ mcPrintf_printf0 ((char *) "parameter: ", 11);
++ }
+ n = decl_skipType (decl_getType (n));
+ if (decl_isArray (n))
+- mcPrintf_printf0 ((char *) "array\\n", 7);
++ {
++ mcPrintf_printf0 ((char *) "array\\n", 7);
++ }
+ else if (decl_isPointer (n))
+- mcPrintf_printf0 ((char *) "pointer\\n", 9);
++ {
++ /* avoid dangling else. */
++ mcPrintf_printf0 ((char *) "pointer\\n", 9);
++ }
+ else if (decl_isRecord (n))
+- mcPrintf_printf0 ((char *) "record\\n", 8);
++ {
++ /* avoid dangling else. */
++ mcPrintf_printf0 ((char *) "record\\n", 8);
++ }
+ else
+- mcPrintf_printf0 ((char *) "other\\n", 7);
++ {
++ /* avoid dangling else. */
++ mcPrintf_printf0 ((char *) "other\\n", 7);
++ }
+ }
+
+
+@@ -2470,7 +2486,9 @@ static unsigned int isQualident (decl_node n)
+ decl_node type;
+
+ if (decl_isDef (n))
+- return TRUE;
++ {
++ return TRUE;
++ }
+ else
+ {
+ type = decl_skipType (decl_getType (n));
+@@ -2676,12 +2694,16 @@ static void importInto (decl_node m, nameKey_Name name, decl_node current)
+ mcDebug_assert (((decl_isDef (current)) || (decl_isModule (current))) || (decl_isImp (current)));
+ s = decl_lookupExported (m, name);
+ if (s == NULL)
+- mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1k} was not exported from definition module {%2a}", 51, (unsigned char *) &name, (sizeof (name)-1), (unsigned char *) &m, (sizeof (m)-1));
++ }
+ else
+ {
+ o = decl_import (current, s);
+ if (s != o)
+- mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ {
++ mcMetaError_metaError2 ((char *) "{%1ad} cannot be imported into the current module as it causes a name clash with {%2ad}", 87, (unsigned char *) &s, (sizeof (s)-1), (unsigned char *) &o, (sizeof (o)-1));
++ }
+ }
+ }
+
+@@ -3173,9 +3195,13 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
+ message = DynamicStrings_KillString (message);
+ }
+ else if (n == 1)
+- str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ {
++ /* avoid dangling else. */
++ str = DynamicStrings_ConCat (message, DynamicStrings_Mark (DynamicStrings_InitString ((char *) " missing ", 9)));
++ }
+ else
+ {
++ /* avoid dangling else. */
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) " expecting one of", 17), message);
+ message = DynamicStrings_KillString (message);
+ }
+@@ -3571,17 +3597,23 @@ static void SyntaxError (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ DescribeError (stopset0, stopset1, stopset2);
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ {
++ mcPrintf_printf0 ((char *) "\\nskipping token *** ", 21);
++ }
+ /*
+ yes the ORD(currenttoken) looks ugly, but it is *much* safer than
+ using currenttoken<sometok as a change to the ordering of the
+ token declarations below would cause this to break. Using ORD() we are
+ immune from such changes
+ */
+- while (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- mcLexBuf_getToken ();
++ while (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ mcLexBuf_getToken ();
++ }
+ if (Debugging)
+- mcPrintf_printf0 ((char *) " ***\\n", 6);
++ {
++ mcPrintf_printf0 ((char *) " ***\\n", 6);
++ }
+ }
+
+
+@@ -3593,8 +3625,10 @@ static void SyntaxCheck (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ /* and again (see above re: ORD)
+ */
+- if (! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
+- SyntaxError (stopset0, stopset1, stopset2);
++ if (! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0)))))
++ {
++ SyntaxError (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -3612,12 +3646,20 @@ static void WarnMissingToken (mcReserved_toktype t)
+ s0 = (SetOfStop0) 0;
+ s1 = (SetOfStop1) 0;
+ s2 = (SetOfStop2) 0;
+- if (((unsigned int) (t)) < 32)
+- s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
+- else if (((unsigned int) (t)) < 64)
+- s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ if ( ((unsigned int) (t)) < 32)
++ {
++ s0 = (SetOfStop0) ((1 << (t-mcReserved_eoftok)));
++ }
++ else if ( ((unsigned int) (t)) < 64)
++ {
++ /* avoid dangling else. */
++ s1 = (SetOfStop1) ((1 << (t-mcReserved_arraytok)));
++ }
+ else
+- s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ {
++ /* avoid dangling else. */
++ s2 = (SetOfStop2) ((1 << (t-mcReserved_recordtok)));
++ }
+ str = DescribeStop (s0, s1, s2);
+ str = DynamicStrings_ConCat (DynamicStrings_InitString ((char *) "syntax error,", 13), DynamicStrings_Mark (str));
+ mcError_errorStringAt (str, mcLexBuf_getTokenNo ());
+@@ -3634,7 +3676,9 @@ static void MissingToken (mcReserved_toktype t)
+ if ((((t != mcReserved_identtok) && (t != mcReserved_integertok)) && (t != mcReserved_realtok)) && (t != mcReserved_stringtok))
+ {
+ if (Debugging)
+- mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ {
++ mcPrintf_printf0 ((char *) "inserting token\\n", 17);
++ }
+ mcLexBuf_insertToken (t);
+ }
+ }
+@@ -3646,14 +3690,16 @@ static void MissingToken (mcReserved_toktype t)
+
+ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+ {
+ WarnMissingToken (t);
+ mcLexBuf_insertTokenAndRewind (t);
+ return TRUE;
+ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3663,10 +3709,14 @@ static unsigned int CheckAndInsert (mcReserved_toktype t, SetOfStop0 stopset0, S
+
+ static unsigned int InStopSet (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+- if ((((((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (t)) >= 32) && (((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
+- return TRUE;
++ if (((( ((unsigned int) (t)) < 32) && ((((1 << (t-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (t)) >= 32) && ( ((unsigned int) (t)) < 64)) && ((((1 << (t-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (t)) >= 64) && ((((1 << (t-mcReserved_recordtok)) & (stopset2)) != 0))))
++ {
++ return TRUE;
++ }
+ else
+- return FALSE;
++ {
++ return FALSE;
++ }
+ }
+
+
+@@ -3682,11 +3732,13 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ {
+ /* and again (see above re: ORD)
+ */
+- if ((! ((((((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || (((((unsigned int) (mcLexBuf_currenttoken)) >= 32) && (((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || ((((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
+- /* SyntaxCheck would fail since currentoken is not part of the stopset
++ if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet ((mcReserved_toktype) mcReserved_identtok, stopset0, stopset1, stopset2))))
++ {
++ /* SyntaxCheck would fail since currentoken is not part of the stopset
+ we check to see whether any of currenttoken might be a commonly omitted token */
+- if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
+- {} /* empty. */
++ if ((((((((CheckAndInsert ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2)))
++ {} /* empty. */
++ }
+ }
+
+
+@@ -3701,10 +3753,14 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
+ /* avoid dangling else. */
+ mcLexBuf_getToken ();
+ if (Pass1)
+- PeepToken (stopset0, stopset1, stopset2);
++ {
++ PeepToken (stopset0, stopset1, stopset2);
++ }
+ }
+ else
+- MissingToken (t);
++ {
++ MissingToken (t);
++ }
+ SyntaxCheck (stopset0, stopset1, stopset2);
+ }
+
+@@ -3768,11 +3824,19 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_definitiontok)
+- DefinitionModule (stopset0, stopset1, stopset2);
++ {
++ DefinitionModule (stopset0, stopset1, stopset2);
++ }
+ else if (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_implementationtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0)))
+- ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ImplementationOrProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPLEMENTATION MODULE DEFINITION", 50);
++ }
+ }
+
+
+@@ -3806,10 +3870,14 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ decl_enterScope (curmodule);
+ decl_resetConstExpPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3853,10 +3921,14 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ decl_enterScope (curmodule);
+ decl_resetConstExpPos (curmodule);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -3879,11 +3951,19 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
+ static void ImplementationOrProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_implementationtok)
+- ImplementationModule (stopset0, stopset1, stopset2);
++ {
++ ImplementationModule (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+- ProgramModule (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProgramModule (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE IMPLEMENTATION", 39);
++ }
+ }
+
+
+@@ -3940,11 +4020,19 @@ static void ConstReal (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void ConstNumber (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- ConstInteger (stopset0, stopset1, stopset2);
++ {
++ ConstInteger (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- ConstReal (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstReal (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -3959,11 +4047,19 @@ static void ConstNumber (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void Number (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_integertok)
+- Integer (stopset0, stopset1, stopset2);
++ {
++ Integer (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_realtok)
+- Real (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Real (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: real number integer number", 44);
++ }
+ }
+
+
+@@ -4067,23 +4163,49 @@ static void ConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_equaltok)
+- Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_hashtok)
+- Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_hashtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
+- Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+- Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
+- Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_lessequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greatertok)
+- Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
+- Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_intok)
+- Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_intok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IN >= > <= < <> # =", 37);
++ }
+ }
+
+
+@@ -4125,13 +4247,20 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ ConstTerm (stopset0, stopset1, stopset2);
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstTerm (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstTerm (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( integer number real number __ATTRIBUTE__ identifier { string - +", 88);
++ }
+ }
+
+
+@@ -4146,13 +4275,24 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_plustok)
+- Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_plustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+- Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ortok)
+- Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ortok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: OR - +", 24);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: OR - +", 24);
++ }
+ }
+
+
+@@ -4188,21 +4328,44 @@ static void ConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_timestok)
+- Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_timestok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_dividetok)
+- Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_dividetok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_divtok)
+- Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_divtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_modtok)
+- Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_modtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_remtok)
+- Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_remtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_andtok)
+- Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_andtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
+- Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_ambersandtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: & AND REM MOD DIV / *", 39);
++ }
+ }
+
+
+@@ -4241,23 +4404,41 @@ static void NotConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- ConstNumber (stopset0, stopset1, stopset2);
++ {
++ ConstNumber (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- ConstString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstSetOrQualidentOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ ConstExpressionNop (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+- NotConstFactor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ NotConstFactor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+- ConstAttribute (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstAttribute (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ NOT ( identifier { string integer number real number", 84);
++ }
+ }
+
+
+@@ -4345,7 +4526,9 @@ static void ConstConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ {
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ConstArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4371,18 +4554,32 @@ static void ConstSetOrQualidentOrFunction (SetOfStop0 stopset0, SetOfStop1 stops
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- ConstConstructor (stopset0, stopset1, stopset2);
++ {
++ ConstConstructor (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- ConstActualParameters (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstActualParameters (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ( {", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( {", 21);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- ConstConstructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ConstConstructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -4398,7 +4595,9 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
+ {
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
+- ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ConstExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+
+@@ -4456,9 +4655,12 @@ static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lesstok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+@@ -4466,7 +4668,10 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ Expect ((mcReserved_toktype) mcReserved_greatertok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: < identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: < identifier", 30);
++ }
+ }
+
+
+@@ -4497,7 +4702,9 @@ static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- AlignmentExpression (stopset0, stopset1, stopset2);
++ {
++ AlignmentExpression (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4528,7 +4735,9 @@ static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void Alignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- ByteAlignment (stopset0, stopset1, stopset2);
++ {
++ ByteAlignment (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4607,7 +4816,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ Expect ((mcReserved_toktype) mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
+- DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+@@ -4736,7 +4947,9 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void FieldListStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_casetok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FieldList (stopset0, stopset1, stopset2);
++ {
++ FieldList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4761,6 +4974,7 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+@@ -4779,7 +4993,10 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: CASE identifier", 33);
++ }
+ }
+
+
+@@ -4796,9 +5013,13 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void TagIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Ident (stopset0, stopset1, stopset2);
++ {
++ Ident (stopset0, stopset1, stopset2);
++ }
+ else
+- curident = nameKey_NulName;
++ {
++ curident = nameKey_NulName;
++ }
+ }
+
+
+@@ -4890,11 +5111,19 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_settok)
+- Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
+- Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PACKEDSET SET", 31);
++ }
+ Expect ((mcReserved_toktype) mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ SimpleType (stopset0, stopset1, stopset2);
+ }
+@@ -4928,7 +5157,9 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ {
+ Expect ((mcReserved_toktype) mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalTypeList (stopset0, stopset1, stopset2);
++ {
++ FormalTypeList (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -4951,12 +5182,16 @@ static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
++ /* avoid dangling else. */
+ ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ FormalReturn (stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR ... ARRAY identifier )", 44);
++ }
+ }
+
+
+@@ -4995,9 +5230,15 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- Qualident (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Qualident (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier [", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier [", 30);
++ }
+ }
+
+
+@@ -5033,16 +5274,25 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ FormalType (stopset0, stopset1, stopset2);
+ }
+ else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- FormalType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ FormalType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ARRAY identifier VAR ...", 42);
++ }
+ }
+
+
+@@ -5115,7 +5365,9 @@ static void Designator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ PushQualident (stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5170,27 +5422,44 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ {
+ field = decl_lookupInScope (type, curident);
+ if (field == NULL)
+- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ {
++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ }
+ else
+- n = replace (decl_makeComponentRef (n, field));
++ {
++ n = replace (decl_makeComponentRef (n, field));
++ }
+ }
+ else
+- mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ {
++ mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ }
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (decl_isArray (type))
+- n = replace (decl_makeArrayRef (n, pop ()));
++ {
++ n = replace (decl_makeArrayRef (n, pop ()));
++ }
+ else
+- mcMetaError_metaError1 ((char *) "attempting to access an array but the expression is not an array but a {%1d}", 76, (unsigned char *) &type, (sizeof (type)-1));
++ {
++ mcMetaError_metaError1 ((char *) "attempting to access an array but the expression is not an array but a {%1d}", 76, (unsigned char *) &type, (sizeof (type)-1));
++ }
+ Expect ((mcReserved_toktype) mcReserved_rsbratok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
+- SubPointer (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubPointer (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ^ [ .", 23);
++ }
+ }
+
+
+@@ -5254,21 +5523,35 @@ static void SubPointer (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ {
+ field = decl_lookupInScope (type, curident);
+ if (field == NULL)
+- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ {
++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in record {%2ad}", 44, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ }
+ else
+- n = replace (decl_makePointerRef (n, field));
++ {
++ n = replace (decl_makePointerRef (n, field));
++ }
+ }
+ else
+- mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ {
++ mcMetaError_metaError2 ((char *) "attempting to access a field {%1k} from {%2ad} which does not have a record type", 80, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &type, (sizeof (type)-1));
++ }
+ }
+ else
+- mcMetaError_metaError2 ((char *) "trying to dereference {%1k} which was not declared as a pointer but a {%2tad}", 77, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &n, (sizeof (n)-1));
++ {
++ mcMetaError_metaError2 ((char *) "trying to dereference {%1k} which was not declared as a pointer but a {%2tad}", 77, (unsigned char *) &n, (sizeof (n)-1), (unsigned char *) &n, (sizeof (n)-1));
++ }
+ }
+ else
+- if (decl_isPointer (type))
+- n = replace (decl_makeDeRef (n));
+- else
+- mcMetaError_metaError1 ((char *) "attempting to dereference a pointer but the expression is not a pointer but a {%1d}", 83, (unsigned char *) &type, (sizeof (type)-1));
++ {
++ if (decl_isPointer (type))
++ {
++ n = replace (decl_makeDeRef (n));
++ }
++ else
++ {
++ mcMetaError_metaError1 ((char *) "attempting to dereference a pointer but the expression is not a pointer but a {%1d}", 83, (unsigned char *) &type, (sizeof (type)-1));
++ }
++ }
+ }
+
+
+@@ -5452,14 +5735,21 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_minustok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Term (stopset0, stopset1, stopset2);
+ n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_minustok, pop ()));
+ }
+ else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- Term (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Term (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( string integer number real number { identifier - +", 74);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( string integer number real number { identifier - +", 74);
++ }
+ }
+
+
+@@ -5539,19 +5829,29 @@ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ decl_node n;
+
+ if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok))))) != 0)))
+- Number (stopset0, stopset1, stopset2);
++ {
++ Number (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- PushString (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PushString (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken == mcReserved_lcbratok) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetOrDesignatorOrFunction (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_nottok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+ {
+@@ -5560,14 +5860,21 @@ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_attributetok)
+ {
++ /* avoid dangling else. */
+ ConstAttribute (stopset0, stopset1, stopset2);
+ n = push (decl_makeUnaryTok ((mcReserved_toktype) mcReserved_nottok, pop ()));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __ATTRIBUTE__ real number integer number string ( NOT { identifier", 84);
++ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: NOT ( { identifier string integer number real number", 70);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: NOT ( { identifier string integer number real number", 70);
++ }
+ }
+
+
+@@ -5672,7 +5979,9 @@ static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ Expect ((mcReserved_toktype) mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ n = push (decl_makeSetValue ());
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rcbratok, stopset0, stopset1, stopset2);
+ }
+
+@@ -5735,14 +6044,23 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ( [ . ^ {", 27);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ( [ . ^ {", 27);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lcbratok)
+- Constructor (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Constructor (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: { identifier", 30);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: { identifier", 30);
++ }
+ }
+
+
+@@ -5757,7 +6075,9 @@ static void SetOrDesignatorOrFunction (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))))) != 0)))
+- SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ SubDesignator (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_uparrowtok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ /* while */
+ }
+
+@@ -5783,7 +6103,9 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ n = push (decl_makeExpList ());
+ if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ mcDebug_assert (decl_isExpList (peep ()));
+ }
+@@ -5812,9 +6134,13 @@ static void ExitStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+
+ Expect ((mcReserved_toktype) mcReserved_exittok, stopset0, stopset1, stopset2);
+ if (loopNo == 0)
+- ErrorArray ((char *) "EXIT can only be used inside a LOOP statement", 45);
++ {
++ ErrorArray ((char *) "EXIT can only be used inside a LOOP statement", 45);
++ }
+ else
+- n = pushStmt (decl_makeExit (peepLoop (), loopNo));
++ {
++ n = pushStmt (decl_makeExit (peepLoop (), loopNo));
++ }
+ }
+
+
+@@ -5878,31 +6204,69 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ decl_node s;
+
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ {
++ AssignmentOrProcedureCall (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_iftok)
+- IfStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IfStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_casetok)
+- CaseStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ CaseStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_whiletok)
+- WhileStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WhileStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_repeattok)
+- RepeatStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RepeatStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_looptok)
+- LoopStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ LoopStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_fortok)
+- ForStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ForStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_withtok)
+- WithStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_asmtok)
+- AsmStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ AsmStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_exittok)
+- ExitStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ExitStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_returntok)
+- ReturnStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ReturnStatement (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_retrytok)
+- RetryStatement (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RetryStatement (stopset0, stopset1, stopset2);
++ }
+ else
+- s = pushStmt ((decl_node) NULL);
++ {
++ /* avoid dangling else. */
++ s = pushStmt ((decl_node) NULL);
++ }
+ }
+
+
+@@ -5965,11 +6329,15 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+ {
++ /* avoid dangling else. */
+ ActualParameters (stopset0, stopset1, stopset2);
+ a = pushStmt (decl_makeFuncCall (d, pop ()));
+ }
+ else
+- a = pushStmt (decl_makeFuncCall (d, (decl_node) NULL));
++ {
++ /* avoid dangling else. */
++ a = pushStmt (decl_makeFuncCall (d, (decl_node) NULL));
++ }
+ decl_addCommentBody (peepStmt ());
+ decl_addCommentAfter (peepStmt ());
+ }
+@@ -6148,9 +6516,12 @@ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ decl_node c;
+
+ if (mcLexBuf_currenttoken == mcReserved_endtok)
+- Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_elsetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ c = peepStmt ();
+ StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -6158,7 +6529,10 @@ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ELSE END", 26);
++ }
+ }
+
+
+@@ -6583,9 +6957,15 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __ATTRIBUTE__", 42);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -6607,7 +6987,9 @@ static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- FormalParameters (stopset0, stopset1, stopset2);
++ {
++ FormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6626,11 +7008,19 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
+ /* avoid gcc warning by using compound statement even if not strictly necessary. */
+ /* seen optional [ | ] expression */
+ if (mcLexBuf_currenttoken == mcReserved_builtintok)
+- Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_builtintok, stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
+- Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_inlinetok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: __INLINE__ __BUILTIN__", 40);
++ }
+ }
+ /* end of optional [ | ] expression */
+ }
+@@ -6651,7 +7041,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- DefFormalParameters (stopset0, stopset1, stopset2);
++ {
++ DefFormalParameters (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -6667,7 +7059,9 @@ static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_begintok)
+ {
+@@ -6689,7 +7083,9 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Declaration (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
+ FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
+@@ -6867,13 +7263,17 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -6884,16 +7284,21 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_moduletok)
+ {
++ /* avoid dangling else. */
+ ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: MODULE PROCEDURE VAR TYPE CONST", 49);
++ }
+ }
+
+
+@@ -6914,7 +7319,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -6932,7 +7339,9 @@ static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
+ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- DefExtendedFP (stopset0, stopset1, stopset2);
++ {
++ DefExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6944,7 +7353,10 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -6965,7 +7377,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ decl_paramEnter (curproc);
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
+- MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ decl_paramLeave (curproc);
+ FormalReturn (stopset0, stopset1, stopset2);
+@@ -6983,7 +7397,9 @@ static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok))
+- ExtendedFP (stopset0, stopset1, stopset2);
++ {
++ ExtendedFP (stopset0, stopset1, stopset2);
++ }
+ else if ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0)))
+ {
+ /* avoid dangling else. */
+@@ -6995,7 +7411,10 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ }
+ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier VAR ... [", 38);
++ }
+ }
+
+
+@@ -7010,11 +7429,19 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- NonVarFPSection (stopset0, stopset1, stopset2);
++ {
++ NonVarFPSection (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+- VarFPSection (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ VarFPSection (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: VAR identifier", 32);
++ }
+ }
+
+
+@@ -7029,11 +7456,19 @@ static void FPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
+ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- DefOptArg (stopset0, stopset1, stopset2);
++ {
++ DefOptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -7048,11 +7483,19 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- OptArg (stopset0, stopset1, stopset2);
++ {
++ OptArg (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
+- Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Expect ((mcReserved_toktype) mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: ... [", 23);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: ... [", 23);
++ }
+ }
+
+
+@@ -7168,13 +7611,19 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ Expect ((mcReserved_toktype) mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
++ }
+ Block (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0, stopset1, stopset2);
+ }
+@@ -7216,13 +7665,20 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_identtok)
+- IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
++ }
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+
+@@ -7312,11 +7768,19 @@ static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
+ static void Import (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_fromtok)
+- FromImport (stopset0, stopset1, stopset2);
++ {
++ FromImport (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_importtok)
+- WithoutFromImport (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ WithoutFromImport (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: IMPORT FROM", 29);
++ }
+ }
+
+
+@@ -7352,12 +7816,18 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
+ curmodule = decl_lookupDef (curident);
+ decl_enterScope (curmodule);
+ while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
+- Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ if (mcLexBuf_currenttoken == mcReserved_exporttok)
+- Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Export (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ while ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))))) != 0))) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))))) != 0))))
+- Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ {
++ Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
++ }
+ /* while */
+ Expect ((mcReserved_toktype) mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+@@ -7415,26 +7885,38 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
+ qualid = push (lookupWithSym (curident));
+ if (qualid == NULL)
+- mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ {
++ mcMetaError_metaError1 ((char *) "the symbol {%1k} is not visible in this scope (or any other nested scope)", 73, (unsigned char *) &curident, (sizeof (curident)-1));
++ }
+ if (mcLexBuf_currenttoken == mcReserved_periodtok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ if (! (isQualident (qualid)))
+- ErrorArray ((char *) "the first component of this qualident must be a definition module or a parameter/variable/constant which has record type", 120);
++ {
++ ErrorArray ((char *) "the first component of this qualident must be a definition module or a parameter/variable/constant which has record type", 120);
++ }
+ Ident (stopset0, stopset1, stopset2);
+ if (decl_isDef (qualid))
+- qualid = replace (decl_lookupInScope (qualid, curident));
++ {
++ qualid = replace (decl_lookupInScope (qualid, curident));
++ }
+ else
+ {
+ type = decl_skipType (decl_getType (qualid));
+ field = decl_lookupInScope (type, curident);
+ if (field == NULL)
+- mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in {%2ad}", 37, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &qualid, (sizeof (qualid)-1));
++ {
++ mcMetaError_metaError2 ((char *) "field {%1k} cannot be found in {%2ad}", 37, (unsigned char *) &curident, (sizeof (curident)-1), (unsigned char *) &qualid, (sizeof (qualid)-1));
++ }
+ else
+- qualid = replace (decl_makeComponentRef (qualid, field));
++ {
++ qualid = replace (decl_makeComponentRef (qualid, field));
++ }
+ }
+ if (qualid == NULL)
+- mcMetaError_metaError1 ((char *) "qualified component of the identifier {%1k} cannot be found", 59, (unsigned char *) &curident, (sizeof (curident)-1));
++ {
++ mcMetaError_metaError1 ((char *) "qualified component of the identifier {%1k} cannot be found", 59, (unsigned char *) &curident, (sizeof (curident)-1));
++ }
+ }
+ }
+
+@@ -7450,7 +7932,9 @@ static void PushQualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void OptSubrange (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -7516,13 +8000,24 @@ static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeEquiv (stopset0, stopset1, stopset2);
++ {
++ TypeEquiv (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lparatok)
+- Enumeration (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ Enumeration (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- SubrangeType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SubrangeType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: [ ( identifier", 32);
++ }
+ }
+
+
+@@ -7538,19 +8033,39 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void Type (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_identtok))
+- SimpleType (stopset0, stopset1, stopset2);
++ {
++ SimpleType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_arraytok)
+- ArrayType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ArrayType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_recordtok)
+- RecordType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ RecordType (stopset0, stopset1, stopset2);
++ }
+ else if ((((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_settok))
+- SetType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ SetType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_pointertok)
+- PointerType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ PointerType (stopset0, stopset1, stopset2);
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+- ProcedureType (stopset0, stopset1, stopset2);
++ {
++ /* avoid dangling else. */
++ ProcedureType (stopset0, stopset1, stopset2);
++ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE POINTER SET PACKEDSET OF RECORD ARRAY identifier ( [", 80);
++ }
+ }
+
+
+@@ -7568,16 +8083,22 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
+ {
+ Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_semicolontok)
+- Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ else if (mcLexBuf_currenttoken == mcReserved_equaltok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+ Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ }
+ else
+- ErrorArray ((char *) "expecting one of: = ;", 21);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: = ;", 21);
++ }
+ }
+ /* while */
+ }
+@@ -7608,13 +8129,17 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_typetok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+- TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ {
++ TypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
++ }
+ /* while */
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_vartok)
+ {
++ /* avoid dangling else. */
+ Expect ((mcReserved_toktype) mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+ while (mcLexBuf_currenttoken == mcReserved_identtok)
+ {
+@@ -7625,11 +8150,15 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ }
+ else if (mcLexBuf_currenttoken == mcReserved_proceduretok)
+ {
++ /* avoid dangling else. */
+ DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_semicolontok, stopset0, stopset1, stopset2);
+ }
+ else
+- ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ {
++ /* avoid dangling else. */
++ ErrorArray ((char *) "expecting one of: PROCEDURE VAR TYPE CONST", 42);
++ }
+ }
+
+
+@@ -7652,7 +8181,9 @@ static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ s = pushStmt (decl_makeComment ((char *) "asm", 3));
+ Expect ((mcReserved_toktype) mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+ if (mcLexBuf_currenttoken == mcReserved_volatiletok)
+- Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ Expect ((mcReserved_toktype) mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ Expect ((mcReserved_toktype) mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+ AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+ Expect ((mcReserved_toktype) mcReserved_rparatok, stopset0, stopset1, stopset2);
+@@ -7671,7 +8202,9 @@ static void AsmOperands (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
+ {
+ string (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+ if (mcLexBuf_currenttoken == mcReserved_colontok)
+- AsmOperandSpec (stopset0, stopset1, stopset2);
++ {
++ AsmOperandSpec (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -7714,7 +8247,9 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
+ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || (mcLexBuf_currenttoken == mcReserved_stringtok))
+- AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+@@ -7751,7 +8286,9 @@ static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
+ static void AsmOperandName (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_lsbratok)
+- NamedOperand (stopset0, stopset1, stopset2);
++ {
++ NamedOperand (stopset0, stopset1, stopset2);
++ }
+ }
+
+
+@@ -7784,7 +8321,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
+ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
+ {
+ if (mcLexBuf_currenttoken == mcReserved_stringtok)
+- string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ {
++ string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
++ }
+ while (mcLexBuf_currenttoken == mcReserved_commatok)
+ {
+ Expect ((mcReserved_toktype) mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+--- a/src/gcc/gm2/mc-boot/GnameKey.c
++++ b/src/gcc/gm2/mc-boot/GnameKey.c
+@@ -177,6 +177,7 @@ static nameKey_Name doMakeKey (ptrToChar n, unsigned int higha)
+ }
+ else if (result == greater)
+ {
++ /* avoid dangling else. */
+ Storage_ALLOCATE ((void **) &child, sizeof (_T1));
+ father->right = child;
+ }
+@@ -211,17 +212,25 @@ static comparison compare (ptrToChar pi, nameKey_Name j)
+ c1 = (*pi);
+ c2 = (*pj);
+ while ((c1 != ASCII_nul) || (c2 != ASCII_nul))
+- if (c1 < c2)
+- return less;
+- else if (c1 > c2)
+- return greater;
+- else
+- {
+- pi += 1;
+- pj += 1;
+- c1 = (*pi);
+- c2 = (*pj);
+- }
++ {
++ if (c1 < c2)
++ {
++ return less;
++ }
++ else if (c1 > c2)
++ {
++ /* avoid dangling else. */
++ return greater;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ pi += 1;
++ pj += 1;
++ c1 = (*pi);
++ c2 = (*pj);
++ }
++ }
+ return equal;
+ }
+
+@@ -241,7 +250,9 @@ static comparison findNodeAndParentInTree (ptrToChar n, nameNode *child, nameNod
+ (*father) = binaryTree;
+ (*child) = binaryTree->left;
+ if ((*child) == NULL)
+- return less;
++ {
++ return less;
++ }
+ else
+ {
+ do {
+@@ -253,6 +264,7 @@ static comparison findNodeAndParentInTree (ptrToChar n, nameNode *child, nameNod
+ }
+ else if (result == greater)
+ {
++ /* avoid dangling else. */
+ (*father) = (*child);
+ (*child) = (*child)->right;
+ }
+@@ -283,7 +295,9 @@ nameKey_Name nameKey_makeKey (char *a_, unsigned int _a_high)
+ higha = StrLib_StrLen ((char *) a, _a_high);
+ Storage_ALLOCATE ((void **) &p, higha+1);
+ if (p == NULL)
+- M2RTS_HALT (-1); /* out of memory error */
++ {
++ M2RTS_HALT (-1); /* out of memory error */
++ }
+ else
+ {
+ n = p;
+@@ -317,13 +331,17 @@ nameKey_Name nameKey_makekey (void * a)
+ unsigned int higha;
+
+ if (a == NULL)
+- return nameKey_NulName;
++ {
++ return nameKey_NulName;
++ }
+ else
+ {
+ higha = libc_strlen (a);
+ Storage_ALLOCATE ((void **) &p, higha+1);
+ if (p == NULL)
+- M2RTS_HALT (-1); /* out of memory error */
++ {
++ M2RTS_HALT (-1); /* out of memory error */
++ }
+ else
+ {
+ n = p;
+@@ -363,7 +381,9 @@ void nameKey_getKey (nameKey_Name key, char *a, unsigned int _a_high)
+ i += 1;
+ }
+ if (i <= higha)
+- a[i] = ASCII_nul;
++ {
++ a[i] = ASCII_nul;
++ }
+ }
+
+
+@@ -407,37 +427,45 @@ unsigned int nameKey_isKey (char *a_, unsigned int _a_high)
+ /* firstly set up the initial values of child, using sentinal node */
+ child = binaryTree->left;
+ if (child != NULL)
+- do {
+- i = 0;
+- higha = _a_high;
+- p = nameKey_keyToCharStar (child->key);
+- while ((i <= higha) && (a[i] != ASCII_nul))
+- {
+- if (a[i] < (*p))
+- {
+- child = child->left;
+- i = higha;
+- }
+- else if (a[i] > (*p))
+- {
+- child = child->right;
+- i = higha;
+- }
+- else
+- {
+- if ((a[i] == ASCII_nul) || (i == higha))
+- {
+- /* avoid gcc warning by using compound statement even if not strictly necessary. */
+- if ((*p) == ASCII_nul)
+- return TRUE;
+- else
+- child = child->left;
+- }
+- p += 1;
+- }
+- i += 1;
+- }
+- } while (! (child == NULL));
++ {
++ do {
++ i = 0;
++ higha = _a_high;
++ p = nameKey_keyToCharStar (child->key);
++ while ((i <= higha) && (a[i] != ASCII_nul))
++ {
++ if (a[i] < (*p))
++ {
++ child = child->left;
++ i = higha;
++ }
++ else if (a[i] > (*p))
++ {
++ /* avoid dangling else. */
++ child = child->right;
++ i = higha;
++ }
++ else
++ {
++ /* avoid dangling else. */
++ if ((a[i] == ASCII_nul) || (i == higha))
++ {
++ /* avoid gcc warning by using compound statement even if not strictly necessary. */
++ if ((*p) == ASCII_nul)
++ {
++ return TRUE;
++ }
++ else
++ {
++ child = child->left;
++ }
++ }
++ p += 1;
++ }
++ i += 1;
++ }
++ } while (! (child == NULL));
++ }
+ return FALSE;
+ }
+
+@@ -473,7 +501,9 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2)
+ char c2;
+
+ if (key1 == key2)
+- return TRUE;
++ {
++ return TRUE;
++ }
+ else
+ {
+ pi = nameKey_keyToCharStar (key1);
+@@ -481,16 +511,20 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2)
+ c1 = (*pi);
+ c2 = (*pj);
+ while ((c1 != ASCII_nul) && (c2 != ASCII_nul))
+- if (((c1 == c2) || (((c1 >= 'A') && (c1 <= 'Z')) && (c2 == ((char) ((((unsigned int) (c1))-((unsigned int) ('A')))+((unsigned int) ('a'))))))) || (((c2 >= 'A') && (c2 <= 'Z')) && (c1 == ((char) ((((unsigned int) (c2))-((unsigned int) ('A')))+((unsigned int) ('a')))))))
+- {
+- pi += 1;
+- pj += 1;
+- c1 = (*pi);
+- c2 = (*pj);
+- }
+- else
+- /* difference found */
+- return FALSE;
++ {
++ if (((c1 == c2) || (((c1 >= 'A') && (c1 <= 'Z')) && (c2 == ((char) (( ((unsigned int) (c1))- ((unsigned int) ('A')))+ ((unsigned int) ('a'))))))) || (((c2 >= 'A') && (c2 <= 'Z')) && (c1 == ((char) (( ((unsigned int) (c2))- ((unsigned int) ('A')))+ ((unsigned int) ('a')))))))
++ {
++ pi += 1;
++ pj += 1;
++ c1 = (*pi);
++ c2 = (*pj);
++ }
++ else
++ {
++ /* difference found */
++ return FALSE;
++ }
++ }
+ return c1 == c2;
+ }
+ }
+@@ -503,9 +537,13 @@ unsigned int nameKey_isSameExcludingCase (nameKey_Name key1, nameKey_Name key2)
+ void * nameKey_keyToCharStar (nameKey_Name key)
+ {
+ if ((key == nameKey_NulName) || (! (Indexing_InBounds (keyIndex, (unsigned int) key))))
+- return NULL;
++ {
++ return NULL;
++ }
+ else
+- return Indexing_GetIndice (keyIndex, (unsigned int) key);
++ {
++ return Indexing_GetIndice (keyIndex, (unsigned int) key);
++ }
+ }
+
+ void _M2_nameKey_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
+--- a/src/gcc/gm2/mc-boot/GsymbolKey.c
++++ b/src/gcc/gm2/mc-boot/GsymbolKey.c
+@@ -135,21 +135,26 @@ static void findNodeAndParentInTree (symbolKey_symbolTree t, nameKey_Name n, sym
+ /* remember to skip the sentinal value and assign father and child */
+ (*father) = t;
+ if (t == NULL)
+- Debug_Halt ((char *) "parameter t should never be NIL", 31, 203, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ {
++ Debug_Halt ((char *) "parameter t should never be NIL", 31, 203, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ }
+ (*child) = t->left;
+ if ((*child) != NULL)
+- do {
+- if (n < (*child)->name)
+- {
+- (*father) = (*child);
+- (*child) = (*child)->left;
+- }
+- else if (n > (*child)->name)
+- {
+- (*father) = (*child);
+- (*child) = (*child)->right;
+- }
+- } while (! (((*child) == NULL) || (n == (*child)->name)));
++ {
++ do {
++ if (n < (*child)->name)
++ {
++ (*father) = (*child);
++ (*child) = (*child)->left;
++ }
++ else if (n > (*child)->name)
++ {
++ /* avoid dangling else. */
++ (*father) = (*child);
++ (*child) = (*child)->right;
++ }
++ } while (! (((*child) == NULL) || (n == (*child)->name)));
++ }
+ }
+
+
+@@ -162,9 +167,13 @@ static void findNodeAndParentInTree (symbolKey_symbolTree t, nameKey_Name n, sym
+ static unsigned int searchForAny (symbolKey_symbolTree t, symbolKey_isSymbol p)
+ {
+ if (t == NULL)
+- return FALSE;
++ {
++ return FALSE;
++ }
+ else
+- return (((*p.proc) (t->key)) || (searchForAny (t->left, p))) || (searchForAny (t->right, p));
++ {
++ return (((*p.proc) (t->key)) || (searchForAny (t->left, p))) || (searchForAny (t->right, p));
++ }
+ }
+
+
+@@ -211,14 +220,20 @@ void * symbolKey_getSymKey (symbolKey_symbolTree t, nameKey_Name name)
+ symbolKey_symbolTree child;
+
+ if (t == NULL)
+- return symbolKey_NulKey;
++ {
++ return symbolKey_NulKey;
++ }
+ else
+ {
+ findNodeAndParentInTree (t, name, &child, &father);
+ if (child == NULL)
+- return symbolKey_NulKey;
++ {
++ return symbolKey_NulKey;
++ }
+ else
+- return child->key;
++ {
++ return child->key;
++ }
+ }
+ }
+
+@@ -238,23 +253,28 @@ void symbolKey_putSymKey (symbolKey_symbolTree t, nameKey_Name name, void * key)
+ father->left = child;
+ }
+ else
+- if (name < father->name)
+- {
+- Storage_ALLOCATE ((void **) &child, sizeof (_T1));
+- father->left = child;
+- }
+- else if (name > father->name)
+- {
+- Storage_ALLOCATE ((void **) &child, sizeof (_T1));
+- father->right = child;
+- }
++ {
++ if (name < father->name)
++ {
++ Storage_ALLOCATE ((void **) &child, sizeof (_T1));
++ father->left = child;
++ }
++ else if (name > father->name)
++ {
++ /* avoid dangling else. */
++ Storage_ALLOCATE ((void **) &child, sizeof (_T1));
++ father->right = child;
++ }
++ }
+ child->right = NULL;
+ child->left = NULL;
+ child->key = key;
+ child->name = name;
+ }
+ else
+- Debug_Halt ((char *) "symbol already stored", 21, 119, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ {
++ Debug_Halt ((char *) "symbol already stored", 21, 119, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ }
+ }
+
+
+@@ -273,43 +293,55 @@ void symbolKey_delSymKey (symbolKey_symbolTree t, nameKey_Name name)
+
+ findNodeAndParentInTree (t, name, &child, &father); /* find father and child of the node */
+ if ((child != NULL) && (child->name == name))
+- /* Have found the node to be deleted */
+- if (father->right == child)
+- {
+- /* most branch of child^.left. */
+- if (child->left != NULL)
+- {
+- /* Scan for right most node of child^.left */
+- i = child->left;
+- while (i->right != NULL)
+- i = i->right;
+- i->right = child->right;
+- father->right = child->left;
+- }
+- else
+- /* (as in a single linked list) to child^.right */
+- father->right = child->right;
+- Storage_DEALLOCATE ((void **) &child, sizeof (_T1));
+- }
+- else
+- {
+- /* branch of child^.right */
+- if (child->right != NULL)
+- {
+- /* Scan for left most node of child^.right */
+- i = child->right;
+- while (i->left != NULL)
+- i = i->left;
+- i->left = child->left;
+- father->left = child->right;
+- }
+- else
+- /* (as in a single linked list) to child^.left. */
+- father->left = child->left;
+- Storage_DEALLOCATE ((void **) &child, sizeof (_T1));
+- }
++ {
++ /* Have found the node to be deleted */
++ if (father->right == child)
++ {
++ /* most branch of child^.left. */
++ if (child->left != NULL)
++ {
++ /* Scan for right most node of child^.left */
++ i = child->left;
++ while (i->right != NULL)
++ {
++ i = i->right;
++ }
++ i->right = child->right;
++ father->right = child->left;
++ }
++ else
++ {
++ /* (as in a single linked list) to child^.right */
++ father->right = child->right;
++ }
++ Storage_DEALLOCATE ((void **) &child, sizeof (_T1));
++ }
++ else
++ {
++ /* branch of child^.right */
++ if (child->right != NULL)
++ {
++ /* Scan for left most node of child^.right */
++ i = child->right;
++ while (i->left != NULL)
++ {
++ i = i->left;
++ }
++ i->left = child->left;
++ father->left = child->right;
++ }
++ else
++ {
++ /* (as in a single linked list) to child^.left. */
++ father->left = child->left;
++ }
++ Storage_DEALLOCATE ((void **) &child, sizeof (_T1));
++ }
++ }
+ else
+- Debug_Halt ((char *) "trying to delete a symbol that is not in the tree - the compiler never expects this to occur", 92, 186, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ {
++ Debug_Halt ((char *) "trying to delete a symbol that is not in the tree - the compiler never expects this to occur", 92, 186, (char *) "../../gcc-versionno/gcc/gm2/mc/symbolKey.mod", 44);
++ }
+ }
+
+
+--- a/src/gcc/gm2/mc-boot/Gvarargs.c
++++ b/src/gcc/gm2/mc-boot/Gvarargs.c
+@@ -147,14 +147,16 @@ void varargs_arg (varargs_vararg v, unsigned char *a, unsigned int _a_high)
+ unsigned char * p;
+
+ if (v->i == v->nArgs)
+- M2RTS_HALT (-1); /* too many calls to arg. */
++ {
++ M2RTS_HALT (-1); /* too many calls to arg. */
++ }
+ else
+ {
+- if (((_a_high)+1) == v->arg.array[v->i].len)
++ if ((_a_high+1) == v->arg.array[v->i].len)
+ {
+ p = v->arg.array[v->i].ptr;
+ j = 0;
+- while (j <= (_a_high))
++ while (j <= _a_high)
+ {
+ a[j] = (*p);
+ p += 1;
+@@ -162,7 +164,9 @@ void varargs_arg (varargs_vararg v, unsigned char *a, unsigned int _a_high)
+ }
+ }
+ else
+- M2RTS_HALT (-1); /* parameter mismatch. */
++ {
++ M2RTS_HALT (-1); /* parameter mismatch. */
++ }
+ v->i += 1;
+ }
+ }
+@@ -216,21 +220,27 @@ void varargs_replace (varargs_vararg v, unsigned char *a, unsigned int _a_high)
+ unsigned char * p;
+
+ if (v->i == v->nArgs)
+- M2RTS_HALT (-1); /* too many calls to arg. */
++ {
++ M2RTS_HALT (-1); /* too many calls to arg. */
++ }
+ else
+- if (((_a_high)+1) == v->arg.array[v->i].len)
+- {
+- p = v->arg.array[v->i].ptr;
+- j = 0;
+- while (j <= (_a_high))
+- {
+- (*p) = a[j];
+- p += 1;
+- j += 1;
+- }
+- }
+- else
+- M2RTS_HALT (-1); /* parameter mismatch. */
++ {
++ if ((_a_high+1) == v->arg.array[v->i].len)
++ {
++ p = v->arg.array[v->i].ptr;
++ j = 0;
++ while (j <= _a_high)
++ {
++ (*p) = a[j];
++ p += 1;
++ j += 1;
++ }
++ }
++ else
++ {
++ M2RTS_HALT (-1); /* parameter mismatch. */
++ }
++ }
+ }
+
+
+@@ -242,7 +252,7 @@ void varargs_end (varargs_vararg *v)
+ {
+ if ((*v) != NULL)
+ {
+- Storage_DEALLOCATE (&(*v)->contents, (unsigned int) sizeof (varargs_vararg));
++ Storage_DEALLOCATE (&(*v)->contents, sizeof (varargs_vararg));
+ Storage_DEALLOCATE ((void **) &(*v), sizeof (_T1));
+ }
+ }
+@@ -263,7 +273,7 @@ varargs_vararg varargs_start1 (unsigned char *a_, unsigned int _a_high)
+ Storage_ALLOCATE ((void **) &v, sizeof (_T1));
+ v->i = 0;
+ v->nArgs = 1;
+- v->size = (_a_high)+1;
++ v->size = _a_high+1;
+ Storage_ALLOCATE (&v->contents, v->size);
+ v->contents = libc_memcpy (v->contents, &a, (size_t) v->size);
+ v->arg.array[0].ptr = v->contents;
+@@ -290,15 +300,15 @@ varargs_vararg varargs_start2 (unsigned char *a_, unsigned int _a_high, unsigned
+ Storage_ALLOCATE ((void **) &v, sizeof (_T1));
+ v->i = 0;
+ v->nArgs = 2;
+- v->size = ((_a_high)+(_b_high))+2;
++ v->size = (_a_high+_b_high)+2;
+ Storage_ALLOCATE (&v->contents, v->size);
+- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1);
++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1);
+ v->arg.array[0].ptr = p;
+- v->arg.array[0].len = (_a_high)+1;
++ v->arg.array[0].len = _a_high+1;
+ p += v->arg.array[0].len;
+- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1);
++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1);
+ v->arg.array[1].ptr = p;
+- v->arg.array[1].len = (_b_high)+1;
++ v->arg.array[1].len = _b_high+1;
+ return v;
+ }
+
+@@ -323,19 +333,19 @@ varargs_vararg varargs_start3 (unsigned char *a_, unsigned int _a_high, unsigned
+ Storage_ALLOCATE ((void **) &v, sizeof (_T1));
+ v->i = 0;
+ v->nArgs = 3;
+- v->size = (((_a_high)+(_b_high))+(_c_high))+3;
++ v->size = ((_a_high+_b_high)+_c_high)+3;
+ Storage_ALLOCATE (&v->contents, v->size);
+- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1);
++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1);
+ v->arg.array[0].ptr = p;
+- v->arg.array[0].len = (_a_high)+1;
++ v->arg.array[0].len = _a_high+1;
+ p += v->arg.array[0].len;
+- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1);
++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1);
+ v->arg.array[1].ptr = p;
+- v->arg.array[1].len = (_b_high)+1;
++ v->arg.array[1].len = _b_high+1;
+ p += v->arg.array[1].len;
+- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1);
++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1);
+ v->arg.array[2].ptr = p;
+- v->arg.array[2].len = (_c_high)+1;
++ v->arg.array[2].len = _c_high+1;
+ return v;
+ }
+
+@@ -362,22 +372,22 @@ varargs_vararg varargs_start4 (unsigned char *a_, unsigned int _a_high, unsigned
+ Storage_ALLOCATE ((void **) &v, sizeof (_T1));
+ v->i = 0;
+ v->nArgs = 4;
+- v->size = ((((_a_high)+(_b_high))+(_c_high))+(_d_high))+4;
++ v->size = (((_a_high+_b_high)+_c_high)+_d_high)+4;
+ Storage_ALLOCATE (&v->contents, v->size);
+- p = libc_memcpy (v->contents, &a, (size_t) (_a_high)+1);
+- v->arg.array[0].len = (_a_high)+1;
++ p = libc_memcpy (v->contents, &a, (size_t) _a_high+1);
++ v->arg.array[0].len = _a_high+1;
+ p += v->arg.array[0].len;
+- p = libc_memcpy ((void *) p, &b, (size_t) (_b_high)+1);
++ p = libc_memcpy ((void *) p, &b, (size_t) _b_high+1);
+ v->arg.array[1].ptr = p;
+- v->arg.array[1].len = (_b_high)+1;
++ v->arg.array[1].len = _b_high+1;
+ p += v->arg.array[1].len;
+- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1);
++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1);
+ v->arg.array[2].ptr = p;
+- v->arg.array[2].len = (_c_high)+1;
++ v->arg.array[2].len = _c_high+1;
+ p += v->arg.array[2].len;
+- p = libc_memcpy ((void *) p, &c, (size_t) (_c_high)+1);
++ p = libc_memcpy ((void *) p, &c, (size_t) _c_high+1);
+ v->arg.array[3].ptr = p;
+- v->arg.array[3].len = (_c_high)+1;
++ v->arg.array[3].len = _c_high+1;
+ return v;
+ }
+
+--- a/src/gcc/gm2/mc-boot/Gwlists.c
++++ b/src/gcc/gm2/mc-boot/Gwlists.c
+@@ -189,7 +189,9 @@ void wlists_killList (wlists_wlist *l)
+ if ((*l) != NULL)
+ {
+ if ((*l)->next != NULL)
+- wlists_killList (&(*l)->next);
++ {
++ wlists_killList (&(*l)->next);
++ }
+ Storage_DEALLOCATE ((void **) &(*l), sizeof (_T1));
+ }
+ }
+@@ -207,9 +209,13 @@ void wlists_putItemIntoList (wlists_wlist l, unsigned int c)
+ l->elements.array[l->noOfElements-1] = c;
+ }
+ else if (l->next != NULL)
+- wlists_putItemIntoList (l->next, c);
++ {
++ /* avoid dangling else. */
++ wlists_putItemIntoList (l->next, c);
++ }
+ else
+ {
++ /* avoid dangling else. */
+ l->next = wlists_initList ();
+ wlists_putItemIntoList (l->next, c);
+ }
+@@ -225,9 +231,13 @@ unsigned int wlists_getItemFromList (wlists_wlist l, unsigned int n)
+ while (l != NULL)
+ {
+ if (n <= l->noOfElements)
+- return l->elements.array[n-1];
++ {
++ return l->elements.array[n-1];
++ }
+ else
+- n -= l->noOfElements;
++ {
++ n -= l->noOfElements;
++ }
+ l = l->next;
+ }
+ return 0;
+@@ -245,15 +255,23 @@ unsigned int wlists_getIndexOfList (wlists_wlist l, unsigned int c)
+ unsigned int i;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ i = 1;
+ while (i <= l->noOfElements)
+- if (l->elements.array[i-1] == c)
+- return i;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return i;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ return l->noOfElements+(wlists_getIndexOfList (l->next, c));
+ }
+ }
+@@ -268,7 +286,9 @@ unsigned int wlists_noOfItemsInList (wlists_wlist l)
+ unsigned int t;
+
+ if (l == NULL)
+- return 0;
++ {
++ return 0;
++ }
+ else
+ {
+ t = 0;
+@@ -289,7 +309,9 @@ unsigned int wlists_noOfItemsInList (wlists_wlist l)
+ void wlists_includeItemIntoList (wlists_wlist l, unsigned int c)
+ {
+ if (! (wlists_isItemInList (l, c)))
+- wlists_putItemIntoList (l, c);
++ {
++ wlists_putItemIntoList (l, c);
++ }
+ }
+
+
+@@ -311,9 +333,13 @@ void wlists_removeItemFromList (wlists_wlist l, unsigned int c)
+ do {
+ i = 1;
+ while ((i <= l->noOfElements) && (l->elements.array[i-1] != c))
+- i += 1;
++ {
++ i += 1;
++ }
+ if ((i <= l->noOfElements) && (l->elements.array[i-1] == c))
+- found = TRUE;
++ {
++ found = TRUE;
++ }
+ else
+ {
+ p = l;
+@@ -321,7 +347,9 @@ void wlists_removeItemFromList (wlists_wlist l, unsigned int c)
+ }
+ } while (! ((l == NULL) || found));
+ if (found)
+- removeItem (p, l, i);
++ {
++ removeItem (p, l, i);
++ }
+ }
+ }
+
+@@ -337,9 +365,13 @@ void wlists_replaceItemInList (wlists_wlist l, unsigned int n, unsigned int w)
+ while (l != NULL)
+ {
+ if (n <= l->noOfElements)
+- l->elements.array[n-1] = w;
++ {
++ l->elements.array[n-1] = w;
++ }
+ else
+- n -= l->noOfElements;
++ {
++ n -= l->noOfElements;
++ }
+ l = l->next;
+ }
+ }
+@@ -356,10 +388,16 @@ unsigned int wlists_isItemInList (wlists_wlist l, unsigned int c)
+ do {
+ i = 1;
+ while (i <= l->noOfElements)
+- if (l->elements.array[i-1] == c)
+- return TRUE;
+- else
+- i += 1;
++ {
++ if (l->elements.array[i-1] == c)
++ {
++ return TRUE;
++ }
++ else
++ {
++ i += 1;
++ }
++ }
+ l = l->next;
+ } while (! (l == NULL));
+ return FALSE;
+--- a/src/gcc/gm2/mc/decl.mod
++++ b/src/gcc/gm2/mc/decl.mod
+@@ -5,20 +5,19 @@ Contributed by Gaius Mulley <gaius@glam.ac.uk>.
+
+ This file is part of GNU Modula-2.
+
+-GNU Modula-2 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.
++GNU Modula-2 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.
+
+-GNU Modula-2 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.
++GNU Modula-2 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 gm2; see the file COPYING. If not, write to the Free Software
+-Foundation, 51 Franklin Street, Fifth Floor,
+-Boston, MA 02110-1301, USA. *)
++You should have received a copy of the GNU General Public License
++along with GNU Modula-2; see the file COPYING3. If not see
++<http://www.gnu.org/licenses/>. *)
+
+ IMPLEMENTATION MODULE decl ; (*!m2pim*)
+
+@@ -71,6 +70,9 @@ CONST
+ debugDecl = FALSE ;
+ caseException = TRUE ;
+ returnException = TRUE ;
++ (* this is a work around to avoid ever having to handle dangling else. *)
++ forceCompoundStatement = TRUE ; (* TRUE will avoid dangling else, by always using {}. *)
++
+
+ TYPE
+ language = (ansiC, ansiCP, pim4) ;
+@@ -122,6 +124,14 @@ TYPE
+ node = POINTER TO RECORD
+ CASE kind: nodeT OF
+
++ throw,
++ new,
++ dispose,
++ inc,
++ dec,
++ incl,
++ excl,
++ halt : intrinsicF: intrinsicT |
+ explist : explistF: explistT |
+ exit : exitF : exitT |
+ return : returnF : returnT |
+@@ -209,8 +219,8 @@ TYPE
+ greater,
+ greequal,
+ lessequal,
+- cast,
+ val,
++ cast,
+ plus,
+ sub,
+ div,
+@@ -227,7 +237,6 @@ TYPE
+ ord,
+ float,
+ trunc,
+- throw,
+ re,
+ im,
+ not,
+@@ -246,6 +255,13 @@ TYPE
+ at: where ;
+ END ;
+
++ intrinsicT = RECORD
++ args : node ;
++ noArgs : CARDINAL ;
++ type : node ;
++ intrinsicComment: commentPair ;
++ END ;
++
+ fixupInfo = RECORD
+ count: CARDINAL ;
+ info : Index ;
+@@ -3316,9 +3332,13 @@ END getExpList ;
+
+ PROCEDURE expListLen (p: node) : CARDINAL ;
+ BEGIN
+- assert (p#NIL) ;
+- assert (isExpList (p)) ;
+- RETURN HighIndice (p^.explistF.exp)
++ IF p = NIL
++ THEN
++ RETURN 0
++ ELSE
++ assert (isExpList (p)) ;
++ RETURN HighIndice (p^.explistF.exp)
++ END
+ END expListLen ;
+
+
+@@ -3497,7 +3517,26 @@ END isAnyType ;
+
+
+ (*
+- makeCast -
++ makeVal - creates a VAL (type, expression) node.
++*)
++
++PROCEDURE makeVal (params: node) : node ;
++BEGIN
++ assert (isExpList (params)) ;
++ IF expListLen (params) = 2
++ THEN
++ RETURN makeBinary (val,
++ getExpList (params, 1),
++ getExpList (params, 2),
++ getExpList (params, 1))
++ ELSE
++ HALT
++ END
++END makeVal ;
++
++
++(*
++ makeCast - creates a cast node TYPENAME (expr).
+ *)
+
+ PROCEDURE makeCast (c, p: node) : node ;
+@@ -3512,6 +3551,135 @@ BEGIN
+ END makeCast ;
+
+
++(*
++ makeIntrisicProc -
++*)
++
++PROCEDURE makeIntrinsicProc (k: nodeT; noArgs: CARDINAL; p: node) : node ;
++VAR
++ f: node ;
++BEGIN
++ f := newNode (k) ;
++ f^.intrinsicF.args := p ;
++ f^.intrinsicF.noArgs := noArgs ;
++ f^.intrinsicF.type := NIL ;
++ initPair (f^.intrinsicF.intrinsicComment) ;
++ RETURN f
++END makeIntrinsicProc ;
++
++
++(*
++ makeIntrinsicUnaryType -
++*)
++
++PROCEDURE makeIntrinsicUnaryType (k: nodeT; paramList: node; returnType: node) : node ;
++BEGIN
++ RETURN makeUnary (k, getExpList (paramList, 1), returnType)
++END makeIntrinsicUnaryType ;
++
++
++(*
++ makeIntrinsicBinaryType -
++*)
++
++PROCEDURE makeIntrinsicBinaryType (k: nodeT; paramList: node; returnType: node) : node ;
++BEGIN
++ RETURN makeBinary (k, getExpList (paramList, 1), getExpList (paramList, 2), returnType)
++END makeIntrinsicBinaryType ;
++
++
++(*
++ checkIntrinsic - checks to see if the function call to, c, with
++ parameter list, n, is really an intrinic. If it
++ is an intrinic then an intrinic node is created
++ and returned. Otherwise NIL is returned.
++*)
++
++PROCEDURE checkIntrinsic (c, n: node) : node ;
++BEGIN
++ IF isAnyType (c)
++ THEN
++ RETURN makeCast (c, n)
++ ELSIF c = maxN
++ THEN
++ RETURN makeIntrinsicUnaryType (max, n, NIL)
++ ELSIF c = minN
++ THEN
++ RETURN makeIntrinsicUnaryType (min, n, NIL)
++ ELSIF c = haltN
++ THEN
++ RETURN makeIntrinsicProc (halt, expListLen (n), n)
++ ELSIF c = valN
++ THEN
++ RETURN makeVal (n)
++ ELSIF c = adrN
++ THEN
++ RETURN makeIntrinsicUnaryType (adr, n, addressN)
++ ELSIF c = sizeN
++ THEN
++ RETURN makeIntrinsicUnaryType (size, n, cardinalN)
++ ELSIF c = tsizeN
++ THEN
++ RETURN makeIntrinsicUnaryType (tsize, n, cardinalN)
++ ELSIF c = floatN
++ THEN
++ RETURN makeIntrinsicUnaryType (float, n, realN)
++ ELSIF c = truncN
++ THEN
++ RETURN makeIntrinsicUnaryType (trunc, n, integerN)
++ ELSIF c = ordN
++ THEN
++ RETURN makeIntrinsicUnaryType (ord, n, cardinalN)
++ ELSIF c = chrN
++ THEN
++ RETURN makeIntrinsicUnaryType (chr, n, charN)
++ ELSIF c = capN
++ THEN
++ RETURN makeIntrinsicUnaryType (cap, n, charN)
++ ELSIF c = absN
++ THEN
++ RETURN makeIntrinsicUnaryType (abs, n, NIL)
++ ELSIF c = imN
++ THEN
++ RETURN makeIntrinsicUnaryType (im, n, NIL)
++ ELSIF c = reN
++ THEN
++ RETURN makeIntrinsicUnaryType (re, n, NIL)
++ ELSIF c = cmplxN
++ THEN
++ RETURN makeIntrinsicBinaryType (cmplx, n, NIL)
++ ELSIF c = highN
++ THEN
++ RETURN makeIntrinsicUnaryType (high, n, cardinalN)
++ ELSIF c = incN
++ THEN
++ RETURN makeIntrinsicProc (inc, expListLen (n), n)
++ ELSIF c = decN
++ THEN
++ RETURN makeIntrinsicProc (dec, expListLen (n), n)
++ ELSIF c = inclN
++ THEN
++ RETURN makeIntrinsicProc (incl, expListLen (n), n)
++ ELSIF c = exclN
++ THEN
++ RETURN makeIntrinsicProc (excl, expListLen (n), n)
++ ELSIF c = newN
++ THEN
++ RETURN makeIntrinsicProc (new, 1, n)
++ ELSIF c = disposeN
++ THEN
++ RETURN makeIntrinsicProc (dispose, 1, n)
++ ELSIF c = lengthN
++ THEN
++ RETURN makeIntrinsicUnaryType (length, n, cardinalN)
++ ELSIF c = throwN
++ THEN
++ RETURN makeIntrinsicProc (throw, 1, n)
++ END ;
++ RETURN NIL
++END checkIntrinsic ;
++
++
+ (*
+ makeFuncCall - builds a function call to c with param list, n.
+ *)
+@@ -3527,17 +3695,16 @@ BEGIN
+ THEN
+ addImportedModule (getMainModule (), lookupDef (makeKey ('M2RTS')), FALSE)
+ END ;
+- IF isAnyType (c)
++ f := checkIntrinsic (c, n) ;
++ IF f = NIL
+ THEN
+- RETURN makeCast (c, n)
+- ELSE
+ f := newNode (funccall) ;
+ f^.funccallF.function := c ;
+ f^.funccallF.args := n ;
+ f^.funccallF.type := NIL ;
+- initPair (f^.funccallF.funccallComment) ;
+- RETURN f
+- END
++ initPair (f^.funccallF.funccallComment)
++ END ;
++ RETURN f
+ END makeFuncCall ;
+
+
+@@ -4024,7 +4191,6 @@ BEGIN
+ assert (n # NIL) ;
+ CASE n^.kind OF
+
+- throw,
+ re,
+ im,
+ deref,
+@@ -4050,6 +4216,40 @@ BEGIN
+ END isUnary ;
+
+
++(*
++ isBinary - returns TRUE if, n, is an binary node.
++*)
++
++PROCEDURE isBinary (n: node) : BOOLEAN ;
++BEGIN
++ assert (n # NIL) ;
++ CASE n^.kind OF
++
++ cmplx,
++ and,
++ or,
++ equal,
++ notequal,
++ less,
++ greater,
++ greequal,
++ lessequal,
++ val,
++ cast,
++ plus,
++ sub,
++ div,
++ mod,
++ mult,
++ divide,
++ in : RETURN TRUE
++
++ ELSE
++ RETURN FALSE
++ END
++END isBinary ;
++
++
+ (*
+ makeUnary - create a unary expression node with, e, as the argument
+ and res as the return type.
+@@ -4068,6 +4268,8 @@ BEGIN
+ kind := k ;
+ CASE kind OF
+
++ min,
++ max,
+ throw,
+ re,
+ im,
+@@ -4199,17 +4401,17 @@ END foldBinary ;
+
+
+ (*
+- makeBinary - create a binary node with left/right/result type: l, r and res.
++ makeBinary - create a binary node with left/right/result type: l, r and resultType.
+ *)
+
+-PROCEDURE makeBinary (k: nodeT; l, r: node; res: node) : node ;
++PROCEDURE makeBinary (k: nodeT; l, r: node; resultType: node) : node ;
+ VAR
+ n: node ;
+ BEGIN
+- n := foldBinary (k, l, r, res) ;
++ n := foldBinary (k, l, r, resultType) ;
+ IF n = NIL
+ THEN
+- n := doMakeBinary (k, l, r, res)
++ n := doMakeBinary (k, l, r, resultType)
+ END ;
+ RETURN n
+ END makeBinary ;
+@@ -4694,6 +4896,8 @@ BEGIN
+ mult,
+ divide : RETURN binaryF.resultType |
+ in : RETURN booleanN |
++ max,
++ min,
+ re,
+ im,
+ abs,
+@@ -4789,40 +4993,7 @@ END getMaxMinType ;
+ PROCEDURE doGetFuncType (n: node) : node ;
+ BEGIN
+ assert (isFuncCall (n)) ;
+- IF isIntrinsic (n)
+- THEN
+- CASE n^.funccallF.function^.kind OF
+-
+- max,
+- min : RETURN getMaxMinType (getExpList (n^.funccallF.args, 1)) |
+- cast,
+- val : RETURN getExpList (n^.funccallF.args, 1) |
+- adr : RETURN addressN |
+- size,
+- tsize,
+- float : RETURN realN |
+- trunc : RETURN integerN |
+- ord : RETURN cardinalN |
+- chr : RETURN charN |
+- cap : RETURN charN |
+- re,
+- im : RETURN realN |
+- cmplx : RETURN complexN |
+- abs : RETURN getExprType (getExpList (n^.funccallF.args, 1)) |
+- high : RETURN cardinalN |
+- halt,
+- inc,
+- dec,
+- incl,
+- excl,
+- new,
+- dispose: HALT |
+- length : RETURN cardinalN
+-
+- END
+- ELSE
+- RETURN doSetExprType (n^.funccallF.type, getType (n^.funccallF.function))
+- END
++ RETURN doSetExprType (n^.funccallF.type, getType (n^.funccallF.function))
+ END doGetFuncType ;
+
+
+@@ -4835,10 +5006,13 @@ BEGIN
+ WITH n^ DO
+ CASE kind OF
+
++ max,
++ min : RETURN getMaxMinType (n^.unaryF.arg) |
++ cast,
++ val : RETURN doSetExprType (n^.binaryF.resultType, n^.binaryF.left) |
+ halt,
+ new,
+ dispose : RETURN NIL |
+- length : RETURN cardinalN |
+ inc,
+ dec,
+ incl,
+@@ -4908,8 +5082,6 @@ BEGIN
+ elsif,
+ assignment : HALT |
+ (* expressions. *)
+- cast,
+- val : RETURN doSetExprType (binaryF.resultType, binaryF.left) |
+ plus,
+ sub,
+ div,
+@@ -5404,6 +5576,7 @@ BEGIN
+ pointerref : RETURN FALSE |
+ cast : RETURN TRUE |
+ val : RETURN TRUE |
++ abs : RETURN FALSE |
+ plus,
+ sub,
+ div,
+@@ -5423,6 +5596,9 @@ BEGIN
+ or : RETURN TRUE |
+ funccall : RETURN TRUE |
+ recordfield : RETURN FALSE |
++ loc,
++ byte,
++ word,
+ type,
+ char,
+ cardinal,
+@@ -5955,22 +6131,15 @@ END doInC ;
+
+ PROCEDURE doThrowC (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
++ assert (isIntrinsic (n)) ;
++ outText (p, "throw") ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+- HALT
+- ELSE
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- outText (p, "throw") ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
+- outText (p, ')')
+- ELSE
+- HALT (* metaError0 ('expecting a single parameter to THROW') *)
+- END
+- END
++ doExprC (p, getExpList (n^.intrinsicF.args, 1))
++ END ;
++ outText (p, ')')
+ END doThrowC ;
+
+
+@@ -6026,18 +6195,25 @@ BEGIN
+ constexp : doUnary (p, '', unaryF.arg, unaryF.resultType, FALSE, FALSE) |
+ neg : doUnary (p, '-', unaryF.arg, unaryF.resultType, FALSE, FALSE) |
+ not : doUnary (p, '!', unaryF.arg, unaryF.resultType, FALSE, TRUE) |
+- adr : doUnary (p, '&', unaryF.arg, unaryF.resultType, TRUE, FALSE) |
+- size : doUnary (p, 'sizeof', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- tsize : doUnary (p, 'sizeof', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- trunc : doUnary (p, 'TRUNC', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- float : doUnary (p, 'FLOAT', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- ord : doUnary (p, 'ORD', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- chr : doUnary (p, 'CHR', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- cap : doUnary (p, 'CAP', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- high : doUnary (p, 'HIGH', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- re,
+- im,
+- cmplx : HALT (* should all be function calls. *) |
++ val : doValC (p, n) |
++ adr : doAdrC (p, n) |
++ size,
++ tsize : doSizeC (p, n) |
++ float : doConvertC (p, n, "(double)") |
++ trunc : doConvertC (p, n, "(int)") |
++ ord : doConvertC (p, n, "(unsigned int)") |
++ chr : doConvertC (p, n, "(char)") |
++ cap : doCapC (p, n) |
++ abs : doAbsC (p, n) |
++ high : doFuncHighC (p, n^.unaryF.arg) |
++ length : doLengthC (p, n) |
++ min : doMinC (p, n) |
++ max : doMaxC (p, n) |
++ throw : doThrowC (p, n) |
++ re : doReC (p, n) |
++ im : doImC (p, n) |
++ cmplx : doCmplx (p, n) |
++
+ deref : doDeRefC (p, unaryF.arg) |
+ equal : doBinary (p, '==', binaryF.left, binaryF.right, TRUE, TRUE, TRUE) |
+ notequal : doBinary (p, '!=', binaryF.left, binaryF.right, TRUE, TRUE, TRUE) |
+@@ -6048,7 +6224,6 @@ BEGIN
+ componentref : doComponentRefC (p, componentrefF.rec, componentrefF.field) |
+ pointerref : doPointerRefC (p, pointerrefF.ptr, pointerrefF.field) |
+ cast : doCastC (p, binaryF.left, binaryF.right) |
+- val : doPreBinary (p, 'VAL', binaryF.left, binaryF.right, TRUE, TRUE) |
+ plus : doPolyBinary (p, plus, binaryF.left, binaryF.right, FALSE, FALSE) |
+ sub : doPolyBinary (p, sub, binaryF.left, binaryF.right, FALSE, FALSE) |
+ div : doBinary (p, '/', binaryF.left, binaryF.right, TRUE, TRUE, FALSE) |
+@@ -6062,8 +6237,6 @@ BEGIN
+ const : doConstExpr (p, n) |
+ enumerationfield: doEnumerationField (p, n) |
+ string : doStringC (p, n) |
+- max : doUnary (p, 'MAX', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+- min : doUnary (p, 'MIN', unaryF.arg, unaryF.resultType, TRUE, TRUE) |
+ var : doVar (p, n) |
+ arrayref : doArrayRef (p, n) |
+ funccall : doFuncExprC (p, n) |
+@@ -8909,7 +9082,7 @@ BEGIN
+ setindent (p, getindent (p) + indentationC) ;
+ outText (p, "{} /* empty. */\n") ;
+ p := popPretty (p)
+- ELSIF isStatementSequence (s) AND isSingleStatement (s)
++ ELSIF isStatementSequence (s) AND isSingleStatement (s) AND (NOT forceCompoundStatement)
+ THEN
+ p := pushPretty (p) ;
+ setindent (p, getindent (p) + indentationC) ;
+@@ -8942,8 +9115,9 @@ BEGIN
+ doExprC (p, s^.elsifF.expr) ;
+ outText (p, ")\n") ;
+ assert ((s^.elsifF.else = NIL) OR (s^.elsifF.elsif = NIL)) ;
+- IF hasIfAndNoElse (s^.elsifF.then) AND
+- ((s^.elsifF.else # NIL) OR (s^.elsifF.elsif # NIL))
++ IF forceCompoundStatement OR
++ (hasIfAndNoElse (s^.elsifF.then) AND
++ ((s^.elsifF.else # NIL) OR (s^.elsifF.elsif # NIL)))
+ THEN
+ (* avoid dangling else. *)
+ p := pushPretty (p) ;
+@@ -8962,7 +9136,22 @@ BEGIN
+ IF containsStatement (s^.elsifF.else)
+ THEN
+ outText (p, "else\n") ;
+- doCompoundStmt (p, s^.elsifF.else)
++ IF forceCompoundStatement
++ THEN
++ (* avoid dangling else. *)
++ p := pushPretty (p) ;
++ setindent (p, getindent (p) + indentationC) ;
++ outText (p, "{\n") ;
++ p := pushPretty (p) ;
++ setindent (p, getindent (p) + indentationC) ;
++ outText (p, "/* avoid dangling else. */\n") ;
++ doStatementSequenceC (p, s^.elsifF.else) ;
++ p := popPretty (p) ;
++ outText (p, "}\n") ;
++ p := popPretty (p)
++ ELSE
++ doCompoundStmt (p, s^.elsifF.else)
++ END
+ ELSIF (s^.elsifF.elsif#NIL) AND isElsif (s^.elsifF.elsif)
+ THEN
+ doElsifC (p, s^.elsifF.elsif)
+@@ -9833,16 +10022,8 @@ END doAdrArgC ;
+
+ PROCEDURE doAdrC (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
+- THEN
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- doAdrArgC (p, getExpList (n^.funccallF.args, 1))
+- END
+- ELSE
+-
+- END
++ assert (isUnary (n)) ;
++ doAdrArgC (p, n^.unaryF.arg)
+ END doAdrC ;
+
+
+@@ -9852,7 +10033,7 @@ END doAdrC ;
+
+ PROCEDURE doInc (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
++ assert (isIntrinsic (n)) ;
+ IF lang = ansiCP
+ THEN
+ doIncDecCP (p, n, "+")
+@@ -9868,7 +10049,7 @@ END doInc ;
+
+ PROCEDURE doDec (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
++ assert (isIntrinsic (n)) ;
+ IF lang = ansiCP
+ THEN
+ doIncDecCP (p, n, "-")
+@@ -9884,18 +10065,18 @@ END doDec ;
+
+ PROCEDURE doIncDecC (p: pretty; n: node; op: ARRAY OF CHAR) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args # NIL
+ THEN
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
+ setNeedSpace (p) ;
+ outText (p, op) ;
+ setNeedSpace (p) ;
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ outText (p, '1')
+ ELSE
+- doExprC (p, getExpList (n^.funccallF.args, 2))
++ doExprC (p, getExpList (n^.intrinsicF.args, 2))
+ END
+ END
+ END doIncDecC ;
+@@ -9907,14 +10088,16 @@ END doIncDecC ;
+
+ PROCEDURE doIncDecCP (p: pretty; n: node; op: ARRAY OF CHAR) ;
+ VAR
++ lhs,
+ type: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args # NIL
+ THEN
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ lhs := getExpList (n^.intrinsicF.args, 1) ;
++ doExprC (p, lhs) ;
+ setNeedSpace (p) ;
+- type := getType (getExpList (n^.funccallF.args, 1)) ;
++ type := getType (lhs) ;
+ IF isPointer (type) OR (type = addressN)
+ THEN
+ (* cast to (char * ) and then back again after the arithmetic is complete. *)
+@@ -9924,15 +10107,15 @@ BEGIN
+ doTypeNameC (p, type) ;
+ noSpace (p) ;
+ outText (p, '> (reinterpret_cast<char *> (') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, lhs) ;
+ noSpace (p) ;
+ outText (p, ')') ;
+ outText (p, op) ;
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ outText (p, '1')
+ ELSE
+- doExprC (p, getExpList (n^.funccallF.args, 2))
++ doExprC (p, getExpList (n^.intrinsicF.args, 2))
+ END ;
+ outText (p, ')')
+ ELSIF isEnumeration (skipType (type))
+@@ -9941,25 +10124,25 @@ BEGIN
+ doTypeNameC (p, type) ;
+ noSpace (p) ;
+ outText (p, ">(static_cast<int>(") ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, lhs) ;
+ outText (p, ")") ;
+ outText (p, op) ;
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ outText (p, '1')
+ ELSE
+- doExprC (p, getExpList (n^.funccallF.args, 2))
++ doExprC (p, getExpList (n^.intrinsicF.args, 2))
+ END ;
+ outText (p, ")")
+ ELSE
+ outText (p, op) ;
+ outText (p, "=") ;
+ setNeedSpace (p) ;
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ outText (p, '1')
+ ELSE
+- doExprC (p, getExpList (n^.funccallF.args, 2))
++ doExprC (p, getExpList (n^.intrinsicF.args, 2))
+ END
+ END
+ END
+@@ -9974,13 +10157,13 @@ PROCEDURE doInclC (p: pretty; n: node) ;
+ VAR
+ lo: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args # NIL
+ THEN
+- IF expListLen (n^.funccallF.args) = 2
++ IF expListLen (n^.intrinsicF.args) = 2
+ THEN
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
+- lo := getSetLow (getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
++ lo := getSetLow (getExpList (n^.intrinsicF.args, 1)) ;
+ setNeedSpace (p) ;
+ outText (p, '|=') ;
+ setNeedSpace (p) ;
+@@ -9989,7 +10172,7 @@ BEGIN
+ outText (p, '<<') ;
+ setNeedSpace (p) ;
+ outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 2)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) ;
+ doSubtractC (p, lo) ;
+ setNeedSpace (p) ;
+ outText (p, '))')
+@@ -10008,13 +10191,13 @@ PROCEDURE doExclC (p: pretty; n: node) ;
+ VAR
+ lo: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args # NIL
+ THEN
+- IF expListLen (n^.funccallF.args) = 2
++ IF expListLen (n^.intrinsicF.args) = 2
+ THEN
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
+- lo := getSetLow (getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
++ lo := getSetLow (getExpList (n^.intrinsicF.args, 1)) ;
+ setNeedSpace (p) ;
+ outText (p, '&=') ;
+ setNeedSpace (p) ;
+@@ -10023,7 +10206,7 @@ BEGIN
+ outText (p, '<<') ;
+ setNeedSpace (p) ;
+ outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 2)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 2)) ;
+ doSubtractC (p, lo) ;
+ setNeedSpace (p) ;
+ outText (p, ')))')
+@@ -10042,12 +10225,12 @@ PROCEDURE doNewC (p: pretty; n: node) ;
+ VAR
+ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args = NIL
+ THEN
+ HALT
+ ELSE
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ keyc.useStorage ;
+ outText (p, 'Storage_ALLOCATE') ;
+@@ -10055,10 +10238,10 @@ BEGIN
+ outText (p, '((void **)') ;
+ setNeedSpace (p) ;
+ outText (p, '&') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
+ outText (p, ',') ;
+ setNeedSpace (p) ;
+- t := skipType (getType (getExpList (n^.funccallF.args, 1))) ;
++ t := skipType (getType (getExpList (n^.intrinsicF.args, 1))) ;
+ IF isPointer (t)
+ THEN
+ t := getType (t) ;
+@@ -10084,12 +10267,12 @@ PROCEDURE doDisposeC (p: pretty; n: node) ;
+ VAR
+ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
++ assert (isIntrinsic (n)) ;
++ IF n^.intrinsicF.args = NIL
+ THEN
+ HALT
+ ELSE
+- IF expListLen (n^.funccallF.args) = 1
++ IF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ keyc.useStorage ;
+ outText (p, 'Storage_DEALLOCATE') ;
+@@ -10097,10 +10280,10 @@ BEGIN
+ outText (p, '((void **)') ;
+ setNeedSpace (p) ;
+ outText (p, '&') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
+ outText (p, ',') ;
+ setNeedSpace (p) ;
+- t := skipType (getType (getExpList (n^.funccallF.args, 1))) ;
++ t := skipType (getType (getExpList (n^.intrinsicF.args, 1))) ;
+ IF isPointer (t)
+ THEN
+ t := getType (t) ;
+@@ -10126,22 +10309,17 @@ END doDisposeC ;
+
+ PROCEDURE doCapC (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
++ assert (isUnary (n)) ;
++ IF n^.unaryF.arg = NIL
+ THEN
+- HALT
++ HALT (* metaError0 ('expecting a single parameter to CAP') *)
+ ELSE
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- keyc.useCtype ;
+- outText (p, 'toupper') ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
+- outText (p, ')')
+- ELSE
+- HALT (* metaError0 ('expecting a single parameter to CAP') *)
+- END
++ keyc.useCtype ;
++ outText (p, 'toupper') ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ')')
+ END
+ END doCapC ;
+
+@@ -10151,29 +10329,21 @@ END doCapC ;
+ *)
+
+ PROCEDURE doLengthC (p: pretty; n: node) ;
+-VAR
+- v: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
++ assert (isUnary (n)) ;
++ IF n^.unaryF.arg = NIL
+ THEN
+- HALT
++ HALT (* metaError0 ('expecting a single parameter to LENGTH') *)
+ ELSE
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- keyc.useM2RTS ;
+- outText (p, 'M2RTS_Length') ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- v := getExpList (n^.funccallF.args, 1) ;
+- doExprC (p, v) ;
+- outText (p, ',') ;
+- setNeedSpace (p) ;
+- doFuncHighC (p, v) ;
+- outText (p, ')')
+- ELSE
+- HALT (* metaError0 ('expecting a single parameter to LENGTH') *)
+- END
++ keyc.useM2RTS ;
++ outText (p, 'M2RTS_Length') ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ',') ;
++ setNeedSpace (p) ;
++ doFuncHighC (p, n^.unaryF.arg) ;
++ outText (p, ')')
+ END
+ END doLengthC ;
+
+@@ -10186,12 +10356,12 @@ PROCEDURE doAbsC (p: pretty; n: node) ;
+ VAR
+ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1)
++ assert (isUnary (n)) ;
++ IF n^.unaryF.arg = NIL
+ THEN
+- t := getExprType (n)
+- ELSE
+ HALT
++ ELSE
++ t := getExprType (n)
+ END ;
+ IF t = longintN
+ THEN
+@@ -10216,7 +10386,9 @@ BEGIN
+ HALT
+ END ;
+ setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE)
++ outText (p, "(") ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ")")
+ END doAbsC ;
+
+
+@@ -10226,24 +10398,14 @@ END doAbsC ;
+
+ PROCEDURE doValC (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
+- THEN
+- HALT
+- ELSE
+- IF expListLen (n^.funccallF.args) = 2
+- THEN
+- outText (p, '(') ;
+- doTypeNameC (p, getExpList (n^.funccallF.args, 1)) ;
+- outText (p, ')') ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 2)) ;
+- outText (p, ')')
+- ELSE
+- HALT
+- END
+- END
++ assert (isBinary (n)) ;
++ outText (p, '(') ;
++ doTypeNameC (p, n^.binaryF.left) ;
++ outText (p, ')') ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ doExprC (p, n^.binaryF.right) ;
++ outText (p, ')')
+ END doValC ;
+
+
+@@ -10253,22 +10415,11 @@ END doValC ;
+
+ PROCEDURE doMinC (p: pretty; n: node) ;
+ VAR
+- t, a: node ;
++ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
+- THEN
+- HALT
+- ELSE
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- a := getExpList (n^.funccallF.args, 1) ;
+- t := getExprType (a) ;
+- doExprC (p, getMin (t)) ;
+- ELSE
+- HALT
+- END
+- END
++ assert (isUnary (n)) ;
++ t := getExprType (n^.unaryF.arg) ;
++ doExprC (p, getMin (t)) ;
+ END doMinC ;
+
+
+@@ -10278,62 +10429,34 @@ END doMinC ;
+
+ PROCEDURE doMaxC (p: pretty; n: node) ;
+ VAR
+- t, a: node ;
++ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args = NIL
+- THEN
+- HALT
+- ELSE
+- IF expListLen (n^.funccallF.args) = 1
+- THEN
+- a := getExpList (n^.funccallF.args, 1) ;
+- t := getExprType (a) ;
+- doExprC (p, getMax (t)) ;
+- ELSE
+- HALT
+- END
+- END
++ assert (isUnary (n)) ;
++ t := getExprType (n^.unaryF.arg) ;
++ doExprC (p, getMax (t)) ;
+ END doMaxC ;
+
+
+ (*
+- isIntrinsic - returns if, n, is an instrinsic procedure.
++ isIntrinsic - returns if, n, is an intrinsic procedure.
++ The intrinsic functions are represented as unary and binary nodes.
+ *)
+
+ PROCEDURE isIntrinsic (n: node) : BOOLEAN ;
+ BEGIN
+- CASE n^.funccallF.function^.kind OF
++ CASE n^.kind OF
+
+- halt,
+- max,
+- min,
+- cast,
+- val,
+- adr,
+- size,
+- tsize,
+- float,
+- trunc,
+- ord,
+- chr,
+- cap,
+- abs,
+- im,
+- re,
+- cmplx,
+- high,
++ throw,
+ inc,
+ dec,
+ incl,
+ excl,
+ new,
+ dispose,
+- length,
+- throw : RETURN TRUE
++ halt : RETURN TRUE
+
+ ELSE
+- RETURN isFuncCall (n) AND (n^.funccallF.function = haltN)
++ RETURN FALSE
+ END
+ END isIntrinsic ;
+
+@@ -10344,18 +10467,18 @@ END isIntrinsic ;
+
+ PROCEDURE doHalt (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF (n^.funccallF.args = NIL) OR (expListLen (n^.funccallF.args) = 0)
++ assert (n^.kind = halt) ;
++ IF (n^.intrinsicF.args = NIL) OR (expListLen (n^.intrinsicF.args) = 0)
+ THEN
+ outText (p, 'M2RTS_HALT') ;
+ setNeedSpace (p) ;
+ outText (p, '(-1)')
+- ELSIF expListLen (n^.funccallF.args) = 1
++ ELSIF expListLen (n^.intrinsicF.args) = 1
+ THEN
+ outText (p, 'M2RTS_HALT') ;
+ setNeedSpace (p) ;
+ outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
++ doExprC (p, getExpList (n^.intrinsicF.args, 1)) ;
+ outText (p, ')')
+ END
+ END doHalt ;
+@@ -10369,10 +10492,10 @@ PROCEDURE doReC (p: pretty; n: node) ;
+ VAR
+ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1)
++ assert (n^.kind = re) ;
++ IF n^.unaryF.arg # NIL
+ THEN
+- t := getExprType (n)
++ t := getExprType (n^.unaryF.arg)
+ ELSE
+ HALT
+ END ;
+@@ -10384,7 +10507,9 @@ BEGIN
+ HALT
+ END ;
+ setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE)
++ outText (p, '(') ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ')')
+ END doReC ;
+
+
+@@ -10396,10 +10521,10 @@ PROCEDURE doImC (p: pretty; n: node) ;
+ VAR
+ t: node ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF (n^.funccallF.args # NIL) AND (expListLen (n^.funccallF.args) = 1)
++ assert (n^.kind = im) ;
++ IF n^.unaryF.arg # NIL
+ THEN
+- t := getExprType (n)
++ t := getExprType (n^.unaryF.arg)
+ ELSE
+ HALT
+ END ;
+@@ -10411,7 +10536,9 @@ BEGIN
+ HALT
+ END ;
+ setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE)
++ outText (p, '(') ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ')')
+ END doImC ;
+
+
+@@ -10421,32 +10548,22 @@ END doImC ;
+
+ PROCEDURE doCmplx (p: pretty; n: node) ;
+ BEGIN
+- assert (isFuncCall (n)) ;
+- IF n^.funccallF.args # NIL
+- THEN
+- IF expListLen (n^.funccallF.args) = 2
+- THEN
+- keyc.useComplex ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 1)) ;
+- outText (p, ')') ;
+- setNeedSpace (p) ;
+- outText (p, '+') ;
+- setNeedSpace (p) ;
+- outText (p, '(') ;
+- doExprC (p, getExpList (n^.funccallF.args, 2)) ;
+- setNeedSpace (p) ;
+- outText (p, '*') ;
+- setNeedSpace (p) ;
+- outText (p, 'I') ;
+- outText (p, ')') ;
+- ELSE
+- HALT (* metaError0 ('expecting two parameters to CMPLX') *)
+- END
+- ELSE
+- HALT (* metaError0 ('expecting two parameters to CMPLX') *)
+- END
++ assert (isBinary (n)) ;
++ keyc.useComplex ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ doExprC (p, n^.binaryF.left) ;
++ outText (p, ')') ;
++ setNeedSpace (p) ;
++ outText (p, '+') ;
++ setNeedSpace (p) ;
++ outText (p, '(') ;
++ doExprC (p, n^.binaryF.right) ;
++ setNeedSpace (p) ;
++ outText (p, '*') ;
++ setNeedSpace (p) ;
++ outText (p, 'I') ;
++ outText (p, ')')
+ END doCmplx ;
+
+
+@@ -10456,53 +10573,110 @@ END doCmplx ;
+
+ PROCEDURE doIntrinsicC (p: pretty; n: node) ;
+ BEGIN
+- IF n^.funccallF.function = haltN
+- THEN
+- doHalt (p, n)
+- ELSE
+- CASE n^.funccallF.function^.kind OF
++ assert (isIntrinsic (n)) ;
++ doCommentC (p, n^.intrinsicF.intrinsicComment.body) ;
++ CASE n^.kind OF
+
+- halt: doHalt (p, n) |
+- val: doValC (p, n) |
+- adr: doAdrC (p, n) |
+- size,
+- tsize: outText (p, "sizeof") ;
+- setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE) |
+- float: outText (p, "(double)") ;
+- setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE) |
+- trunc: outText (p, "(int)") ;
+- setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE) |
+- ord: outText (p, "(unsigned int)") ;
+- setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE) |
+- chr: outText (p, "(char)") ;
+- setNeedSpace (p) ;
+- doFuncArgsC (p, n, NIL, TRUE) |
+- cap: doCapC (p, n) |
+- abs: doAbsC (p, n) |
+- high: doFuncHighC (p, getExpList (n^.funccallF.args, 1)) |
+- inc: doInc (p, n) |
+- dec: doDec (p, n) |
+- incl: doInclC (p, n) |
+- excl: doExclC (p, n) |
+- new: doNewC (p, n) |
+- dispose: doDisposeC (p, n) |
+- length: doLengthC (p, n) |
+- min: doMinC (p, n) |
+- max: doMaxC (p, n) |
+- throw: doThrowC (p, n) |
+- re: doReC (p, n) |
+- im: doImC (p, n) |
+- cmplx: doCmplx (p, n)
++ throw: doThrowC (p, n) |
++ halt: doHalt (p, n) |
++ inc: doInc (p, n) |
++ dec: doDec (p, n) |
++ incl: doInclC (p, n) |
++ excl: doExclC (p, n) |
++ new: doNewC (p, n) |
++ dispose: doDisposeC (p, n)
+
+- END
+- END
++ END ;
++ outText (p, ";") ;
++ doAfterCommentC (p, n^.intrinsicF.intrinsicComment.after)
+ END doIntrinsicC ;
+
+
++(*
++ isIntrinsicFunction - returns true if, n, is an instrinsic function.
++*)
++
++PROCEDURE isIntrinsicFunction (n: node) : BOOLEAN ;
++BEGIN
++ CASE n^.kind OF
++
++ val,
++ adr,
++ size,
++ tsize,
++ float,
++ trunc,
++ ord,
++ chr,
++ cap,
++ abs,
++ high,
++ length,
++ min,
++ max,
++ throw,
++ re,
++ im,
++ cmplx: RETURN TRUE
++
++ ELSE
++ RETURN FALSE
++ END
++END isIntrinsicFunction ;
++
++
++(*
++ doSizeC -
++*)
++
++PROCEDURE doSizeC (p: pretty; n: node) ;
++BEGIN
++ assert (isUnary (n)) ;
++ outText (p, "sizeof (") ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, ")")
++END doSizeC ;
++
++
++(*
++ doConvertC -
++*)
++
++PROCEDURE doConvertC (p: pretty; n: node; conversion: ARRAY OF CHAR) ;
++BEGIN
++ assert (isUnary (n)) ;
++ setNeedSpace (p) ;
++ outText (p, "(") ;
++ outText (p, conversion) ;
++ setNeedSpace (p) ;
++ outText (p, "(") ;
++ doExprC (p, n^.unaryF.arg) ;
++ outText (p, "))")
++END doConvertC ;
++
++
++(* not needed?
++ val: doValC (p, n) |
++ adr: doAdrC (p, n) |
++ size,
++ tsize: doSizeC (p, n) |
++ float: doConvertC (p, n, "(double)") |
++ trunc: doConvertC (p, n, "(int)") |
++ ord: doConvertC (p, n, "(unsigned int)") |
++ chr: doConvertC (p, n, "(char)") |
++ cap: doCapC (p, n) |
++ abs: doAbsC (p, n) |
++ high: doFuncHighC (p, n^.unaryF.arg, 1)) |
++ length: doLengthC (p, n) |
++ min: doMinC (p, n) |
++ max: doMaxC (p, n) |
++ throw: doThrowC (p, n) |
++ re: doReC (p, n) |
++ im: doImC (p, n) |
++ cmplx: doCmplx (p, n)
++*)
++
++
+ (*
+ getFuncFromExpr -
+ *)
+@@ -10526,10 +10700,7 @@ VAR
+ t: node ;
+ BEGIN
+ assert (isFuncCall (n)) ;
+- IF isIntrinsic (n)
+- THEN
+- doIntrinsicC (p, n)
+- ELSIF isProcedure (n^.funccallF.function)
++ IF isProcedure (n^.funccallF.function)
+ THEN
+ doFQDNameC (p, n^.funccallF.function, TRUE) ;
+ setNeedSpace (p) ;
+@@ -11013,6 +11184,9 @@ BEGIN
+ ELSIF isWhile (s)
+ THEN
+ doWhileC (p, s)
++ ELSIF isIntrinsic (s)
++ THEN
++ doIntrinsicC (p, s)
+ ELSIF isFuncCall (s)
+ THEN
+ doFuncCallC (p, s)
+@@ -11097,7 +11271,7 @@ END includeParameters ;
+
+ PROCEDURE isHalt (n: node) : BOOLEAN ;
+ BEGIN
+- RETURN (n^.funccallF.function = haltN) OR (n^.funccallF.function^.kind = halt)
++ RETURN n^.kind = halt
+ END isHalt ;
+
+
+@@ -12130,6 +12304,10 @@ BEGIN
+ (* expressions. *)
+ componentref : RETURN walkComponentRef (l, n) |
+ pointerref : RETURN walkPointerRef (l, n) |
++ not,
++ abs,
++ min,
++ max,
+ chr,
+ cap,
+ ord,
+@@ -12215,6 +12393,7 @@ END tryCompleteFromPartial ;
+
+ PROCEDURE visitUnary (v: alist; n: node; p: nodeProcedure) ;
+ BEGIN
++ assert (isUnary (n)) ;
+ WITH n^.unaryF DO
+ visitNode (v, arg, p) ;
+ visitNode (v, resultType, p)
+@@ -12848,6 +13027,17 @@ BEGIN
+ END visitSetValue ;
+
+
++(*
++ visitIntrinsic -
++*)
++
++PROCEDURE visitIntrinsic (v: alist; n: node; p: nodeProcedure) ;
++BEGIN
++ assert (isIntrinsic (n)) ;
++ visitNode (v, n^.intrinsicF.args, p)
++END visitIntrinsic ;
++
++
+ (*
+ visitDependants - helper procedure function called from visitNode.
+ node n has just been visited, this procedure will
+@@ -12866,14 +13056,15 @@ BEGIN
+ return : visitReturn (v, n, p) |
+ stmtseq : visitStmtSeq (v, n, p) |
+ comment : |
+- halt : (* handled in funccall. *) |
+- new : (* handled in funccall. *) |
+- dispose : (* handled in funccall. *) |
+- length : (* handled in funccall. *) |
+- inc : (* handled in funccall. *) |
+- dec : (* handled in funccall. *) |
+- incl : (* handled in funccall. *) |
+- excl : (* handled in funccall. *) |
++ throw,
++ halt,
++ new,
++ dispose,
++ length,
++ inc,
++ dec,
++ incl,
++ excl : visitIntrinsic (v, n, p) |
+ boolean : visitBoolean (v, n, p) |
+ nil,
+ false,
+@@ -12962,29 +13153,28 @@ BEGIN
+ div,
+ mod,
+ mult,
+- divide : visitBinary (v, n, p) |
+- re,
+- im,
+- abs,
+- chr,
+- cap,
+- high,
+- ord,
+- float,
+- trunc,
+- not,
+- neg,
+- adr,
+- size,
+- tsize,
+- min,
+- max,
+- throw,
+- constexp,
+- deref : visitUnary (v, n, p) |
+- identlist : |
+- vardecl : visitVarDecl (v, n, p) |
+- setvalue : visitSetValue (v, n, p)
++ divide : visitBinary (v, n, p) |
++ re : visitUnary (v, n, p) |
++ im : visitUnary (v, n, p) |
++ abs : visitUnary (v, n, p) |
++ chr : visitUnary (v, n, p) |
++ cap : visitUnary (v, n, p) |
++ high : visitUnary (v, n, p) |
++ ord : visitUnary (v, n, p) |
++ float : visitUnary (v, n, p) |
++ trunc : visitUnary (v, n, p) |
++ not : visitUnary (v, n, p) |
++ neg : visitUnary (v, n, p) |
++ adr : visitUnary (v, n, p) |
++ size : visitUnary (v, n, p) |
++ tsize : visitUnary (v, n, p) |
++ min : visitUnary (v, n, p) |
++ max : visitUnary (v, n, p) |
++ constexp : visitUnary (v, n, p) |
++ deref : visitUnary (v, n, p) |
++ identlist : |
++ vardecl : visitVarDecl (v, n, p) |
++ setvalue : visitSetValue (v, n, p)
+
+ END
+ END visitDependants ;
+@@ -14885,6 +15075,14 @@ PROCEDURE addGenericBody (n, c: node);
+ BEGIN
+ CASE n^.kind OF
+
++ throw,
++ halt,
++ new,
++ dispose,
++ inc,
++ dec,
++ incl,
++ excl : n^.intrinsicF.intrinsicComment.body := c |
+ funccall : n^.funccallF.funccallComment.body := c |
+ return : n^.returnF.returnComment.body := c |
+ assignment: n^.assignmentF.assignComment.body := c |
+@@ -14906,6 +15104,14 @@ PROCEDURE addGenericAfter (n, c: node);
+ BEGIN
+ CASE n^.kind OF
+
++ throw,
++ halt,
++ new,
++ dispose,
++ inc,
++ dec,
++ incl,
++ excl : n^.intrinsicF.intrinsicComment.after := c |
+ funccall : n^.funccallF.funccallComment.after := c |
+ return : n^.returnF.returnComment.after := c |
+ assignment: n^.assignmentF.assignComment.after := c |
+@@ -15892,7 +16098,6 @@ BEGIN
+ float,
+ trunc,
+ ord,
+- throw,
+ not,
+ neg,
+ adr,
+--- a/src/gcc/gm2/tools-src/array2index.py
++++ b/src/gcc/gm2/tools-src/array2index.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2010
+ # Free Software Foundation, Inc.
+@@ -35,7 +35,7 @@ lines = [] # global copy of the input lines of text.
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -43,7 +43,7 @@ def printf (format, *args):
+ #
+
+ def fatal (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+ os.sys.exit(1)
+
+ #
+@@ -51,7 +51,7 @@ def fatal (format, *args):
+ #
+
+ def debug(s):
+- print "*", s, "*"
++ print("*", s, "*")
+
+ #
+ # putNext - pushes, i, to be the next line read when
+@@ -164,20 +164,20 @@ def setVarIndent (v, n):
+ #
+
+ def adjustVar (v, d):
+- print v, d
++ print(v, d)
+ if d != {}:
+ if v == []:
+ h = ['VAR\n']
+ t = []
+- if d.has_key('pCall'):
++ if 'pCall' in d:
+ v = h + [' pCall: PtrToCallFrame ;\n'] + t
+- if d.has_key('pSym'):
++ if 'pSym' in d:
+ v = h + [' pSym: PtrToSymbol ;\n'] + t
+ else:
+ h = v[0]
+- if d.has_key('pCall'):
++ if 'pCall' in d:
+ v = [h] + [' pCall: PtrToCallFrame ;\n'] + v[1:]
+- if d.has_key('pSym'):
++ if 'pSym' in d:
+ v = [h] + [' pSym: PtrToSymbol ;\n'] + v[1:]
+ v = setVarIndent(v, getMaxIndent(v))
+ return v
+@@ -212,7 +212,7 @@ def scanStatements ():
+ n = getIndent(i)
+ y = i.find('[', x)+1
+ z = i.find(']', y)
+- print "indexing ", i[y:z]
++ print("indexing ", i[y:z])
+ d['pSym'] = i[y:z]
+ j = n * ' '
+ j += 'pSym := GetPsym(%s) ;\n' % i[y:z]
+@@ -224,7 +224,7 @@ def scanStatements ():
+ n = getIndent(i)
+ y = i.find('[', x)+1
+ z = i.find(']', y)
+- print "indexing ", i[y:z]
++ print("indexing ", i[y:z])
+ d['pCall'] = i[y:z]
+ j = n * ' '
+ j += 'pCall := GetPcall(%s) ;\n' % i[y:z]
+@@ -262,7 +262,7 @@ def scanProcedure ():
+ if isVar(i):
+ v = [i]
+ v += scanVar()
+- print v
++ print(v)
+ elif isBegin(i):
+ s, d = scanStatements()
+ v = adjustVar(v, d)
+@@ -289,7 +289,7 @@ def scanLines (l):
+ while not isEof(i):
+ o += i
+ if isProcedure(i):
+- print i
++ print(i)
+ o += scanProcedure()
+ i = getNext()
+ return o
+@@ -300,7 +300,7 @@ def scanLines (l):
+ #
+
+ def Usage():
+- print "array2index.py [-h][-o outputfile] inputfile"
++ print("array2index.py [-h][-o outputfile] inputfile")
+
+
+ #
+--- a/src/gcc/gm2/tools-src/buildsyntax
++++ b/src/gcc/gm2/tools-src/buildsyntax
+@@ -8,21 +8,21 @@
+ # 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.
+-#
++#
+ # GNU Modula-2 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 GNU Modula-2; see the file COPYING. If not, write to the
+ # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# 02110-1301, USA.
+ #
+
+ TMPFILE=/tmp/t.$$
+
+-function buildpass1 () {
++buildpass1 () {
+ if [ -x ../bin3/pg ] ; then
+ if ../bin3/pg ../bnf/m2.bnf > $TMPFILE ; then
+ cat $TMPFILE | sed -e "s/WHICHPASS1/TRUE/" > P1SyntaxCheck.mod
+@@ -36,7 +36,7 @@ function buildpass1 () {
+ fi
+ }
+
+-function buildpass2 () {
++buildpass2 () {
+ if [ -x ../bin3/pg ] ; then
+ if ../bin3/pg ../bnf/m2-2.bnf > $TMPFILE ; then
+ cat $TMPFILE | sed -e "s/WHICHPASS2/TRUE/" > P2Build.mod
+@@ -50,7 +50,7 @@ function buildpass2 () {
+ fi
+ }
+
+-function buildpass3 () {
++buildpass3 () {
+ if [ -x ../bin3/pg ] ; then
+ if ../bin3/pg ../bnf/m2-3.bnf > $TMPFILE ; then
+ cat $TMPFILE | sed -e "s/WHICHPASS3/TRUE/" > P3Build.mod
+@@ -64,7 +64,7 @@ function buildpass3 () {
+ fi
+ }
+
+-function buildpassH () {
++buildpassH () {
+ if [ -x ../bin3/pg ] ; then
+ if ../bin3/pg ../bnf/m2-h.bnf > $TMPFILE ; then
+ cat $TMPFILE | sed -e "s/WHICHPASS3/TRUE/" > PHBuild.mod
+@@ -82,7 +82,7 @@ function buildpassH () {
+ # buildsyntax - build the pass 1 parser with error recovery
+ #
+
+-function buildsyntax () {
++buildsyntax () {
+ buildpass1
+ buildpass2
+ buildpass3
+--- a/src/gcc/gm2/tools-src/def2texi.py
++++ b/src/gcc/gm2/tools-src/def2texi.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008 2009,
+ # 2010
+@@ -9,22 +9,21 @@
+ # 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.
+-#
++#
+ # GNU Modula-2 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 GNU Modula-2; see the file COPYING. If not, write to the
+ # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# 02110-1301, USA.
+ #
+
+ import sys
+ import os
+ import glob
+-import string
+ import getopt
+
+ libraryClassifications = [['gm2-libs','Base libraries',
+@@ -59,12 +58,12 @@ def displayLibraryClass():
+ l = libraryClassifications[i]
+
+ while True:
+- print "@node " + l[1] + ", " + next + ", " + previous + ", " + up
+- print "@section " + l[1]
+- print ""
++ print("@node " + l[1] + ", " + next + ", " + previous + ", " + up)
++ print("@section " + l[1])
++ print("")
+ displayModules(l[1], l[0], buildDir, sourceDir)
+- print ""
+- print "@c ---------------------------------------------------------------------"
++ print("")
++ print("@c ---------------------------------------------------------------------")
+ previous = l[1]
+ i += 1
+ if i == len(libraryClassifications):
+@@ -80,14 +79,14 @@ def displayLibraryClass():
+ #
+
+ def displayMenu():
+- print "@menu"
++ print("@menu")
+ for l in libraryClassifications:
+- print "* " + l[1] + "::" + l[2]
+- print "@end menu"
++ print("* " + l[1] + "::" + l[2])
++ print("@end menu")
+
+- print "\n"
+- print "@c ====================================================================="
+- print "\n"
++ print("\n")
++ print("@c =====================================================================")
++ print("\n")
+
+
+ #
+@@ -95,39 +94,38 @@ def displayMenu():
+ #
+
+ def removeInitialComments (file, line):
+- while (string.find(line, "*)") == -1):
++ while (line.find("*)") == -1):
+ line = file.readline()
+-
++
+ #
+ # removeFields - removes Author/Date/Last edit/SYSTEM/Revision fields from a comment within the start
+ # of a definition module
+ #
+
+ def removeFields (file, line):
+- while (string.find(line, "*)") == -1):
+- if (string.find(line, "Author") != -1) and (string.find(line, ":") != -1):
++ while (line.find("*)") == -1):
++ if (line.find("Author") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "Last edit") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("Last edit") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "LastEdit") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("LastEdit") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "Last update") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("Last update") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "Date") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("Date") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "Title") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("Title") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "Revision") != -1) and (string.find(line, ":") != -1):
++ elif (line.find("Revision") != -1) and (line.find(":") != -1):
+ line = file.readline()
+- elif (string.find(line, "System") != -1) and (string.find(line, ":") != -1) and (string.find(line, "Description:") == -1):
++ elif (line.find("System") != -1) and (line.find(":") != -1) and (line.find("Description:") == -1):
+ line = file.readline()
+- elif (string.find(line, "SYSTEM") != -1) and (string.find(line, ":") != -1) and (string.find(line, "Description:") == -1):
++ elif (line.find("SYSTEM") != -1) and (line.find(":") != -1) and (line.find("Description:") == -1):
+ line = file.readline()
+ else:
+- print string.replace(string.replace(string.rstrip(line),
+- "{", "@{"), "}", "@}")
++ print(line.rstrip().replace("{", "@{").replace("}", "@}"))
+ line = file.readline()
+- print string.rstrip(line)
++ print(line.rstrip())
+
+
+ #
+@@ -136,8 +134,8 @@ def removeFields (file, line):
+
+ def checkIndex (line):
+ global inVar, inType, inConst
+-
+- words = string.split(line)
++
++ words = line.split()
+ procedure = ""
+ if (len(words)>1) and (words[0] == "PROCEDURE"):
+ inConst = False
+@@ -168,48 +166,48 @@ def checkIndex (line):
+ inVar = False
+
+ if inVar:
+- words = string.split(line, ',')
++ words = line.split(',')
+ for word in words:
+- word = string.lstrip(word)
++ word = word.lstrip()
+ if word != "":
+- if string.find(word, ':') == -1:
+- print "@findex " + word + " (var)"
++ if word.find(':') == -1:
++ print("@findex " + word + " (var)")
+ elif len(word)>0:
+- var = string.split(word, ':')
++ var = word.split(':')
+ if len(var)>0:
+- print "@findex " + var[0] + " (var)"
++ print("@findex " + var[0] + " (var)")
+
+ if inType:
+- words = string.lstrip(line)
+- if string.find(words, '=') != -1:
+- word = string.split(words, "=")
++ words = line.lstrip()
++ if words.find('=') != -1:
++ word = words.split("=")
+ if (len(word[0])>0) and (word[0][0] != '_'):
+- print "@findex " + string.rstrip(word[0]) + " (type)"
++ print("@findex " + word[0].rstrip() + " (type)")
+ else:
+- word = string.split(words)
++ word = words.split()
+ if (len(word)>1) and (word[1] == ';'):
+ # hidden type
+ if (len(word[0])>0) and (word[0][0] != '_'):
+- print "@findex " + string.rstrip(word[0]) + " (type)"
++ print("@findex " + word[0].rstrip() + " (type)")
+
+ if inConst:
+- words = string.split(line, ';')
++ words = line.split(';')
+ for word in words:
+- word = string.lstrip(word)
++ word = word.lstrip()
+ if word != "":
+- if string.find(word, '=') != -1:
+- var = string.split(word, '=')
++ if word.find('=') != -1:
++ var = word.split('=')
+ if len(var)>0:
+- print "@findex " + var[0] + " (const)"
++ print("@findex " + var[0] + " (const)")
+
+ if procedure != "":
+- name = string.split(procedure, "(")
++ name = procedure.split("(")
+ if name[0] != "":
+ proc = name[0]
+ if proc[-1] == ";":
+ proc = proc[:-1]
+ if proc != "":
+- print "@findex " + proc
++ print("@findex " + proc)
+
+
+ #
+@@ -217,40 +215,39 @@ def checkIndex (line):
+ #
+
+ def parseDefinition (dir, source, build, file, needPage):
+- print ""
++ print("")
+ f = open(findFile(dir, build, source, file), 'r')
+ initState()
+ line = f.readline()
+- while (string.find(line, "(*") != -1):
++ while (line.find("(*") != -1):
+ removeInitialComments(f, line)
+ line = f.readline()
+
+- while (string.find(line, "DEFINITION") == -1):
++ while (line.find("DEFINITION") == -1):
+ line = f.readline()
+
+- print "@example"
+- print string.rstrip(line)
++ print("@example")
++ print(line.rstrip())
+ line = f.readline()
+- if len(string.rstrip(line)) == 0:
+- print string.replace(string.replace(string.rstrip(line),
+- "{", "@{"), "}", "@}")
++ if len(line.rstrip()) == 0:
++ print(line.rstrip().replace("{", "@{").replace("}", "@}"))
+ line = f.readline()
+- if (string.find(line, "(*") != -1):
++ if (line.find("(*") != -1):
+ removeFields(f, line)
+ else:
+- print string.rstrip(line)
++ print(line.rstrip())
+ else:
+- print string.rstrip(line)
++ print(line.rstrip())
+
+ line = f.readline()
+ while line:
+- line = string.rstrip(line)
+- checkIndex(line)
+- print string.replace(string.replace(line, "{", "@{"), "}", "@}")
++ line = line.rstrip()
++ checkIndex(line)
++ print(line.replace("{", "@{").replace("}", "@}"))
+ line = f.readline()
+- print "@end example"
++ print("@end example")
+ if needPage:
+- print "@page"
++ print("@page")
+ f.close()
+
+ def parseModules (up, dir, build, source, listOfModules):
+@@ -262,10 +259,10 @@ def parseModules (up, dir, build, source, listOfModules):
+ next = ""
+
+ while i<len(listOfModules):
+- print "@node " + dir + "/" + listOfModules[i][:-4] + ", " + next + ", " + previous + ", " + up
+- print "@subsection " + dir + "/" + listOfModules[i][:-4]
++ print("@node " + dir + "/" + listOfModules[i][:-4] + ", " + next + ", " + previous + ", " + up)
++ print("@subsection " + dir + "/" + listOfModules[i][:-4])
+ parseDefinition(dir, source, build, listOfModules[i], True)
+- print "\n"
++ print("\n")
+ previous = dir + "/" + listOfModules[i][:-4]
+ i = i + 1
+ if i+1<len(listOfModules):
+@@ -282,7 +279,7 @@ def doCat (name):
+ file = open(name, 'r')
+ line = file.readline()
+ while line:
+- print string.rstrip(line)
++ print(line.rstrip())
+ line = file.readline()
+ file.close()
+
+@@ -293,20 +290,20 @@ def doCat (name):
+ #
+
+ def moduleMenu (dir, build, source):
+- print "@menu"
++ print("@menu")
+ listOfFiles = []
+ if os.path.exists(os.path.join(source, dir)):
+ listOfFiles += os.listdir(os.path.join(source, dir))
+ if os.path.exists(os.path.join(source, dir)):
+ listOfFiles += os.listdir(os.path.join(build, dir))
+- listOfFiles = dict.fromkeys(listOfFiles).keys()
++ listOfFiles = list(dict.fromkeys(listOfFiles).keys())
+ listOfFiles.sort()
+ for file in listOfFiles:
+ if foundFile(dir, build, source, file):
+ if (len(file)>4) and (file[-4:] == '.def'):
+- print "* " + dir + "/" + file[:-4] + "::" + file
+- print "@end menu"
+- print "\n"
++ print("* " + dir + "/" + file[:-4] + "::" + file)
++ print("@end menu")
++ print("\n")
+
+
+ #
+@@ -347,7 +344,7 @@ def findFile (dir, build, source, file):
+ name2 = os.path.join(os.path.join(source, dir), file)
+ if os.path.exists(name2):
+ return name2
+- print "file cannot be found in either " + name1 + " or " + name2
++ print("file cannot be found in either " + name1 + " or " + name2)
+ os.sys.exit(1)
+
+
+@@ -367,7 +364,7 @@ def displayModules(up, dir, build, source):
+ listOfFiles += os.listdir(os.path.join(source, dir))
+ if os.path.exists(os.path.join(source, dir)):
+ listOfFiles += os.listdir(os.path.join(build, dir))
+- listOfFiles = dict.fromkeys(listOfFiles).keys()
++ listOfFiles = list(dict.fromkeys(listOfFiles).keys())
+ listOfFiles.sort()
+ listOfModules = []
+ for file in listOfFiles:
+@@ -377,21 +374,21 @@ def displayModules(up, dir, build, source):
+ listOfModules.sort()
+ parseModules(up, dir, build, source, listOfModules)
+ else:
+- print "directory " + dir + " not found in either " + build + " or " + source
++ print("directory " + dir + " not found in either " + build + " or " + source)
+
+
+ def displayCopyright ():
+- print "@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008"
+- print "@c Free Software Foundation, Inc."
+- print """
++ print("@c Copyright (C) 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007, 2008")
++ print("@c Free Software Foundation, Inc.")
++ print("""
+ @c Permission is granted to copy, distribute and/or modify this document
+ @c under the terms of the GNU Free Documentation License, Version 1.2 or
+ @c any later version published by the Free Software Foundation.
+-"""
++""")
+
+ def Usage():
+- print "def2texi.py [-h][-bbuilddir][-uupnode][-ffilename]"
+-
++ print("def2texi.py [-h][-bbuilddir][-uupnode][-ffilename]")
++
+ def collectArgs():
+ buildDir="."
+ sourceDir="."
+--- a/src/gcc/gm2/tools-src/gensum.py
++++ b/src/gcc/gm2/tools-src/gensum.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/env python
++#!/usr/bin/python3
+ #
+ # gensum.py a utility for summarizing the regression tests into html.
+ #
+@@ -59,9 +59,9 @@ class testcase:
+ def usage (code):
+ global noColumns
+
+- print "gensum [-h] [-c number] filename.sum {filename.sum}"
+- print " -c number of columns per architectural table (default", noColumns, ")"
+- print " -h help"
++ print("gensum [-h] [-c number] filename.sum {filename.sum}")
++ print(" -c number of columns per architectural table (default", noColumns, ")")
++ print(" -h help")
+ sys.exit (code)
+
+
+@@ -104,18 +104,18 @@ def scanner (name, function):
+ def addPassResult (name, varient):
+ global regressionTests, configuration, passStats
+
+- if not regressionTests.has_key (configuration):
++ if configuration not in regressionTests:
+ regressionTests[configuration] = {}
+
+ arch = regressionTests[configuration]
+- if arch.has_key (name):
++ if name in arch:
+ t = arch[name]
+ else:
+ t = testcase (name)
+ t.addPass (varient)
+ arch[name] = t
+ regressionTests[configuration] = arch
+- if passStats.has_key (configuration):
++ if configuration in passStats:
+ passStats[configuration] += 1
+ else:
+ passStats[configuration] = 1
+@@ -128,18 +128,18 @@ def addPassResult (name, varient):
+ def addFailResult (name, varient):
+ global regressionTests, configuration, failStats
+
+- if not regressionTests.has_key (configuration):
++ if configuration not in regressionTests:
+ regressionTests[configuration] = {}
+
+ arch = regressionTests[configuration]
+- if arch.has_key (name):
++ if name in arch:
+ t = arch[name]
+ else:
+ t = testcase (name)
+ t.addFail (varient)
+ arch[name] = t
+ regressionTests[configuration] = arch
+- if failStats.has_key (configuration):
++ if configuration in failStats:
+ failStats[configuration] += 1
+ else:
+ failStats[configuration] = 1
+@@ -153,18 +153,18 @@ def addFailResult (name, varient):
+ def addUnresolvedResult (name, varient, reason):
+ global regressionTests, configuration, unresolvedStats
+
+- if not regressionTests.has_key (configuration):
++ if configuration not in regressionTests:
+ regressionTests[configuration] = {}
+
+ arch = regressionTests[configuration]
+- if arch.has_key (name):
++ if name in arch:
+ t = arch[name]
+ else:
+ t = testcase (name)
+ t.addUnresolved (varient, reason)
+ arch[name] = t
+ regressionTests[configuration] = arch
+- if unresolvedStats.has_key (configuration):
++ if configuration in unresolvedStats:
+ unresolvedStats[configuration] += 1
+ else:
+ unresolvedStats[configuration] = 1
+@@ -239,20 +239,20 @@ def processLine(line):
+ #
+
+ def printRow (testcase, arch, option):
+- if regressionTests[arch].has_key (testcase):
++ if testcase in regressionTests[arch]:
+ t = regressionTests[arch][testcase]
+ if option in t.getPasses ():
+- print '<td bgcolor="green">', string.join (option, ' '), '</td>',
++ print('<td bgcolor="green">', string.join (option, ' '), '</td>', end=' ')
+ elif option in t.getFails():
+- print '<td bgcolor="red">', string.join (option, ' '), '</td>',
++ print('<td bgcolor="red">', string.join (option, ' '), '</td>', end=' ')
+ elif option in t.getUnresolved():
+- print '<td bgcolor="yellow">', string.join (option, ' '), '</td>',
++ print('<td bgcolor="yellow">', string.join (option, ' '), '</td>', end=' ')
+ elif option == []:
+- print '<td></td>',
++ print('<td></td>', end=' ')
+ else:
+- print '<td></td>',
++ print('<td></td>', end=' ')
+ else:
+- print '<td></td>',
++ print('<td></td>', end=' ')
+
+
+ #
+@@ -263,9 +263,9 @@ def getListOfTests ():
+ global regressionTests
+
+ list = []
+- for arch in regressionTests.keys ():
++ for arch in list(regressionTests.keys ()):
+ t = regressionTests[arch]
+- for u in t.keys ():
++ for u in list(t.keys ()):
+ if not (u in list):
+ list += [u]
+ return list
+@@ -281,9 +281,9 @@ def getListOfOptions (testcase):
+
+ optlist = []
+ total = 0
+- for arch in regressionTests.keys ():
++ for arch in list(regressionTests.keys ()):
+ t = regressionTests[arch]
+- if t.has_key (testcase):
++ if testcase in t:
+ u = t[testcase]
+ for p in u.getPasses () + u.getFails () + u.getUnresolved ():
+ if not (p in optlist):
+@@ -314,87 +314,87 @@ def printResults():
+ global target, configuration, author, date, regressionTests, noColumns
+ global passStats, failStats, unresolvedStats
+
+- print "<html><head><title>"
+- print "GNU Modula-2 regression tests"
+- print "</title></head>"
+- print ""
+- print "<h1>",
+- print "GNU Modula-2 regression tests",
+- print "</h1>"
+- print ""
+-
+- print '<p><table border="1"><tr>'
+- print '<th colspan="2">Key</th>'
+- print '<tr><td>Colour</td><td>Meaning</td></tr>'
+- print '<tr><td bgcolor="green"></td><td>Pass</td></tr>'
+- print '<tr><td bgcolor="red"></td><td>Fail</td></tr>'
+- print '<tr><td bgcolor="yellow"></td><td>Unresolved due to a prior error</td></tr>'
+- print '<tr><td bgcolor="blue"></td><td>Not tested</td></tr>'
+- print '<tr><td></td><td>Entire testcase not tested on this platform</td></tr>'
+- print '</table></p>'
+- print ''
+-
+- archList = regressionTests.keys ()
+- print "<h2>",
+- print "Summary",
+- print "</h2>"
+- print '<p><table border="1">'
+- print '<tr>',
+- print '<th colspan="1">Status</th>',
++ print("<html><head><title>")
++ print("GNU Modula-2 regression tests")
++ print("</title></head>")
++ print("")
++ print("<h1>", end=' ')
++ print("GNU Modula-2 regression tests", end=' ')
++ print("</h1>")
++ print("")
++
++ print('<p><table border="1"><tr>')
++ print('<th colspan="2">Key</th>')
++ print('<tr><td>Colour</td><td>Meaning</td></tr>')
++ print('<tr><td bgcolor="green"></td><td>Pass</td></tr>')
++ print('<tr><td bgcolor="red"></td><td>Fail</td></tr>')
++ print('<tr><td bgcolor="yellow"></td><td>Unresolved due to a prior error</td></tr>')
++ print('<tr><td bgcolor="blue"></td><td>Not tested</td></tr>')
++ print('<tr><td></td><td>Entire testcase not tested on this platform</td></tr>')
++ print('</table></p>')
++ print('')
++
++ archList = list(regressionTests.keys ())
++ print("<h2>", end=' ')
++ print("Summary", end=' ')
++ print("</h2>")
++ print('<p><table border="1">')
++ print('<tr>', end=' ')
++ print('<th colspan="1">Status</th>', end=' ')
+ for arch in archList:
+- print '<th colspan="1">', arch, '</th>',
+- print '</tr>'
+- print '<tr><td bgcolor="green"></td>',
++ print('<th colspan="1">', arch, '</th>', end=' ')
++ print('</tr>')
++ print('<tr><td bgcolor="green"></td>', end=' ')
+ for arch in archList:
+- if passStats.has_key (arch):
+- print '<td bgcolor="green">', passStats[arch], "</td>"
++ if arch in passStats:
++ print('<td bgcolor="green">', passStats[arch], "</td>")
+ else:
+- print '<td bgcolor="green">none</td>'
+- print '</tr>'
+- print '<tr><td bgcolor="red"></td>',
++ print('<td bgcolor="green">none</td>')
++ print('</tr>')
++ print('<tr><td bgcolor="red"></td>', end=' ')
+ for arch in archList:
+- if failStats.has_key (arch):
+- print '<td bgcolor="red">', failStats[arch], "</td>"
++ if arch in failStats:
++ print('<td bgcolor="red">', failStats[arch], "</td>")
+ else:
+- print '<td bgcolor="red">none</td>'
+- print '</tr>'
+- print '<tr><td bgcolor="yellow"></td>',
++ print('<td bgcolor="red">none</td>')
++ print('</tr>')
++ print('<tr><td bgcolor="yellow"></td>', end=' ')
+ for arch in archList:
+- if unresolvedStats.has_key (arch):
+- print '<td bgcolor="yellow">', unresolvedStats[arch], "</td>"
++ if arch in unresolvedStats:
++ print('<td bgcolor="yellow">', unresolvedStats[arch], "</td>")
+ else:
+- print '<td bgcolor="yellow">none</td>'
+- print '</tr>'
+- print '</table></p>'
++ print('<td bgcolor="yellow">none</td>')
++ print('</tr>')
++ print('</table></p>')
+
+- print "<h1>",
+- print "GNU Modula-2 regression test results",
+- print "</h1>"
++ print("<h1>", end=' ')
++ print("GNU Modula-2 regression test results", end=' ')
++ print("</h1>")
+
+ testlist = getListOfTests ()
+ for testcase in testlist:
+ total, optlist = getListOfOptions (testcase)
+ if total > 0:
+- print '<p><table border="1"><tr>'
+- print '<th colspan="', len (archList) * noColumns, '">',
++ print('<p><table border="1"><tr>')
++ print('<th colspan="', len (archList) * noColumns, '">', end=' ')
+ heading = getHeading (testcase)
+- print heading, '</th></tr>'
++ print(heading, '</th></tr>')
+ for arch in archList:
+- print '<th colspan="', noColumns, '">', arch, '</th>',
++ print('<th colspan="', noColumns, '">', arch, '</th>', end=' ')
+
+ if total % noColumns != 0:
+ total = ((total / noColumns) +1) * noColumns
+ for count in range (0, total, noColumns):
+- print '<tr>',
++ print('<tr>', end=' ')
+ for arch in archList:
+ for c in range (count, count+noColumns):
+ if c < len (optlist):
+ printRow (testcase, arch, optlist[c])
+ else:
+ printRow (testcase, arch, [])
+- print '</tr>'
+- print '</table></p>'
+- print '</html>'
++ print('</tr>')
++ print('</table></p>')
++ print('</html>')
+
+
+ target = ""
+--- a/src/gcc/gm2/tools-src/makeSystem
++++ b/src/gcc/gm2/tools-src/makeSystem
+@@ -19,7 +19,7 @@
+ # Foundation, 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA. *)
+
+
+-function Usage () {
++Usage () {
+ echo "Usage: makesystem dialectflag SYSTEM.def SYSTEM.mod librarypath compiler"
+ }
+
+@@ -41,7 +41,7 @@ if [ "$DIALECT" != "-fiso" -a "$DIALECT" != "-fpim" ] ; then
+ exit 1
+ fi
+
+-function displayExportedTypes () {
++displayExportedTypes () {
+ n=1
+ c=0
+ for i in ${types} ; do
+@@ -60,24 +60,24 @@ function displayExportedTypes () {
+ echo " " >> ${OUTPUTFILE}
+ }
+
+-function displayBuiltinTypes () {
++displayBuiltinTypes () {
+ for i in ${types} ; do
+ echo " $i ; " >> ${OUTPUTFILE}
+ done
+ }
+
+-function displayStart () {
++displayStart () {
+ sed -e "1,/@SYSTEM_DATATYPES@/!d" < ${SYSTEMDEF} | \
+ sed -e "/@SYSTEM_DATATYPES@/d" >> ${OUTPUTFILE}
+ }
+
+-function displayMiddle () {
++displayMiddle () {
+ sed -e "1,/@SYSTEM_DATATYPES@/d" < ${SYSTEMDEF} | \
+ sed -e "1,/@SYSTEM_TYPES@/!d" | \
+ sed -e "/@SYSTEM_TYPES@/d" >> ${OUTPUTFILE}
+ }
+
+-function displayEnd () {
++displayEnd () {
+ sed -e "1,/@SYSTEM_TYPES@/d" < ${SYSTEMDEF} >> ${OUTPUTFILE}
+ }
+
+--- a/src/gcc/gm2/tools-src/makeconfigure
++++ b/src/gcc/gm2/tools-src/makeconfigure
+@@ -8,16 +8,16 @@
+ # 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.
+-#
++#
+ # GNU Modula-2 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 GNU Modula-2; see the file COPYING. If not, write to the
+ # Free Software Foundation, 51 Franklin Street, Fifth Floor, Boston, MA
+-# 02110-1301, USA.
++# 02110-1301, USA.
+ #
+
+ #
+@@ -25,13 +25,13 @@
+ # file:
+ #
+ # gm2s/386-gas/M2Configure.def
+-#
++#
+
+ #
+ # create configuration constant
+ #
+
+-function EmitConst () {
++EmitConst () {
+ echo " " $1 "=" $2 "; (* automatically generated *)" >> $DESTINATION
+ echo "" >> $DESTINATION
+ }
+@@ -40,7 +40,7 @@ function EmitConst () {
+ # remove the old configuration file and create new empty ones
+ #
+
+-function Initialize () {
++Initialize () {
+ /bin/rm -f $DESTINATION
+ touch $DESTINATION
+ }
+@@ -50,7 +50,7 @@ function Initialize () {
+ # ModulePrologue - write the start of the definition module.
+ #
+
+-function ModulePrologue () {
++ModulePrologue () {
+ cat >> $DESTINATION << EOF
+ DEFINITION MODULE M2Configure ;
+
+@@ -113,7 +113,7 @@ EOF
+ # ModuleEpilogue - terminates the definition module.
+ #
+
+-function ModuleEpilogue () {
++ModuleEpilogue () {
+ echo "" >> $DESTINATION
+ echo "END M2Configure." >> $DESTINATION
+ }
+@@ -123,7 +123,7 @@ function ModuleEpilogue () {
+ # work out whether we are compiling on a xenix system
+ #
+
+-function IsSystemXenix () {
++IsSystemXenix () {
+ echo -n "are we compiling under xenix..."
+ cat >> $DESTINATION << EOF3
+ (*
+@@ -142,7 +142,7 @@ EOF3
+ }
+
+
+-function UseUnderscoreForC () {
++UseUnderscoreForC () {
+ cat >> $DESTINATION << EOF
+ (*
+ UseUnderscoreForC - if true then the C compiler uses _ in front of
+@@ -168,7 +168,7 @@ EOF
+ }
+
+
+-function UseDotForGDBLabels () {
++UseDotForGDBLabels () {
+ cat >> $DESTINATION << EOF
+ (*
+ UseDotForGDBLabels - if true then the C compiler produced .LBB2: for the
+@@ -195,7 +195,7 @@ EOF
+ }
+
+
+-function UseDotForJumpLabels () {
++UseDotForJumpLabels () {
+ cat >> $DESTINATION << EOF
+ (*
+ UseDotForJumpLabels - if true then the C compiler produced .L2: for jump
+@@ -222,12 +222,12 @@ EOF
+ }
+
+
+-function secondword () {
++secondword () {
+ echo $2
+ }
+
+
+-function AlignmentSize () {
++AlignmentSize () {
+ cat >> $DESTINATION << EOF
+ (*
+ AlignmentSize - returns the default alignment size used.
+@@ -247,7 +247,7 @@ EOF
+ }
+
+
+-function ActivationRecordOffset () {
++ActivationRecordOffset () {
+ cat >> $DESTINATION << EOF
+ (*
+ ActivationRecordOffset - the number of words relative to frame pointer
+@@ -260,7 +260,7 @@ EOF
+ }
+
+
+-function UseShortStabLineNumbers () {
++UseShortStabLineNumbers () {
+ cat >> $DESTINATION << EOF
+ (*
+ UseShortStabLineNumbers - if true then the C compiler produced .stabd 68,0,2
+@@ -288,7 +288,7 @@ EOF
+ }
+
+
+-function DefaultLibraryPath () {
++DefaultLibraryPath () {
+ cat >> $DESTINATION << EOF
+ (*
+ DefaultLibraryPath - defermines the default library path and creates a
+@@ -302,7 +302,7 @@ EOF
+ }
+
+
+-function UsingGCCBackend () {
++UsingGCCBackend () {
+ cat >> $DESTINATION << EOF
+ (*
+ UsingGCCBackend - is the compiler being built with the GCC code generator?
+--- a/src/gcc/gm2/tools-src/makeversion
++++ b/src/gcc/gm2/tools-src/makeversion
+@@ -29,7 +29,7 @@
+
+
+
+-function doM2 () {
++doM2 () {
+ /bin/rm -f M2Version.mod
+
+ cat << EOF >> M2Version.mod
+@@ -71,7 +71,7 @@ EOF
+ }
+
+
+-function doC () {
++doC () {
+
+ cat <<EOF > gm2version.c
+ /* Generated by makeversion - do not edit */
+@@ -95,7 +95,7 @@ EOF
+ }
+
+
+-function doCP () {
++doCP () {
+
+ cat <<EOF > gm2version.c
+ /* Generated by makeversion - do not edit */
+@@ -119,7 +119,7 @@ EOF
+ }
+
+
+-function doTexi () {
++doTexi () {
+
+ cat <<EOF > version.texi
+
+@@ -135,7 +135,7 @@ EOF
+
+ progname=$0
+
+-function usage () {
++usage () {
+ cat <<EOF
+ Usage: $progname [-m][-c][-t]
+ -m generates a Modula-2 module M2Version.mod
+@@ -206,7 +206,7 @@ fi
+ # $(srcdir)/gm2/gm2-libs/config-host.in
+ #
+
+-if [ "`grep AC_INIT ${SRCDIR}/gm2/gm2-libs/config-host.in | grep ${GM2VERSION}`" == "" ] ; then
++if [ "`grep AC_INIT ${SRCDIR}/gm2/gm2-libs/config-host.in | grep ${GM2VERSION}`" = "" ] ; then
+ echo "makeversion has found a consistency error: the ${SRCDIR}/gm2/gm2-libs/config-host.in does not match the GNU Modula-2 release number"
+ exit 1
+ fi
+--- a/src/gcc/gm2/tools-src/tidydates.py
++++ b/src/gcc/gm2/tools-src/tidydates.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ import os, sys
+
+@@ -104,7 +104,7 @@ def handleCopyright (outfile, lines, n, leader1, leader2):
+ #
+
+ def handleHeader (file, leader1, leader2):
+- print "------------------------------"
++ print("------------------------------")
+ l = open(file, 'r').readlines()
+ if len(l)>20:
+ outfile = open('tmptidy', 'w')
+@@ -114,7 +114,7 @@ def handleHeader (file, leader1, leader2):
+ outfile, n = handleCopyright(outfile, l, n, leader1, leader2)
+ outfile.writelines(l[n:])
+ outfile.close()
+- print "-> mv tmptidy", file
++ print(("-> mv tmptidy", file))
+ command = "mv tmptidy %s" % file
+ os.system(command)
+ return
+--- a/src/gcc/gm2/www/Makefile.in
++++ b/src/gcc/gm2/www/Makefile.in
+@@ -32,7 +32,7 @@ TEXISRC = $(srcdir)/../../gm2/gm2.texi
+ # $(objdir)/gm2/Builtins.texi \
+ # $(objdir)/gm2/version.texi
+
+-TEXI2HTML=python $(srcdir)/tools/texi2tr/src/texi2tr.py
++TEXI2HTML=python3 $(srcdir)/tools/texi2tr/src/texi2tr.py
+
+ OUTPUTS=download.html homepage.html license.html platforms.html \
+ about.html release.html users.html texi2tr.css \
+--- a/src/gcc/gm2/www/tools/texi2tr/src/navigation.py
++++ b/src/gcc/gm2/www/tools/texi2tr/src/navigation.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2011
+ # Free Software Foundation, Inc.
+@@ -74,15 +74,15 @@ class nodeInfo:
+ <table width="100%" cellpadding="2" cellspacing="2">
+ <tr valign="middle">
+ """)
+- if (self.prev != "") and (self.prev != "Top") and anchors.has_key(self.prev):
++ if (self.prev != "") and (self.prev != "Top") and self.prev in anchors:
+ html.raw('''
+ <td><a accesskey="p" href="''')
+ html.raw(anchors[self.prev])
+ html.raw('"><img width="48" alt="Prev" src="prev.png" border="0" height="48"></img></a></td>')
+- if (self.next != "") and (self.next != "Top") and anchors.has_key(self.next):
++ if (self.__next__ != "") and (self.__next__ != "Top") and self.__next__ in anchors:
+ html.raw('''
+ <td align="right"><a accesskey="n" href="''')
+- html.raw(anchors[self.next])
++ html.raw(anchors[self.__next__])
+ html.raw('"><img width="48" alt="Next" src="next.png" border="0" height="48"></img></a></td>')
+ html.raw('</tr></table></div>')
+
+@@ -137,7 +137,7 @@ class menuInfo:
+ #
+ def debugMenu (self):
+ for m in self.list:
+- print m[0], m[1]
++ print((m[0], m[1]))
+ #
+ # generateMenu - issues the menu
+ #
+@@ -175,15 +175,15 @@ class menuInfo:
+ html.raw('<div id="tabmenu">\n')
+ html.raw('<ul id="tab">\n')
+ for m in self.list:
+- if anchors.has_key(m[0]):
++ if m[0] in anchors:
+ active = litab(html, anchors[m[0]], m[0], active)
+ else:
+- if (len(m[1]) > 1) and (m[1][-1] == '.') and (anchors.has_key(m[1][:-1])):
++ if (len(m[1]) > 1) and (m[1][-1] == '.') and (m[1][:-1] in anchors):
+ active = litab(html, anchors[m[1][:-1]], m[0], active)
+- elif anchors.has_key(m[1]):
++ elif m[1] in anchors:
+ active = litab(html, anchors[m[1]], m[0], active)
+ else:
+- print "cannot find anchor for section", m[0], "or", m[1]
++ print(("cannot find anchor for section", m[0], "or", m[1]))
+ html.raw('\n</ul>\n')
+ html.raw('</div>\n')
+ #
+@@ -192,15 +192,15 @@ class menuInfo:
+ def _genLong (self, html):
+ html.raw('\n<ul>\n')
+ for m in self.list:
+- if anchors.has_key(m[0]):
++ if m[0] in anchors:
+ liurl(html, anchors[m[0]], m[1])
+ else:
+- if (len(m[1]) > 1) and (m[1][-1] == '.') and (anchors.has_key(m[1][:-1])):
++ if (len(m[1]) > 1) and (m[1][-1] == '.') and (m[1][:-1] in anchors):
+ liurl(html, anchors[m[1][:-1]], m[1])
+- elif anchors.has_key(m[1]):
++ elif m[1] in anchors:
+ liurl(html, anchors[m[1]], m[1])
+ else:
+- print "cannot find anchor for section", m[0], "or", m[1]
++ print(("cannot find anchor for section", m[0], "or", m[1]))
+ html.raw('</ul>\n')
+
+ #
+@@ -210,8 +210,8 @@ class menuInfo:
+ def anchor (html, label):
+ global anchors
+
+- if anchors.has_key(label):
+- print "node", label, "already exists"
++ if label in anchors:
++ print(("node", label, "already exists"))
+ anchors[label] = html.getNodeLink()
+ s = '<a name="' + html.getNodeAnchor() + '"></a>\n'
+ html.raw(s)
+--- a/src/gcc/gm2/www/tools/texi2tr/src/outputdev.py
++++ b/src/gcc/gm2/www/tools/texi2tr/src/outputdev.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2011
+ # Free Software Foundation, Inc.
+@@ -26,10 +26,10 @@ import config
+
+
+ # html tag
+-null_tag, title_tag, header1_tag, header2_tag, header3_tag, header4_tag, center_tag, paragraph_tag, preformatted_tag, teletype_tag, italic_tag, bold_tag, no_tag = range(13)
++null_tag, title_tag, header1_tag, header2_tag, header3_tag, header4_tag, center_tag, paragraph_tag, preformatted_tag, teletype_tag, italic_tag, bold_tag, no_tag = list(range(13))
+
+ # html state machine
+-init_state, known_state, end_state, copy_state, white_state, nf_state = range(6)
++init_state, known_state, end_state, copy_state, white_state, nf_state = list(range(6))
+
+ # char2code contains all html character codes
+ char2code = {}
+@@ -166,7 +166,7 @@ class htmlDevice:
+ #
+ def _encodeChar (self, c):
+ global char2code
+- if char2code.has_key(c):
++ if c in char2code:
+ self.raw(char2code[c])
+ else:
+ self.raw(c)
+@@ -200,11 +200,11 @@ class htmlDevice:
+ if config.multipleFragments:
+ self.output = open(name, 'w')
+ if config.debugFragments:
+- print
+- print "----------------------------------------------"
+- print name
+- print "----------------------------------------------"
+- print
++ print()
++ print("----------------------------------------------")
++ print(name)
++ print("----------------------------------------------")
++ print()
+ self.output = sys.stdout
+ self.fragNo += 1
+ self.deviceHeader()
+@@ -526,10 +526,10 @@ class htmlDevice:
+ f = os.path.join(i, filename)
+ if os.path.exists(f) and os.path.isfile(f):
+ return open(f, 'r').read()
+- print "cannot open", description
++ print(("cannot open", description))
+ sys.exit(0)
+ except:
+- print "cannot open", description
++ print(("cannot open", description))
+ sys.exit(0)
+ #
+ # emitMenuTitle -
+--- a/src/gcc/gm2/www/tools/texi2tr/src/texi2tr.py
++++ b/src/gcc/gm2/www/tools/texi2tr/src/texi2tr.py
+@@ -1,4 +1,4 @@
+-#!/usr/bin/python
++#!/usr/bin/python3
+
+ # Copyright (C) 2011
+ # Free Software Foundation, Inc.
+@@ -54,7 +54,7 @@ indexSections = {}
+ html = None
+
+ # output state
+-ignore, passthrough, arguments, menu = range(4)
++ignore, passthrough, arguments, menu = list(range(4))
+
+ currentMenu = navigation.menuInfo(True)
+
+@@ -65,7 +65,7 @@ currentMenu = navigation.menuInfo(True)
+ #
+
+ def printf (format, *args):
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -75,7 +75,7 @@ def printf (format, *args):
+ def debugf (format, *args):
+ global debugging
+ if debugging:
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -85,7 +85,7 @@ def debugf (format, *args):
+ def verbosef (format, *args):
+ global verbose
+ if verbose:
+- print str(format) % args,
++ print(str(format) % args, end=' ')
+
+
+ #
+@@ -93,10 +93,10 @@ def verbosef (format, *args):
+ #
+
+ def Usage ():
+- print "texi2tr [-h] [-v] [-Iincludepath] [-Ttemplatepath] [-r rootname.html] [-b basename-%d.html] filename.texi"
+- print " produces html from the texinfo filename.texi"
+- print " -h help"
+- print " -v verbose"
++ print("texi2tr [-h] [-v] [-Iincludepath] [-Ttemplatepath] [-r rootname.html] [-b basename-%d.html] filename.texi")
++ print(" produces html from the texinfo filename.texi")
++ print(" -h help")
++ print(" -v verbose")
+ sys.exit(0)
+
+
+@@ -206,7 +206,7 @@ def pushArg (init):
+ global argStack, debugging
+ argStack = [init] + argStack
+ if debugging:
+- print "pushArg: argStack", argStack
++ print("pushArg: argStack", argStack)
+
+
+ #
+@@ -222,7 +222,7 @@ def popArg ():
+ else:
+ argStack = []
+ if debugging:
+- print "popArg: argStack", argStack
++ print("popArg: argStack", argStack)
+ return value
+
+
+@@ -279,7 +279,7 @@ def parseArgs (contents, i, delim):
+ def call (command, args, state):
+ global functions
+
+- if functions.has_key(command):
++ if command in functions:
+ return functions[command](args, state)
+ else:
+ error("unknown command '" + command + "'")
+@@ -428,7 +428,7 @@ def doSet (content, state):
+
+ def doValue (content, state):
+ global values
+- if values.has_key(content):
++ if content in values:
+ return values[content], state
+ else:
+ error('unknown value ' + content)
+@@ -548,7 +548,7 @@ def doIgnore (content, state):
+
+ def pushState (keyword, state):
+ global statementStack
+- if statementStack.has_key(keyword):
++ if keyword in statementStack:
+ statementStack[keyword] = [state] + statementStack[keyword]
+ else:
+ statementStack[keyword] = [state]
+@@ -568,11 +568,11 @@ def doConsume (content, state, keyword):
+ def doEnd (content, state):
+ global statementStack, endFunctions
+ keyword = content.split()[0]
+- if statementStack.has_key(keyword):
++ if keyword in statementStack:
+ if len(statementStack[keyword]) == 0:
+ error("unexpected end '" + keyword + "'")
+ else:
+- if endFunctions.has_key(keyword):
++ if keyword in endFunctions:
+ endFunctions[keyword](state)
+ state = popState(keyword)
+ else:
+@@ -666,7 +666,7 @@ def doChapter (content, state):
+
+ def addSectionAnchor (content):
+ global html, indexSections
+- if indexSections.has_key(content):
++ if content in indexSections:
+ error('section name "' + content + '" already exists')
+ else:
+ indexSections[content] = html.sectionAnchor(content)
+@@ -986,7 +986,7 @@ def doFindex (content, state):
+
+ if state == ignore:
+ return skipLine (content, state)
+- if indexFunc.has_key(content):
++ if content in indexFunc:
+ indexFunc[content] += [html.getLink()]
+ else:
+ indexFunc[content] = [html.getLink()]
+@@ -1028,7 +1028,7 @@ def generateFunctionIndex (html):
+
+ html.openDiv().flushDiv()
+ html.paraBegin()
+- for k,v in sorted([(key, value) for (key,value) in indexFunc.items()]):
++ for k,v in sorted([(key, value) for (key,value) in list(indexFunc.items())]):
+ html.write(k)
+ html.write(': ')
+ for n in range(len(v)):
+@@ -1051,7 +1051,7 @@ def generateSectionIndex (html):
+ html.paraBegin()
+ html.write('Alphabetically sorted list of contents')
+ html.raw('<br>\n')
+- for k,v in sorted([(key, value) for (key,value) in indexSections.items()]):
++ for k,v in sorted([(key, value) for (key,value) in list(indexSections.items())]):
+ html.raw('<a href="')
+ html.raw(v)
+ html.raw('">')
+--- a/src/gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/calling-c/datatypes/unbounded/run/pass/gm2.exp
+@@ -27,12 +27,12 @@ set gm2src ${srcdir}/../gm2
+
+ gm2_init_pim "${srcdir}/gm2/calling-c/datatypes/unbounded/run/pass"
+
+-set XGCC [lookfor_file $tmpdir xgcc];
++set XGCC [lookfor_file $rootme xgcc];
+
+ gm2_link_with "c.o"
+
+ set output [exec rm -f c.o]
+-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/calling-c/datatypes/unbounded/run/pass/c.c -o c.o]
++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/calling-c/datatypes/unbounded/run/pass/c.c -o c.o]
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+--- a/src/gcc/testsuite/gm2/errors/fail/gm2.exp
++++ b/src/gcc/testsuite/gm2/errors/fail/gm2.exp
+@@ -22,7 +22,7 @@ if $tracelevel then {
+ # load support procs
+ load_lib gm2-torture.exp
+
+-gm2_init_pim "${srcdir}/gm2/errors/fail" -Wpedantic -Wstudents
++gm2_init_pim "${srcdir}/gm2/errors/fail" -Wpedantic -Wstudents -Wunused-variable
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+--- a/src/gcc/testsuite/gm2/examples/callingC/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/examples/callingC/run/pass/gm2.exp
+@@ -13,7 +13,7 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ if $tracelevel then {
+ strace $tracelevel
+@@ -26,11 +26,11 @@ set gm2src ${srcdir}/../gm2
+
+ gm2_init_iso "$srcdir/gm2/examples/callingC/run/pass"
+
+-set XGCC [lookfor_file $tmpdir xgcc];
++set XGCC [lookfor_file $rootme xgcc];
+
+ gm2_link_with c.o
+ set output [exec rm -f c.o]
+-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/examples/callingC/run/pass/c.c -o c.o]
++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/examples/callingC/run/pass/c.c -o c.o]
+
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+--- a/src/gcc/testsuite/gm2/exceptions/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/exceptions/run/pass/gm2.exp
+@@ -25,11 +25,11 @@ load_lib prune.exp
+ load_lib gm2-torture.exp
+
+
+-set XGPP [lookfor_file $tmpdir xg++];
++set XGPP [lookfor_file $rootme xg++];
+
+ set output [exec rm -f cpp.o mycpp.o]
+-set output [exec ${XGPP} -B[file dirname $tmpdir] -g -c $srcdir/gm2/exceptions/run/pass/cpp.cpp]
+-set output [exec ${XGPP} -B[file dirname $tmpdir] -g -c $srcdir/gm2/exceptions/run/pass/mycpp.cpp]
++set output [exec ${XGPP} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/exceptions/run/pass/cpp.cpp]
++set output [exec ${XGPP} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/exceptions/run/pass/mycpp.cpp]
+
+ #
+ # notice this uses PIM libraries with exceptions - this is a useful test.
+--- a/src/gcc/testsuite/gm2/extensions/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/extensions/run/pass/gm2.exp
+@@ -13,7 +13,7 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ if $tracelevel then {
+ strace $tracelevel
+@@ -28,10 +28,10 @@ gm2_init_pim "${srcdir}/gm2/extensions/run/pass" -fsoft-check-all
+
+ gm2_link_with cvararg.o
+
+-set XGCC [lookfor_file $tmpdir xgcc];
++set XGCC [lookfor_file $rootme xgcc];
+
+ set output [exec rm -f cvararg.o]
+-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/extensions/run/pass/cvararg.c -o cvararg.o]
++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/extensions/run/pass/cvararg.c -o cvararg.o]
+
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+--- a/src/gcc/testsuite/gm2/imports/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/imports/run/pass/gm2.exp
+@@ -13,7 +13,7 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ if $tracelevel then {
+ strace $tracelevel
+@@ -29,7 +29,7 @@ gm2_init_pim "${srcdir}/gm2/imports/run/pass"
+ gm2_link_with "-lgm2"
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+- set output [exec ../xgm2 -B../ -g -c "-I${gccpath}/libgm2/libpim:${gm2src}/gm2-libs:${srcdir}/gm2/imports/run/pass" -fpim ${srcdir}/gm2/imports/run/pass/c.mod]
++ set output [exec ../../xgm2 -B../../ -g -c "-I${gccpath}/libgm2/libpim:${gm2src}/gm2-libs:${srcdir}/gm2/imports/run/pass" -fpim ${srcdir}/gm2/imports/run/pass/c.mod]
+
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $testcase] then {
+--- a/src/gcc/testsuite/gm2/iso/run/pass/unbounded.mod
++++ b/src/gcc/testsuite/gm2/iso/run/pass/unbounded.mod
+@@ -20,12 +20,13 @@ MODULE unbounded ;
+ FROM libc IMPORT exit, printf ;
+ FROM SYSTEM IMPORT ADR ;
+
++
+ PROCEDURE Assert (b: BOOLEAN; f: ARRAY OF CHAR; l: CARDINAL) ;
+ BEGIN
+ IF NOT b
+ THEN
+- printf("%s:%d:failure\n", ADR(f), l) ;
+- exit(1)
++ printf ("%s:%d:failure\n", ADR (f), l) ;
++ exit (1)
+ END
+ END Assert ;
+
+@@ -34,18 +35,35 @@ PROCEDURE test (VAR a: ARRAY OF ARRAY OF CHAR) ;
+ VAR
+ m, n: CARDINAL ;
+ BEGIN
+- m := HIGH(a) ;
+- n := HIGH(a[0]) ;
+- printf("m = %d, n = %d\n", m, n);
++ m := HIGH (a) ;
++ n := HIGH (a[0]) ;
++ printf ("m = %d, n = %d\n", m, n);
+ a[1, 2] := 'a' ;
+ a[2, 1] := 'c'
+ END test ;
+
+
+ VAR
+- b: ARRAY [0..4], [0..5] OF CHAR ;
++ b : ARRAY [0..4], [0..5] OF CHAR ;
++ i, j: CARDINAL ;
+ BEGIN
+- test(b) ;
+- Assert(b[1, 2]='a', __FILE__, __LINE__) ;
+- Assert(b[2, 1]='c', __FILE__, __LINE__) ;
++ FOR i := 0 TO 4 DO
++ FOR j := 0 TO 5 DO
++ b[i, j] := 'z'
++ END
++ END ;
++ test (b) ;
++ FOR i := 0 TO 4 DO
++ FOR j := 0 TO 5 DO
++ IF (i = 1) AND (j = 2)
++ THEN
++ Assert (b[1, 2] = 'a', __FILE__, __LINE__)
++ ELSIF (i = 2) AND (j = 1)
++ THEN
++ Assert (b[2, 1] = 'c', __FILE__, __LINE__)
++ ELSE
++ Assert (b[i, j] = 'z', __FILE__, __LINE__)
++ END
++ END
++ END
+ END unbounded.
+--- a/src/gcc/testsuite/gm2/linking/libarchive/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/linking/libarchive/pass/gm2.exp
+@@ -13,7 +13,7 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ if $tracelevel then {
+ strace $tracelevel
+@@ -24,13 +24,13 @@ load_lib gm2-torture.exp
+
+ set gm2src ${srcdir}/../gm2
+
+-gm2_init_iso "${srcdir}/gm2/linking/libarchive/pass"
++gm2_init_iso "${srcdir}/gm2/linking/libarchive/pass"
+
+-set XGCC [lookfor_file $tmpdir xgcc];
++set XGCC [lookfor_file $rootme xgcc];
+
+ gm2_link_with c.o
+ set output [exec rm -f c.o]
+-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/linking/libarchive/pass/c.c -o c.o]
++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/linking/libarchive/pass/c.c -o c.o]
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+--- a/src/gcc/testsuite/gm2/pim/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/pim/run/pass/gm2.exp
+@@ -27,7 +27,7 @@ set gm2src ${srcdir}/../gm2
+ gm2_init_pim "${srcdir}/gm2/pim/run/pass" -fsoft-check-all
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+- set output [exec ../xgm2 -B../ -g -c -I$srcdir/../gm2/gm2-libs -I$srcdir/gm2/pim/run/pass -I$srcdir/../gm2/gm2-compiler -I../gm2/gm2-libs -I../gm2/gm2-compiler -fpim $srcdir/gm2/pim/run/pass/sys.mod]
++ set output [exec ../../xgm2 -B../../ -g -c -I$srcdir/../gm2/gm2-libs -I$srcdir/gm2/pim/run/pass -I$srcdir/../gm2/gm2-compiler -I../gm2/gm2-libs -I../gm2/gm2-compiler -fpim $srcdir/gm2/pim/run/pass/sys.mod]
+
+ # If we're only testing specific files and this isn't one of them, skip it.
+ if ![runtest_file_p $runtests $testcase] then {
+--- a/src/gcc/testsuite/gm2/pim/run/pass/integer.mod
++++ b/src/gcc/testsuite/gm2/pim/run/pass/integer.mod
+@@ -1,274 +0,0 @@
+-(* Copyright (C) 2011 Free Software Foundation, Inc. *)
+-(* This file is part of GNU Modula-2.
+-
+-GNU Modula-2 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.
+-
+-GNU Modula-2 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 gm2; see the file COPYING. If not, write to the Free Software
+-Foundation, 51 Franklin Street, Fifth Floor,
+-Boston, MA 02110-1301, USA. *)
+-
+-MODULE integer ;
+-
+-(*
+- Title : integer
+- Author : Gaius Mulley
+- System : GNU Modula-2
+- Date : Fri May 18 17:05:36 2012
+- Revision : $Version$
+- Description: simple test module to test the principles of catching signed and unsigned
+- integer arithmetic overflow.
+-*)
+-
+-FROM SYSTEM IMPORT ADDRESS ;
+-FROM libc IMPORT printf ;
+-FROM DynamicStrings IMPORT String, InitString, string, KillString, InitString ;
+-
+-CONST
+- Verbose = TRUE ;
+- SizeOfIntAndLongSame = TRUE ;
+-
+-
+-PROCEDURE ssub (i, j: INTEGER) ;
+-BEGIN
+- IF ((j>0) AND (i < MIN(INTEGER)+j)) OR
+- ((j<0) AND (i > MAX(INTEGER)+j))
+- THEN
+- expecting(overflow, 'signed subtraction')
+- ELSE
+- expecting(none, 'signed subtraction')
+- END
+-END ssub ;
+-
+-
+-PROCEDURE sadd (i, j: INTEGER) ;
+-BEGIN
+- printf ("i = %d, j = %d MIN(INTEGER) = %d\n",
+- i, j, MIN(INTEGER));
+- printf ("MIN(INTEGER) = %d, -j = %d\n", MIN(INTEGER), -j);
+- IF ((j = MIN(INTEGER)) AND (i < 0)) OR
+- ((i = MIN(INTEGER)) AND (j < 0)) OR
+-
+- ((j>0) AND (i > MAX(INTEGER)-j)) OR
+- ((j<0) AND (i < MIN(INTEGER)-j))
+- THEN
+- expecting(overflow, 'signed addition')
+- ELSE
+- expecting(none, 'signed addition')
+- END
+-END sadd ;
+-
+-
+-(*
+- smallMult -
+-*)
+-
+-PROCEDURE smallMult (i, j: INTEGER) ;
+-BEGIN
+- IF i>0
+- THEN
+- IF j>0
+- THEN
+- IF i>maxInt DIV j
+- THEN
+- expecting(overflow, 'signed mult')
+- ELSE
+- expecting(none, 'signed mult')
+- END
+- ELSE
+- IF j<minInt DIV i
+- THEN
+- expecting(overflow, 'signed mult')
+- ELSE
+- expecting(none, 'signed mult')
+- END
+- END
+- ELSE
+- IF j>0
+- THEN
+- IF i<minInt DIV j
+- THEN
+- expecting(overflow, 'signed mult')
+- ELSE
+- expecting(none, 'signed mult')
+- END
+- ELSE
+- IF (i#0) AND (j<maxInt DIV i)
+- THEN
+- expecting(overflow, 'signed mult')
+- ELSE
+- expecting(none, 'signed mult')
+- END
+- END
+- END
+-END smallMult ;
+-
+-
+-(*
+- smult -
+-*)
+-
+-PROCEDURE smult (i, j: INTEGER) ;
+-VAR
+- li, lj, lt: LONGINT ;
+-BEGIN
+- IF SizeOfIntAndLongSame OR (SIZE(LONGINT)=SIZE(INTEGER))
+- THEN
+- smallMult(i, j)
+- ELSE
+- li := i ;
+- lj := j ;
+- lt := li * lj ;
+- IF (lt<VAL(LONGINT, minInt)) OR (lt>VAL(LONGINT, maxInt))
+- THEN
+- expecting(overflow, 'signed multiply')
+- ELSE
+- expecting(none, 'signed multiply')
+- END
+- END
+-END smult ;
+-
+-
+-(*
+- sneg -
+-*)
+-
+-PROCEDURE sneg (i: INTEGER) ;
+-BEGIN
+- IF i=minInt
+- THEN
+- expecting(overflow, 'signed negate')
+- ELSE
+- expecting(none, 'signed negate')
+- END
+-END sneg ;
+-
+-
+-(*
+- passed -
+-*)
+-
+-PROCEDURE expecting (e: error; a: ARRAY OF CHAR) ;
+-VAR
+- s: String ;
+- t: ADDRESS ;
+-BEGIN
+- WITH test[testNo] DO
+- IF expected#e
+- THEN
+- s := InitString(a) ;
+- t := string(s) ;
+- printf("test %s (%d) has failed\n", t, testNo) ;
+- s := KillString(s)
+- ELSIF Verbose
+- THEN
+- s := InitString(a) ;
+- t := string(s) ;
+- printf("test %s (%d) has passed\n", t, testNo) ;
+- s := KillString(s)
+- END
+- END
+-END expecting ;
+-
+-
+-(*
+- doTest -
+-*)
+-
+-PROCEDURE doTest ;
+-BEGIN
+- WITH test[testNo] DO
+- CASE op OF
+-
+- iadd : sadd(l, r) |
+- isub : ssub(l, r) |
+- ineg : sneg(l) |
+- imult: smult(l, r) |
+- idiv : |
+- imod : |
+-
+- END
+- END
+-END doTest ;
+-
+-
+-(*
+- doTests -
+-*)
+-
+-PROCEDURE doTests ;
+-BEGIN
+- testNo := 0 ;
+- WHILE testNo<=maxTest DO
+- doTest ;
+- INC(testNo)
+- END
+-END doTests ;
+-
+-
+-CONST
+- maxTest = 25 ;
+- maxInt = MAX(INTEGER) ;
+- minInt = MIN(INTEGER) ;
+-
+-TYPE
+- opcode = (iadd, isub, ineg, imult, idiv, imod) ;
+- error = (overflow, underflow, none) ;
+-
+- case = RECORD
+- l, r : INTEGER ;
+- op : opcode ;
+- expected: error ;
+- END ;
+- cases = ARRAY [0..maxTest] OF case ;
+-
+-VAR
+- test : cases ;
+- testNo: CARDINAL ;
+-
+-BEGIN
+- test := cases{{minInt, 0, ineg, overflow},
+- (* 1 *)
+- {maxInt, 0, ineg, none},
+- {minInt DIV 2, minInt DIV 2, iadd, none},
+- {minInt DIV 2, minInt DIV 2-1, iadd, overflow},
+- {maxInt DIV 2, maxInt DIV 2, iadd, none},
+- (* 4 *)
+- {maxInt DIV 2, maxInt DIV 2+1, iadd, none},
+- {maxInt DIV 2+1, maxInt DIV 2+1, iadd, overflow},
+- {maxInt, 1, iadd, overflow},
+- {maxInt, 0, iadd, none},
+- (* 8 *)
+- {minInt, -1, iadd, overflow},
+- {minInt, 0, iadd, none},
+- {-1, maxInt, isub, none},
+- {-2, maxInt, isub, overflow},
+- (* 12 *)
+- {minInt, 1, isub, overflow},
+- {minInt, 0, isub, none},
+- {maxInt, -2, isub, overflow},
+- {maxInt, minInt, isub, overflow},
+- (* 16 *)
+- {0, maxInt, isub, none},
+- {0, minInt, isub, overflow},
+- {-1, maxInt, isub, none},
+- {-2, maxInt, isub, overflow},
+- (* 20 *)
+- {maxInt, 2, imult, overflow},
+- {maxInt DIV 2, 2, imult, none},
+- {minInt DIV 2, 2, imult, none},
+- {minInt DIV 2-1, 2, imult, overflow},
+- (* 24 *)
+- {maxInt DIV 3, 3, imult, none},
+- {minInt DIV 3, 3, imult, none}
+- } ;
+- doTests
+-END integer.
+--- a/src/gcc/testsuite/gm2/types/run/pass/gm2.exp
++++ b/src/gcc/testsuite/gm2/types/run/pass/gm2.exp
+@@ -13,7 +13,7 @@
+ #
+ # You should have received a copy of the GNU General Public License
+ # along with this program; if not, write to the Free Software
+-# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
++# Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
+
+ if $tracelevel then {
+ strace $tracelevel
+@@ -24,14 +24,14 @@ load_lib gm2-torture.exp
+
+ set gm2src ${srcdir}/../gm2
+
+-gm2_init_pim "${srcdir}/gm2/types/run/pass"
++gm2_init_pim "${srcdir}/gm2/types/run/pass"
+
+ gm2_link_with d.o
+
+-set XGCC [lookfor_file $tmpdir xgcc];
++set XGCC [lookfor_file $rootme xgcc];
+
+ set output [exec rm -f d.o]
+-set output [exec ${XGCC} -B[file dirname $tmpdir] -g -c $srcdir/gm2/types/run/pass/d.c -o d.o]
++set output [exec ${XGCC} -B[file dirname $rootme]/gcc -g -c $srcdir/gm2/types/run/pass/d.c -o d.o]
+
+ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ # If we're only testing specific files and this isn't one of them, skip it.
+@@ -42,4 +42,4 @@ foreach testcase [lsort [glob -nocomplain $srcdir/$subdir/*.mod]] {
+ gm2-torture-execute $testcase "" "pass"
+ }
+
+-set output [exec rm -f d.o]
+\ No newline at end of file
++set output [exec rm -f d.o]
+--- a/src/gcc/testsuite/lib/gm2.exp
++++ b/src/gcc/testsuite/lib/gm2.exp
+@@ -92,8 +92,8 @@ proc gm2_init { args } {
+ if { $gm2_initialized == 1 } { return; }
+
+ set gm2_link_libraries "";
+- set GCC_UNDER_TEST [lookfor_file $tmpdir xgm2];
+- append GCC_UNDER_TEST " " -B[file dirname $tmpdir] " " ${args};
++ set GCC_UNDER_TEST [lookfor_file $rootme xgm2];
++ append GCC_UNDER_TEST " " -B[file dirname $rootme]/gcc " " ${args};
+ append GCC_UNDER_TEST " " -fno-diagnostics-show-caret
+ append GCC_UNDER_TEST " " -fno-diagnostics-show-line-numbers
+ append GCC_UNDER_TEST " " -fdiagnostics-color=never
+@@ -123,7 +123,6 @@ proc gm2_init { args } {
+ #
+
+ proc gm2_target_compile_default { source dest type options } {
+- global tmpdir;
+ global gluefile wrap_flags;
+ global GCC_UNDER_TEST;
+ global TOOL_OPTIONS;
+--- a/src/libgm2/ChangeLog
++++ b/src/libgm2/ChangeLog
+@@ -1,3 +1,20 @@
++2019-11-04 Gaius Mulley <gaius.mulley@southwales.ac.uk>
++
++ * libgm2/libcor/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libiso/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libpim/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/liblog/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libmin/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libulm/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libpth/Makefile.am: (MULTIOSSUBDIR) quote test.
++ * libgm2/libcor/Makefile.in: regenerated.
++ * libgm2/libiso/Makefile.in: regenerated.
++ * libgm2/libpim/Makefile.in: regenerated.
++ * libgm2/liblog/Makefile.in: regenerated.
++ * libgm2/libmin/Makefile.in: regenerated.
++ * libgm2/libulm/Makefile.in: regenerated.
++ * libgm2/libpth/Makefile.in: regenerated.
++
+ 2019-07-10 Gaius Mulley <gaius.mulley@southwales.ac.uk>
+
+ * libgm2/Makefile.am: use $(MAKE) rather than make.
+--- a/src/libgm2/libcor/Makefile.am
++++ b/src/libgm2/libcor/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libcor/Makefile.in
++++ b/src/libgm2/libcor/Makefile.in
+@@ -383,7 +383,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libiso/Makefile.am
++++ b/src/libgm2/libiso/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libiso/Makefile.in
++++ b/src/libgm2/libiso/Makefile.in
+@@ -399,7 +399,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/liblog/Makefile.am
++++ b/src/libgm2/liblog/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/liblog/Makefile.in
++++ b/src/libgm2/liblog/Makefile.in
+@@ -388,7 +388,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libmin/Makefile.am
++++ b/src/libgm2/libmin/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libmin/Makefile.in
++++ b/src/libgm2/libmin/Makefile.in
+@@ -386,7 +386,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libpim/Makefile.am
++++ b/src/libgm2/libpim/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libpim/Makefile.in
++++ b/src/libgm2/libpim/Makefile.in
+@@ -395,7 +395,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libpim/dtoa.c
++++ b/src/libgm2/libpim/dtoa.c
+@@ -18,7 +18,7 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA
+ 02110-1301, USA */
+
+ /*
+- * dtoa.c -
++ * dtoa.c -
+ */
+
+ #define GM2
+@@ -150,7 +150,7 @@ int dtoa_calcmaxsig (char *p, int ndigits)
+ if (o == NULL)
+ return strlen(p)+x;
+ else {
+- strncpy(o, o+1, ndigits-(o-p));
++ memmove (o, o+1, ndigits-(o-p));
+ return o-p+x;
+ }
+ }
+@@ -197,7 +197,7 @@ int dtoa_calcdecimal (char *p, int str_size, int ndigits)
+ int dtoa_calcsign (char *p, int str_size)
+ {
+ if (p[0] == '-') {
+- strncpy(p, p+1, str_size-1);
++ memmove (p, p+1, str_size-1);
+ return TRUE;
+ } else
+ return FALSE;
+--- a/src/libgm2/libpth/Makefile.am
++++ b/src/libgm2/libpth/Makefile.am
+@@ -22,7 +22,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libpth/Makefile.in
++++ b/src/libgm2/libpth/Makefile.in
+@@ -307,7 +307,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libulm/Makefile.am
++++ b/src/libgm2/libulm/Makefile.am
+@@ -21,7 +21,7 @@ toolexecdir=@toolexecdir@
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+
+--- a/src/libgm2/libulm/Makefile.in
++++ b/src/libgm2/libulm/Makefile.in
+@@ -398,7 +398,7 @@ version := $(shell $(CC) -dumpversion)
+ libsubdir = $(libdir)/gcc/$(host_noncanonical)/$(version)
+ MULTIDIR := $(shell $(CC) $(CFLAGS) -print-multi-directory)
+ MULTIOSDIR := $(shell $(CC) $(CFLAGS) -print-multi-os-directory)
+-MULTIOSSUBDIR := $(shell if test $(MULTIOSDIR) != .; then echo /$(MULTIOSDIR); fi)
++MULTIOSSUBDIR := $(shell if test x$(MULTIOSDIR) != x.; then echo /$(MULTIOSDIR); fi)
+ inst_libdir = $(libsubdir)$(MULTISUBDIR)
+ inst_slibdir = $(slibdir)$(MULTIOSSUBDIR)
+