diff options
Diffstat (limited to 'debian/patches/gm2-updates.diff')
-rw-r--r-- | debian/patches/gm2-updates.diff | 32628 |
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 (¤tModule->defF.enumFixup); ++ { ++ n = getNextFixup (¤tModule->defF.enumFixup); ++ } + else if (decl_isImp (currentModule)) +- n = getNextFixup (¤tModule->impF.enumFixup); ++ { ++ /* avoid dangling else. */ ++ n = getNextFixup (¤tModule->impF.enumFixup); ++ } + else if (decl_isModule (currentModule)) +- n = getNextFixup (¤tModule->moduleF.enumFixup); ++ { ++ /* avoid dangling else. */ ++ n = getNextFixup (¤tModule->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 (¤tModule->defF.constFixup); ++ { ++ return getNextFixup (¤tModule->defF.constFixup); ++ } + else if (decl_isImp (currentModule)) +- return getNextFixup (¤tModule->impF.constFixup); ++ { ++ /* avoid dangling else. */ ++ return getNextFixup (¤tModule->impF.constFixup); ++ } + else if (decl_isModule (currentModule)) +- return getNextFixup (¤tModule->moduleF.constFixup); ++ { ++ /* avoid dangling else. */ ++ return getNextFixup (¤tModule->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) + |