commit-hurd
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[mig] 01/02: Imported Upstream version 1.5


From: Samuel Thibault
Subject: [mig] 01/02: Imported Upstream version 1.5
Date: Fri, 17 Apr 2015 02:00:55 +0000

This is an automated email from the git hooks/post-receive script.

sthibault pushed a commit to branch master
in repository mig.

commit a1120f72097cd1057cd5297e9b68a407e4686b6d
Author: Samuel Thibault <address@hidden>
Date:   Thu Apr 16 23:35:06 2015 +0000

    Imported Upstream version 1.5
---
 ChangeLog              |  141 ++++
 INSTALL                |    4 +-
 Makefile.am            |    2 +-
 Makefile.in            |   24 +-
 NEWS                   |   40 +-
 aclocal.m4             |  128 +++-
 build-aux/compile      |  347 +++++++++
 build-aux/config.guess |  192 +----
 build-aux/config.sub   |   30 +-
 build-aux/missing      |    4 +-
 build-aux/ylwrap       |   26 +-
 configure              |  133 +++-
 configure.ac           |    8 +-
 global.c               |    1 +
 global.h               |    1 +
 header.c               |   11 +
 lexxer.c               | 1064 ++++++++++++++-------------
 lexxer.l               |    4 +
 parser.c               | 1900 ++++++++++++++++++++++--------------------------
 parser.h               |    1 +
 parser.y               |   17 +
 routine.c              |    4 +-
 server.c               |  148 +++-
 type.c                 |   10 +-
 type.h                 |    2 +
 user.c                 |   41 +-
 utils.c                |   17 +-
 write.h                |    1 +
 28 files changed, 2446 insertions(+), 1855 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index e0b29d4..77306dd 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,144 @@
+2015-04-10  Thomas Schwinge  <address@hidden>
+
+       GNU MIG 1.5.
+       * configure.ac (AC_INIT): Set version to 1.5.
+       * NEWS: Finalize for 1.5.
+
+2015-02-15  Justus Winter  <address@hidden>
+
+       Do not generate code dereferencing type-punned pointers
+       For variable-length arrays, up to 2048 bytes are transmitted inline.
+       If the array is larger, the data is transmitted out-of-line, and a
+       pointer to a vm_allocated region is stored at the beginning of the
+       array.
+
+       Previously, the generated code casted the field.  Use a union instead.
+
+       This fixes the gcc warning `dereferencing type-punned pointer will
+       break strict-aliasing rules [-Wstrict-aliasing]'.
+
+       * global.c (OOLPostfix): New variable.
+       * global.h (OOLPostfix): New declaration.
+       * server.c (WriteServerCallArg): Avoid cast.
+       (WriteDestroyArg): Likewise.
+       (WritePackArgValue): Likewise.
+       (WritePackArg): Likewise.
+       * user.c (WriteExtractArgValue): Likewise.
+       * utils.c (WriteFieldDeclPrim): Generate a union with an additional
+       pointer field for variable-length arrays.
+
+2015-02-06  David Michael  <address@hidden>
+
+       Test the configured yacc program
+       * configure.ac (yacc_is_bison): Test the configured yacc program.
+
+2015-02-06  Yves-Gael Cheny ( irc hurdman_begin )  <address@hidden>
+
+       Check that yacc is provided by bison
+       * configure.ac: Check that yacc --version contains bison.
+
+2014-12-01  Justus Winter  <address@hidden>
+
+       Add static branch prediction to type checks
+       Annotate generated type checks with static branch prediction
+       optimizing well-formed messages.
+
+       * utils.c (WriteBogusDefines): Define `mig_unlikely' if not defined.
+       * server.c: Use `mig_unlikely' in generated type checks.
+       * user.c: Likewise.
+
+2014-11-06  Justus Winter  <address@hidden>
+
+       Provide default implementations for server functions
+       By providing default implementations, servers can provide partial
+       implementations of protocols without having to stub out functions.
+
+       * server.c (WriteDefaultRoutine): New function.
+       (WriteRoutine): Call WriteDefaultRoutine.
+
+2014-10-10  Justus Winter  <address@hidden>
+
+       Add support for protected payloads
+       Add support for protected payloads. The new `intranpayload' option can
+       be used to specify a translation function translating payloads to
+       values of the translated type.  This function will be used instead of
+       the `intran' function to to look up the receiving object of a message
+       in a server.
+
+       This makes it easy to use the protected payloads introduced in GNU
+       Mach 1.5.
+
+       An inTransPayload function translates payloads to objects, like an
+       inTrans function translates from port names to objects.  Generate code
+       in the server routine to optimize lookups to the receiver of the
+       message.
+
+       Additionally, if no intran function is provided, but an intranpayload
+       function is, it is expected to translate from payloads to port names.
+       This is used to preserve the semantics in case the server routine
+       expects a port name.
+
+       * NEWS: Add item.
+       * lexxer.l: Emit syInTranPayload.
+       * parser.h: Define syInTranPayload.
+       * parser.y (TransTypeSpec): Handle syInTranPayload.
+       * type.h (struct ipc_type): Add itInTransPayload.
+       * server.c (WriteExtractArgValue): If a payload-aware intrans function
+       has been specified, use it to get a reference to the receiving object.
+       * routine.c (rtAugmentArgKind): Force the use of a local variable if a
+       payload-aware translate-in function is defined.
+
+2014-09-24  Justus Winter  <address@hidden>
+
+       Update NEWS file
+
+2014-02-21  Justus Winter  <address@hidden>
+
+       Fix variable-sized c strings
+       Previously, the terminating zero of variable-sized c strings was only
+       included when copying the message if the length of the string was not
+       a multiple of four.  mig_strncpy returns the length of the string
+       excluding the terminating zero.  Fix this by properly accounting for
+       the byte for the terminating zero in the array length.
+
+       * server.c (WritePackArgValue): Account for the terminating zero in
+       the array length.
+       * user.c (WritePackArgValue): Likewise.
+
+2013-12-16  Justus Winter  <address@hidden>
+
+       Generate a x_server_routine in the sheader so it can be inlined
+       * header.c (WriteServerHeader): Emit a x_server_routine that can be
+         inlined.
+       * server.c (WriteEpilog): Export the x_routines array so it can be
+         used from the inlined x_server_routine.
+
+       Move the generation of x_server_routine function into a function
+       * server.c (WriteSubsystemServerRoutine): New function.
+       (WriteEpilog): Adjust accordingly.
+       * write.h (WriteSubsystemServerRoutine): New declaration.
+
+       Clean up generated sources
+       * Makefile (CLEANFILES): Add generated source files lexxer.c and 
parser.c.
+
+       Avoid a compiler warning in WriteDefines
+       * header.c (WriteDefines): Avoid warning about unused parameter.
+
+2013-12-16  Justus Winter  <address@hidden>
+
+       Advise flex not to generate the input function
+       This avoids a warning about input being unused.
+
+       * lexxer.l: Define YY_NO_INPUT.
+
+2013-12-15  Marin Ramesa  <address@hidden>
+
+       mig/server.c (WriteVarDecls): quiet GCC warning about set but unused 
variable
+       This is again that code where variable is assigned to itself, but
+       I don't know how to fix this the other way.
+
+       * server.c (WriteVarDecls) (msgh_simple): Assign to itself.
+
 2013-09-27  Thomas Schwinge  <address@hidden>
 
        GNU MIG 1.4.
diff --git a/INSTALL b/INSTALL
index 007e939..2099840 100644
--- a/INSTALL
+++ b/INSTALL
@@ -12,8 +12,8 @@ without warranty of any kind.
 Basic Installation
 ==================
 
-   Briefly, the shell commands `./configure; make; make install' should
-configure, build, and install this package.  The following
+   Briefly, the shell command `./configure && make && make install'
+should configure, build, and install this package.  The following
 more-detailed instructions are generic; see the `README' file for
 instructions specific to this package.  Some packages provide this
 `INSTALL' file but do not implement all of the features documented
diff --git a/Makefile.am b/Makefile.am
index 33bc768..3e6dfcf 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -5,7 +5,7 @@ bin_SCRIPTS = mig
 
 EXTRA_DIST = gensym.awk cpu.sym
 
-CLEANFILES = cpu.h *.sym[co]
+CLEANFILES = cpu.h *.sym[co] lexxer.c parser.c
 
 AWK_V = $(AWK_V_$(V))
 AWK_V_ = $(AWK_V_$(AM_DEFAULT_VERBOSITY))
diff --git a/Makefile.in b/Makefile.in
index b9bd34f..1e27145 100644
--- a/Makefile.in
+++ b/Makefile.in
@@ -1,4 +1,4 @@
-# Makefile.in generated by automake 1.13.3 from Makefile.am.
+# Makefile.in generated by automake 1.14.1 from Makefile.am.
 # @configure_input@
 
 # Copyright (C) 1994-2013 Free Software Foundation, Inc.
@@ -86,9 +86,10 @@ DIST_COMMON = INSTALL NEWS README AUTHORS ChangeLog \
        $(srcdir)/Makefile.in $(srcdir)/Makefile.am \
        $(top_srcdir)/configure $(am__configure_deps) $(srcdir)/mig.in \
        lexxer.c parser.c $(top_srcdir)/build-aux/depcomp \
-       $(top_srcdir)/build-aux/ylwrap COPYING build-aux/config.guess \
-       build-aux/config.sub build-aux/depcomp build-aux/install-sh \
-       build-aux/missing build-aux/ylwrap \
+       $(top_srcdir)/build-aux/ylwrap COPYING build-aux/compile \
+       build-aux/config.guess build-aux/config.sub build-aux/depcomp \
+       build-aux/install-sh build-aux/missing build-aux/ylwrap \
+       $(top_srcdir)/build-aux/compile \
        $(top_srcdir)/build-aux/config.guess \
        $(top_srcdir)/build-aux/config.sub \
        $(top_srcdir)/build-aux/install-sh \
@@ -336,7 +337,7 @@ top_builddir = @top_builddir@
 top_srcdir = @top_srcdir@
 bin_SCRIPTS = mig
 EXTRA_DIST = gensym.awk cpu.sym
-CLEANFILES = cpu.h *.sym[co]
+CLEANFILES = cpu.h *.sym[co] lexxer.c parser.c
 AWK_V = $(AWK_V_$(V))
 AWK_V_ = $(AWK_V_$(AM_DEFAULT_VERBOSITY))
 AWK_V_0 = @echo "  AWK    $@";
@@ -498,14 +499,14 @@ distclean-compile:
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(COMPILE) -c $<
address@hidden@ $(address@hidden@)$(COMPILE) -c -o $@ $<
 
 .c.obj:
 @am__fastdepCC_TRUE@   $(AM_V_CC)$(COMPILE) -MT $@ -MD -MP -MF 
$(DEPDIR)/$*.Tpo -c -o $@ `$(CYGPATH_W) '$<'`
 @am__fastdepCC_TRUE@   $(AM_V_at)$(am__mv) $(DEPDIR)/$*.Tpo $(DEPDIR)/$*.Po
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      $(AM_V_CC)source='$<' object='$@' 
libtool=no @AMDEPBACKSLASH@
 @AMDEP_TRUE@@am__fastdepCC_FALSE@      DEPDIR=$(DEPDIR) $(CCDEPMODE) 
$(depcomp) @AMDEPBACKSLASH@
address@hidden@ $(address@hidden@)$(COMPILE) -c `$(CYGPATH_W) '$<'`
address@hidden@ $(address@hidden@)$(COMPILE) -c -o $@ `$(CYGPATH_W) '$<'`
 
 .l.c:
        $(AM_V_LEX)$(am__skiplex) $(SHELL) $(YLWRAP) $< $(LEX_OUTPUT_ROOT).c $@ 
-- $(LEXCOMPILE)
@@ -630,10 +631,16 @@ dist-xz: distdir
        $(am__post_remove_distdir)
 
 dist-tarZ: distdir
+       @echo WARNING: "Support for shar distribution archives is" \
+                      "deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        tardir=$(distdir) && $(am__tar) | compress -c >$(distdir).tar.Z
        $(am__post_remove_distdir)
 
 dist-shar: distdir
+       @echo WARNING: "Support for distribution archives compressed with" \
+                      "legacy program 'compress' is deprecated." >&2
+       @echo WARNING: "It will be removed altogether in Automake 2.0" >&2
        shar $(distdir) | GZIP=$(GZIP_ENV) gzip -c >$(distdir).shar.gz
        $(am__post_remove_distdir)
 
@@ -675,9 +682,10 @@ distcheck: dist
          && dc_destdir="$${TMPDIR-/tmp}/am-dc-$$$$/" \
          && am__cwd=`pwd` \
          && $(am__cd) $(distdir)/_build \
-         && ../configure --srcdir=.. --prefix="$$dc_install_base" \
+         && ../configure \
            $(AM_DISTCHECK_CONFIGURE_FLAGS) \
            $(DISTCHECK_CONFIGURE_FLAGS) \
+           --srcdir=.. --prefix="$$dc_install_base" \
          && $(MAKE) $(AM_MAKEFLAGS) \
          && $(MAKE) $(AM_MAKEFLAGS) dvi \
          && $(MAKE) $(AM_MAKEFLAGS) check \
diff --git a/NEWS b/NEWS
index 6c1bd19..087724c 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,20 @@
-2013-09-27
-Version 1.4
+Version 1.5 (2015-04-10)
+
+* Add support for protected payloads.  The new `intranpayload' option
+  can be used to specify a translation function translating payloads
+  to values of the translated type.  This function will be used
+  instead of the `intran' function to to look up the receiving object
+  of a message in a server.  This makes it easy to use the protected
+  payloads introduced in GNU Mach 1.5.
+
+* Emit `X_server_routine' functions that can be inlined reducing the
+  message dispatch overhead.
+
+* Improve support for variable-sized C strings.
+
+* Fix a warning when compiling generated files.
+
+Version 1.4 (2013-09-27)
 
 * Don't accept the `-R' (msg_send) command line option anymore and make the
   `-r' one (msg_rpc) a no-op.
@@ -17,8 +32,7 @@ Version 1.4
 * Spurious deallocation of out-of-line memory has been fixed in case of an
   error while processing the RPC.
 
-2002-08-29
-Version 1.3.1
+Version 1.3.1 (2002-08-29)
 
 * Fix warnings when compiling generated files with GCC 3.x.
 
@@ -27,8 +41,7 @@ Version 1.3.1
 
 * Alpha fixes.
 
-2002-03-08
-Version 1.3
+Version 1.3 (2002-03-08)
 
 * Minor bug fixes.
 
@@ -39,8 +52,7 @@ Version 1.3
 * The debian/ subdirectory of packaging files is now included in the
   MIG source distribution.
 
-2001-07-07
-Version 1.2
+Version 1.2 (2001-07-07)
 
 * New option -n to suppress default output file creation.
   With -n, no output files are created except those named
@@ -63,25 +75,21 @@ Version 1.2
 * Output files of C source now start by defining _GNU_SOURCE,
   for compatibility with the GNU C library on GNU/Hurd.
 
-1999-06-22
-Version 1.1
+Version 1.1 (1999-06-22)
 
 * First official net release.
 
-1999-05-23
-Version 1.0.2
+Version 1.0.2 (1999-05-23)
 
 * Understand normal GNU --version and --help args.
 * Find CPP in a more flexible fashion.
 
-1998-12-04
-Version 1.0.1
+Version 1.0.1 (1998-12-04)
 
 * This release fixes a bug in the `mig' driver script that made it fail to
   invoke the C preprocessor properly.
 
-1998-08-19
-Version 1.0
+Version 1.0 (1998-08-19)
 
 * MIG has been split into a separate distribution to make it easier to set
   up a compilation environment for GNU Mach and Hurd systems.  The mig
diff --git a/aclocal.m4 b/aclocal.m4
index 2cb7ad0..89ff80a 100644
--- a/aclocal.m4
+++ b/aclocal.m4
@@ -1,4 +1,4 @@
-# generated automatically by aclocal 1.13.3 -*- Autoconf -*-
+# generated automatically by aclocal 1.14.1 -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 
@@ -32,10 +32,10 @@ To do so, use the procedure documented by the package, 
typically 'autoreconf'.])
 # generated from the m4 files accompanying Automake X.Y.
 # (This private macro should not be called outside this file.)
 AC_DEFUN([AM_AUTOMAKE_VERSION],
-[am__api_version='1.13'
+[am__api_version='1.14'
 dnl Some users find AM_AUTOMAKE_VERSION and mistake it for a way to
 dnl require some minimum version.  Point them to the right macro.
-m4_if([$1], [1.13.3], [],
+m4_if([$1], [1.14.1], [],
       [AC_FATAL([Do not call $0, use AM_INIT_AUTOMAKE([$1]).])])dnl
 ])
 
@@ -51,7 +51,7 @@ m4_define([_AM_AUTOCONF_VERSION], [])
 # Call AM_AUTOMAKE_VERSION and AM_AUTOMAKE_VERSION so they can be traced.
 # This function is AC_REQUIREd by AM_INIT_AUTOMAKE.
 AC_DEFUN([AM_SET_CURRENT_AUTOMAKE_VERSION],
-[AM_AUTOMAKE_VERSION([1.13.3])dnl
+[AM_AUTOMAKE_VERSION([1.14.1])dnl
 m4_ifndef([AC_AUTOCONF_VERSION],
   [m4_copy([m4_PACKAGE_VERSION], [AC_AUTOCONF_VERSION])])dnl
 _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
@@ -103,10 +103,9 @@ _AM_AUTOCONF_VERSION(m4_defn([AC_AUTOCONF_VERSION]))])
 # configured tree to be moved without reconfiguration.
 
 AC_DEFUN([AM_AUX_DIR_EXPAND],
-[dnl Rely on autoconf to set up CDPATH properly.
-AC_PREREQ([2.50])dnl
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+[AC_REQUIRE([AC_CONFIG_AUX_DIR_DEFAULT])dnl
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 ])
 
 # AM_CONDITIONAL                                            -*- Autoconf -*-
@@ -418,6 +417,12 @@ AC_DEFUN([AM_OUTPUT_DEPENDENCY_COMMANDS],
 # This macro actually does too much.  Some checks are only needed if
 # your package does certain things.  But this isn't really a big deal.
 
+dnl Redefine AC_PROG_CC to automatically invoke _AM_PROG_CC_C_O.
+m4_define([AC_PROG_CC],
+m4_defn([AC_PROG_CC])
+[_AM_PROG_CC_C_O
+])
+
 # AM_INIT_AUTOMAKE(PACKAGE, VERSION, [NO-DEFINE])
 # AM_INIT_AUTOMAKE([OPTIONS])
 # -----------------------------------------------
@@ -526,6 +531,48 @@ dnl macro is hooked onto _AC_COMPILER_EXEEXT early, see 
below.
 AC_CONFIG_COMMANDS_PRE(dnl
 [m4_provide_if([_AM_COMPILER_EXEEXT],
   [AM_CONDITIONAL([am__EXEEXT], [test -n "$EXEEXT"])])])dnl
+
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell address@hidden about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    AC_MSG_ERROR([Your 'rm' program is bad, sorry.])
+  fi
+fi
 ])
 
 dnl Hook into '_AC_COMPILER_EXEEXT' early to learn its expansion.  Do not
@@ -534,7 +581,6 @@ dnl mangled by Autoconf and run in a shell conditional 
statement.
 m4_define([_AC_COMPILER_EXEEXT],
 m4_defn([_AC_COMPILER_EXEEXT])[m4_provide([_AM_COMPILER_EXEEXT])])
 
-
 # When config.status generates a header, we must update the stamp-h file.
 # This file resides in the same directory as the config header
 # that is generated.  The stamp files are numbered to have different names.
@@ -734,6 +780,70 @@ AC_DEFUN([_AM_SET_OPTIONS],
 AC_DEFUN([_AM_IF_OPTION],
 [m4_ifset(_AM_MANGLE_OPTION([$1]), [$2], [$3])])
 
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# _AM_PROG_CC_C_O
+# ---------------
+# Like AC_PROG_CC_C_O, but changed for automake.  We rewrite AC_PROG_CC
+# to automatically call this.
+AC_DEFUN([_AM_PROG_CC_C_O],
+[AC_REQUIRE([AM_AUX_DIR_EXPAND])dnl
+AC_REQUIRE_AUX_FILE([compile])dnl
+AC_LANG_PUSH([C])dnl
+AC_CACHE_CHECK(
+  [whether $CC understands -c and -o together],
+  [am_cv_prog_cc_c_o],
+  [AC_LANG_CONFTEST([AC_LANG_PROGRAM([])])
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if AM_RUN_LOG([$CC -c conftest.$ac_ext -o conftest2.$ac_objext]) \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i])
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+AC_LANG_POP([C])])
+
+# For backward compatibility.
+AC_DEFUN_ONCE([AM_PROG_CC_C_O], [AC_REQUIRE([AC_PROG_CC])])
+
+# Copyright (C) 2001-2013 Free Software Foundation, Inc.
+#
+# This file is free software; the Free Software Foundation
+# gives unlimited permission to copy and/or distribute it,
+# with or without modifications, as long as this notice is preserved.
+
+# AM_RUN_LOG(COMMAND)
+# -------------------
+# Run COMMAND, save the exit status in ac_status, and log it.
+# (This has been adapted from Autoconf's _AC_RUN_LOG macro.)
+AC_DEFUN([AM_RUN_LOG],
+[{ echo "$as_me:$LINENO: $1" >&AS_MESSAGE_LOG_FD
+   ($1) >&AS_MESSAGE_LOG_FD 2>&AS_MESSAGE_LOG_FD
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&AS_MESSAGE_LOG_FD
+   (exit $ac_status); }])
+
 # Check to make sure that the build environment is sane.    -*- Autoconf -*-
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
diff --git a/build-aux/compile b/build-aux/compile
new file mode 100755
index 0000000..531136b
--- /dev/null
+++ b/build-aux/compile
@@ -0,0 +1,347 @@
+#! /bin/sh
+# Wrapper for compilers which do not understand '-c -o'.
+
+scriptversion=2012-10-14.11; # UTC
+
+# Copyright (C) 1999-2013 Free Software Foundation, Inc.
+# Written by Tom Tromey <address@hidden>.
+#
+# This program is free software; you can redistribute it and/or modify
+# it under the terms of the GNU General Public License as published by
+# the Free Software Foundation; either version 2, or (at your option)
+# any later version.
+#
+# This program is distributed in the hope that it will be useful,
+# but WITHOUT ANY WARRANTY; without even the implied warranty of
+# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
+# GNU General Public License for more details.
+#
+# You should have received a copy of the GNU General Public License
+# along with this program.  If not, see <http://www.gnu.org/licenses/>.
+
+# As a special exception to the GNU General Public License, if you
+# distribute this file as part of a program that contains a
+# configuration script generated by Autoconf, you may include it under
+# the same distribution terms that you use for the rest of that program.
+
+# This file is maintained in Automake, please report
+# bugs to <address@hidden> or send patches to
+# <address@hidden>.
+
+nl='
+'
+
+# We need space, tab and new line, in precisely that order.  Quoting is
+# there to prevent tools from complaining about whitespace usage.
+IFS=" ""       $nl"
+
+file_conv=
+
+# func_file_conv build_file lazy
+# Convert a $build file to $host form and store it in $file
+# Currently only supports Windows hosts. If the determined conversion
+# type is listed in (the comma separated) LAZY, no conversion will
+# take place.
+func_file_conv ()
+{
+  file=$1
+  case $file in
+    / | /[!/]*) # absolute file, and not a UNC file
+      if test -z "$file_conv"; then
+       # lazily determine how to convert abs files
+       case `uname -s` in
+         MINGW*)
+           file_conv=mingw
+           ;;
+         CYGWIN*)
+           file_conv=cygwin
+           ;;
+         *)
+           file_conv=wine
+           ;;
+       esac
+      fi
+      case $file_conv/,$2, in
+       *,$file_conv,*)
+         ;;
+       mingw/*)
+         file=`cmd //C echo "$file " | sed -e 's/"\(.*\) " *$/\1/'`
+         ;;
+       cygwin/*)
+         file=`cygpath -m "$file" || echo "$file"`
+         ;;
+       wine/*)
+         file=`winepath -w "$file" || echo "$file"`
+         ;;
+      esac
+      ;;
+  esac
+}
+
+# func_cl_dashL linkdir
+# Make cl look for libraries in LINKDIR
+func_cl_dashL ()
+{
+  func_file_conv "$1"
+  if test -z "$lib_path"; then
+    lib_path=$file
+  else
+    lib_path="$lib_path;$file"
+  fi
+  linker_opts="$linker_opts -LIBPATH:$file"
+}
+
+# func_cl_dashl library
+# Do a library search-path lookup for cl
+func_cl_dashl ()
+{
+  lib=$1
+  found=no
+  save_IFS=$IFS
+  IFS=';'
+  for dir in $lib_path $LIB
+  do
+    IFS=$save_IFS
+    if $shared && test -f "$dir/$lib.dll.lib"; then
+      found=yes
+      lib=$dir/$lib.dll.lib
+      break
+    fi
+    if test -f "$dir/$lib.lib"; then
+      found=yes
+      lib=$dir/$lib.lib
+      break
+    fi
+    if test -f "$dir/lib$lib.a"; then
+      found=yes
+      lib=$dir/lib$lib.a
+      break
+    fi
+  done
+  IFS=$save_IFS
+
+  if test "$found" != yes; then
+    lib=$lib.lib
+  fi
+}
+
+# func_cl_wrapper cl arg...
+# Adjust compile command to suit cl
+func_cl_wrapper ()
+{
+  # Assume a capable shell
+  lib_path=
+  shared=:
+  linker_opts=
+  for arg
+  do
+    if test -n "$eat"; then
+      eat=
+    else
+      case $1 in
+       -o)
+         # configure might choose to run compile as 'compile cc -o foo foo.c'.
+         eat=1
+         case $2 in
+           *.o | *.[oO][bB][jJ])
+             func_file_conv "$2"
+             set x "$@" -Fo"$file"
+             shift
+             ;;
+           *)
+             func_file_conv "$2"
+             set x "$@" -Fe"$file"
+             shift
+             ;;
+         esac
+         ;;
+       -I)
+         eat=1
+         func_file_conv "$2" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -I*)
+         func_file_conv "${1#-I}" mingw
+         set x "$@" -I"$file"
+         shift
+         ;;
+       -l)
+         eat=1
+         func_cl_dashl "$2"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -l*)
+         func_cl_dashl "${1#-l}"
+         set x "$@" "$lib"
+         shift
+         ;;
+       -L)
+         eat=1
+         func_cl_dashL "$2"
+         ;;
+       -L*)
+         func_cl_dashL "${1#-L}"
+         ;;
+       -static)
+         shared=false
+         ;;
+       -Wl,*)
+         arg=${1#-Wl,}
+         save_ifs="$IFS"; IFS=','
+         for flag in $arg; do
+           IFS="$save_ifs"
+           linker_opts="$linker_opts $flag"
+         done
+         IFS="$save_ifs"
+         ;;
+       -Xlinker)
+         eat=1
+         linker_opts="$linker_opts $2"
+         ;;
+       -*)
+         set x "$@" "$1"
+         shift
+         ;;
+       *.cc | *.CC | *.cxx | *.CXX | *.[cC]++)
+         func_file_conv "$1"
+         set x "$@" -Tp"$file"
+         shift
+         ;;
+       *.c | *.cpp | *.CPP | *.lib | *.LIB | *.Lib | *.OBJ | *.obj | *.[oO])
+         func_file_conv "$1" mingw
+         set x "$@" "$file"
+         shift
+         ;;
+       *)
+         set x "$@" "$1"
+         shift
+         ;;
+      esac
+    fi
+    shift
+  done
+  if test -n "$linker_opts"; then
+    linker_opts="-link$linker_opts"
+  fi
+  exec "$@" $linker_opts
+  exit 1
+}
+
+eat=
+
+case $1 in
+  '')
+     echo "$0: No command.  Try '$0 --help' for more information." 1>&2
+     exit 1;
+     ;;
+  -h | --h*)
+    cat <<\EOF
+Usage: compile [--help] [--version] PROGRAM [ARGS]
+
+Wrapper for compilers which do not understand '-c -o'.
+Remove '-o dest.o' from ARGS, run PROGRAM with the remaining
+arguments, and rename the output as expected.
+
+If you are trying to build a whole package this is not the
+right script to run: please start by reading the file 'INSTALL'.
+
+Report bugs to <address@hidden>.
+EOF
+    exit $?
+    ;;
+  -v | --v*)
+    echo "compile $scriptversion"
+    exit $?
+    ;;
+  cl | *[/\\]cl | cl.exe | *[/\\]cl.exe )
+    func_cl_wrapper "$@"      # Doesn't return...
+    ;;
+esac
+
+ofile=
+cfile=
+
+for arg
+do
+  if test -n "$eat"; then
+    eat=
+  else
+    case $1 in
+      -o)
+       # configure might choose to run compile as 'compile cc -o foo foo.c'.
+       # So we strip '-o arg' only if arg is an object.
+       eat=1
+       case $2 in
+         *.o | *.obj)
+           ofile=$2
+           ;;
+         *)
+           set x "$@" -o "$2"
+           shift
+           ;;
+       esac
+       ;;
+      *.c)
+       cfile=$1
+       set x "$@" "$1"
+       shift
+       ;;
+      *)
+       set x "$@" "$1"
+       shift
+       ;;
+    esac
+  fi
+  shift
+done
+
+if test -z "$ofile" || test -z "$cfile"; then
+  # If no '-o' option was seen then we might have been invoked from a
+  # pattern rule where we don't need one.  That is ok -- this is a
+  # normal compilation that the losing compiler can handle.  If no
+  # '.c' file was seen then we are probably linking.  That is also
+  # ok.
+  exec "$@"
+fi
+
+# Name of file we expect compiler to create.
+cofile=`echo "$cfile" | sed 's|^.*[\\/]||; s|^[a-zA-Z]:||; s/\.c$/.o/'`
+
+# Create the lock directory.
+# Note: use '[/\\:.-]' here to ensure that we don't use the same name
+# that we are using for the .o file.  Also, base the name on the expected
+# object file name, since that is what matters with a parallel build.
+lockdir=`echo "$cofile" | sed -e 's|[/\\:.-]|_|g'`.d
+while true; do
+  if mkdir "$lockdir" >/dev/null 2>&1; then
+    break
+  fi
+  sleep 1
+done
+# FIXME: race condition here if user kills between mkdir and trap.
+trap "rmdir '$lockdir'; exit 1" 1 2 15
+
+# Run the compile.
+"$@"
+ret=$?
+
+if test -f "$cofile"; then
+  test "$cofile" = "$ofile" || mv "$cofile" "$ofile"
+elif test -f "${cofile}bj"; then
+  test "${cofile}bj" = "$ofile" || mv "${cofile}bj" "$ofile"
+fi
+
+rmdir "$lockdir"
+exit $ret
+
+# Local Variables:
+# mode: shell-script
+# sh-indentation: 2
+# eval: (add-hook 'write-file-hooks 'time-stamp)
+# time-stamp-start: "scriptversion="
+# time-stamp-format: "%:y-%02m-%02d.%02H"
+# time-stamp-time-zone: "UTC"
+# time-stamp-end: "; # UTC"
+# End:
diff --git a/build-aux/config.guess b/build-aux/config.guess
index b79252d..1f5c50c 100755
--- a/build-aux/config.guess
+++ b/build-aux/config.guess
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Attempt to guess a canonical system name.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-06-10'
+timestamp='2014-03-23'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -50,7 +50,7 @@ version="\
 GNU config.guess ($timestamp)
 
 Originally written by Per Bothner.
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -149,7 +149,7 @@ Linux|GNU|GNU/*)
        LIBC=gnu
        #endif
        EOF
-       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC'`
+       eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^LIBC' | sed 's, 
,,g'`
        ;;
 esac
 
@@ -826,7 +826,7 @@ EOF
     *:MINGW*:*)
        echo ${UNAME_MACHINE}-pc-mingw32
        exit ;;
-    i*:MSYS*:*)
+    *:MSYS*:*)
        echo ${UNAME_MACHINE}-pc-msys
        exit ;;
     i*:windows32*:*)
@@ -969,10 +969,10 @@ EOF
        eval `$CC_FOR_BUILD -E $dummy.c 2>/dev/null | grep '^CPU'`
        test x"${CPU}" != x && { echo "${CPU}-unknown-linux-${LIBC}"; exit; }
        ;;
-    or1k:Linux:*:*)
-       echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
+    openrisc*:Linux:*:*)
+       echo or1k-unknown-linux-${LIBC}
        exit ;;
-    or32:Linux:*:*)
+    or32:Linux:*:* | or1k*:Linux:*:*)
        echo ${UNAME_MACHINE}-unknown-linux-${LIBC}
        exit ;;
     padre:Linux:*:*)
@@ -1260,16 +1260,26 @@ EOF
        if test "$UNAME_PROCESSOR" = unknown ; then
            UNAME_PROCESSOR=powerpc
        fi
-       if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
-           if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') | \
-               (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
-               grep IS_64BIT_ARCH >/dev/null
-           then
-               case $UNAME_PROCESSOR in
-                   i386) UNAME_PROCESSOR=x86_64 ;;
-                   powerpc) UNAME_PROCESSOR=powerpc64 ;;
-               esac
+       if test `echo "$UNAME_RELEASE" | sed -e 's/\..*//'` -le 10 ; then
+           if [ "$CC_FOR_BUILD" != 'no_compiler_found' ]; then
+               if (echo '#ifdef __LP64__'; echo IS_64BIT_ARCH; echo '#endif') 
| \
+                   (CCOPTS= $CC_FOR_BUILD -E - 2>/dev/null) | \
+                   grep IS_64BIT_ARCH >/dev/null
+               then
+                   case $UNAME_PROCESSOR in
+                       i386) UNAME_PROCESSOR=x86_64 ;;
+                       powerpc) UNAME_PROCESSOR=powerpc64 ;;
+                   esac
+               fi
            fi
+       elif test "$UNAME_PROCESSOR" = i386 ; then
+           # Avoid executing cc on OS X 10.9, as it ships with a stub
+           # that puts up a graphical alert prompting to install
+           # developer tools.  Any system running Mac OS X 10.7 or
+           # later (Darwin 11 and later) is required to have a 64-bit
+           # processor. This is not true of the ARM version of Darwin
+           # that Apple uses in portable devices.
+           UNAME_PROCESSOR=x86_64
        fi
        echo ${UNAME_PROCESSOR}-apple-darwin${UNAME_RELEASE}
        exit ;;
@@ -1361,154 +1371,6 @@ EOF
        exit ;;
 esac
 
-eval $set_cc_for_build
-cat >$dummy.c <<EOF
-#ifdef _SEQUENT_
-# include <sys/types.h>
-# include <sys/utsname.h>
-#endif
-main ()
-{
-#if defined (sony)
-#if defined (MIPSEB)
-  /* BFD wants "bsd" instead of "newsos".  Perhaps BFD should be changed,
-     I don't know....  */
-  printf ("mips-sony-bsd\n"); exit (0);
-#else
-#include <sys/param.h>
-  printf ("m68k-sony-newsos%s\n",
-#ifdef NEWSOS4
-       "4"
-#else
-       ""
-#endif
-       ); exit (0);
-#endif
-#endif
-
-#if defined (__arm) && defined (__acorn) && defined (__unix)
-  printf ("arm-acorn-riscix\n"); exit (0);
-#endif
-
-#if defined (hp300) && !defined (hpux)
-  printf ("m68k-hp-bsd\n"); exit (0);
-#endif
-
-#if defined (NeXT)
-#if !defined (__ARCHITECTURE__)
-#define __ARCHITECTURE__ "m68k"
-#endif
-  int version;
-  version=`(hostinfo | sed -n 's/.*NeXT Mach \([0-9]*\).*/\1/p') 2>/dev/null`;
-  if (version < 4)
-    printf ("%s-next-nextstep%d\n", __ARCHITECTURE__, version);
-  else
-    printf ("%s-next-openstep%d\n", __ARCHITECTURE__, version);
-  exit (0);
-#endif
-
-#if defined (MULTIMAX) || defined (n16)
-#if defined (UMAXV)
-  printf ("ns32k-encore-sysv\n"); exit (0);
-#else
-#if defined (CMU)
-  printf ("ns32k-encore-mach\n"); exit (0);
-#else
-  printf ("ns32k-encore-bsd\n"); exit (0);
-#endif
-#endif
-#endif
-
-#if defined (__386BSD__)
-  printf ("i386-pc-bsd\n"); exit (0);
-#endif
-
-#if defined (sequent)
-#if defined (i386)
-  printf ("i386-sequent-dynix\n"); exit (0);
-#endif
-#if defined (ns32000)
-  printf ("ns32k-sequent-dynix\n"); exit (0);
-#endif
-#endif
-
-#if defined (_SEQUENT_)
-    struct utsname un;
-
-    uname(&un);
-
-    if (strncmp(un.version, "V2", 2) == 0) {
-       printf ("i386-sequent-ptx2\n"); exit (0);
-    }
-    if (strncmp(un.version, "V1", 2) == 0) { /* XXX is V1 correct? */
-       printf ("i386-sequent-ptx1\n"); exit (0);
-    }
-    printf ("i386-sequent-ptx\n"); exit (0);
-
-#endif
-
-#if defined (vax)
-# if !defined (ultrix)
-#  include <sys/param.h>
-#  if defined (BSD)
-#   if BSD == 43
-      printf ("vax-dec-bsd4.3\n"); exit (0);
-#   else
-#    if BSD == 199006
-      printf ("vax-dec-bsd4.3reno\n"); exit (0);
-#    else
-      printf ("vax-dec-bsd\n"); exit (0);
-#    endif
-#   endif
-#  else
-    printf ("vax-dec-bsd\n"); exit (0);
-#  endif
-# else
-    printf ("vax-dec-ultrix\n"); exit (0);
-# endif
-#endif
-
-#if defined (alliant) && defined (i860)
-  printf ("i860-alliant-bsd\n"); exit (0);
-#endif
-
-  exit (1);
-}
-EOF
-
-$CC_FOR_BUILD -o $dummy $dummy.c 2>/dev/null && SYSTEM_NAME=`$dummy` &&
-       { echo "$SYSTEM_NAME"; exit; }
-
-# Apollos put the system type in the environment.
-
-test -d /usr/apollo && { echo ${ISP}-apollo-${SYSTYPE}; exit; }
-
-# Convex versions that predate uname can use getsysinfo(1)
-
-if [ -x /usr/convex/getsysinfo ]
-then
-    case `getsysinfo -f cpu_type` in
-    c1*)
-       echo c1-convex-bsd
-       exit ;;
-    c2*)
-       if getsysinfo -f scalar_acc
-       then echo c32-convex-bsd
-       else echo c2-convex-bsd
-       fi
-       exit ;;
-    c34*)
-       echo c34-convex-bsd
-       exit ;;
-    c38*)
-       echo c38-convex-bsd
-       exit ;;
-    c4*)
-       echo c4-convex-bsd
-       exit ;;
-    esac
-fi
-
 cat >&2 <<EOF
 $0: unable to guess system type
 
diff --git a/build-aux/config.sub b/build-aux/config.sub
index 9633db7..bba4efb 100755
--- a/build-aux/config.sub
+++ b/build-aux/config.sub
@@ -1,8 +1,8 @@
 #! /bin/sh
 # Configuration validation subroutine script.
-#   Copyright 1992-2013 Free Software Foundation, Inc.
+#   Copyright 1992-2014 Free Software Foundation, Inc.
 
-timestamp='2013-08-10'
+timestamp='2014-09-11'
 
 # This file is free software; you can redistribute it and/or modify it
 # under the terms of the GNU General Public License as published by
@@ -68,7 +68,7 @@ Report bugs and patches to <address@hidden>."
 version="\
 GNU config.sub ($timestamp)
 
-Copyright 1992-2013 Free Software Foundation, Inc.
+Copyright 1992-2014 Free Software Foundation, Inc.
 
 This is free software; see the source for copying conditions.  There is NO
 warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE."
@@ -265,6 +265,7 @@ case $basic_machine in
        | hexagon \
        | i370 | i860 | i960 | ia64 \
        | ip2k | iq2000 \
+       | k1om \
        | le32 | le64 \
        | lm32 \
        | m32c | m32r | m32rle | m68000 | m68k | m88k \
@@ -282,8 +283,10 @@ case $basic_machine in
        | mips64vr5900 | mips64vr5900el \
        | mipsisa32 | mipsisa32el \
        | mipsisa32r2 | mipsisa32r2el \
+       | mipsisa32r6 | mipsisa32r6el \
        | mipsisa64 | mipsisa64el \
        | mipsisa64r2 | mipsisa64r2el \
+       | mipsisa64r6 | mipsisa64r6el \
        | mipsisa64sb1 | mipsisa64sb1el \
        | mipsisa64sr71k | mipsisa64sr71kel \
        | mipsr5900 | mipsr5900el \
@@ -295,11 +298,11 @@ case $basic_machine in
        | nds32 | nds32le | nds32be \
        | nios | nios2 | nios2eb | nios2el \
        | ns16k | ns32k \
-       | open8 \
-       | or1k | or32 \
+       | open8 | or1k | or1knd | or32 \
        | pdp10 | pdp11 | pj | pjl \
        | powerpc | powerpc64 | powerpc64le | powerpcle \
        | pyramid \
+       | riscv32 | riscv64 \
        | rl78 | rx \
        | score \
        | sh | sh[1234] | sh[24]a | sh[24]aeb | sh[23]e | sh[34]eb | sheb | 
shbe | shle | sh[1234]le | sh3ele \
@@ -324,7 +327,7 @@ case $basic_machine in
        c6x)
                basic_machine=tic6x-unknown
                ;;
-       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | picochip)
+       m6811 | m68hc11 | m6812 | m68hc12 | m68hcs12x | nvptx | picochip)
                basic_machine=$basic_machine-unknown
                os=-none
                ;;
@@ -381,6 +384,7 @@ case $basic_machine in
        | hexagon-* \
        | i*86-* | i860-* | i960-* | ia64-* \
        | ip2k-* | iq2000-* \
+       | k1om-* \
        | le32-* | le64-* \
        | lm32-* \
        | m32c-* | m32r-* | m32rle-* \
@@ -400,8 +404,10 @@ case $basic_machine in
        | mips64vr5900-* | mips64vr5900el-* \
        | mipsisa32-* | mipsisa32el-* \
        | mipsisa32r2-* | mipsisa32r2el-* \
+       | mipsisa32r6-* | mipsisa32r6el-* \
        | mipsisa64-* | mipsisa64el-* \
        | mipsisa64r2-* | mipsisa64r2el-* \
+       | mipsisa64r6-* | mipsisa64r6el-* \
        | mipsisa64sb1-* | mipsisa64sb1el-* \
        | mipsisa64sr71k-* | mipsisa64sr71kel-* \
        | mipsr5900-* | mipsr5900el-* \
@@ -413,6 +419,7 @@ case $basic_machine in
        | nios-* | nios2-* | nios2eb-* | nios2el-* \
        | none-* | np1-* | ns16k-* | ns32k-* \
        | open8-* \
+       | or1k*-* \
        | orion-* \
        | pdp10-* | pdp11-* | pj-* | pjl-* | pn-* | power-* \
        | powerpc-* | powerpc64-* | powerpc64le-* | powerpcle-* \
@@ -822,6 +829,10 @@ case $basic_machine in
                basic_machine=powerpc-unknown
                os=-morphos
                ;;
+       moxiebox)
+               basic_machine=moxie-unknown
+               os=-moxiebox
+               ;;
        msdos)
                basic_machine=i386-pc
                os=-msdos
@@ -1367,14 +1378,14 @@ case $os in
              | -cygwin* | -msys* | -pe* | -psos* | -moss* | -proelf* | -rtems* 
\
              | -mingw32* | -mingw64* | -linux-gnu* | -linux-android* \
              | -linux-newlib* | -linux-musl* | -linux-uclibc* \
-             | -uxpv* | -beos* | -mpeix* | -udk* \
+             | -uxpv* | -beos* | -mpeix* | -udk* | -moxiebox* \
              | -interix* | -uwin* | -mks* | -rhapsody* | -darwin* | -opened* \
              | -openstep* | -oskit* | -conix* | -pw32* | -nonstopux* \
              | -storm-chaos* | -tops10* | -tenex* | -tops20* | -its* \
              | -os2* | -vos* | -palmos* | -uclinux* | -nucleus* \
              | -morphos* | -superux* | -rtmk* | -rtmk-nova* | -windiss* \
              | -powermax* | -dnix* | -nx6 | -nx7 | -sei* | -dragonfly* \
-             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es*)
+             | -skyos* | -haiku* | -rdos* | -toppers* | -drops* | -es* | 
-tirtos*)
        # Remember, each alternative MUST END IN *, to match a version number.
                ;;
        -qnx*)
@@ -1592,9 +1603,6 @@ case $basic_machine in
        mips*-*)
                os=-elf
                ;;
-       or1k-*)
-               os=-elf
-               ;;
        or32-*)
                os=-coff
                ;;
diff --git a/build-aux/missing b/build-aux/missing
index cdea514..db98974 100755
--- a/build-aux/missing
+++ b/build-aux/missing
@@ -1,7 +1,7 @@
 #! /bin/sh
 # Common wrapper for a few potentially missing GNU programs.
 
-scriptversion=2012-06-26.16; # UTC
+scriptversion=2013-10-28.13; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 # Originally written by Fran,cois Pinard <address@hidden>, 1996.
@@ -160,7 +160,7 @@ give_advice ()
       ;;
    autom4te*)
       echo "You might have modified some maintainer files that require"
-      echo "the 'automa4te' program to be rebuilt."
+      echo "the 'autom4te' program to be rebuilt."
       program_details 'autom4te'
       ;;
     bison*|yacc*)
diff --git a/build-aux/ylwrap b/build-aux/ylwrap
index 1c4d776..8f072a8 100755
--- a/build-aux/ylwrap
+++ b/build-aux/ylwrap
@@ -1,7 +1,7 @@
 #! /bin/sh
 # ylwrap - wrapper for lex/yacc invocations.
 
-scriptversion=2012-12-21.17; # UTC
+scriptversion=2013-01-12.17; # UTC
 
 # Copyright (C) 1996-2013 Free Software Foundation, Inc.
 #
@@ -40,7 +40,7 @@ get_dirname ()
 # guard FILE
 # ----------
 # The CPP macro used to guard inclusion of FILE.
-guard()
+guard ()
 {
   printf '%s\n' "$1"                                                    \
     | sed                                                               \
@@ -96,17 +96,17 @@ esac
 
 
 # The input.
-input="$1"
+input=$1
 shift
 # We'll later need for a correct munging of "#line" directives.
 input_sub_rx=`get_dirname "$input" | quote_for_sed`
-case "$input" in
+case $input in
   [\\/]* | ?:[\\/]*)
     # Absolute path; do nothing.
     ;;
   *)
     # Relative path.  Make it absolute.
-    input="`pwd`/$input"
+    input=`pwd`/$input
     ;;
 esac
 input_rx=`get_dirname "$input" | quote_for_sed`
@@ -132,8 +132,8 @@ sed_fix_filenames=
 # guard in its implementation file.
 sed_fix_header_guards=
 
-while test "$#" -ne 0; do
-  if test "$1" = "--"; then
+while test $# -ne 0; do
+  if test x"$1" = x"--"; then
     shift
     break
   fi
@@ -153,16 +153,14 @@ while test "$#" -ne 0; do
 done
 
 # The program to run.
-prog="$1"
+prog=$1
 shift
 # Make any relative path in $prog absolute.
-case "$prog" in
+case $prog in
   [\\/]* | ?:[\\/]*) ;;
-  *[\\/]*) prog="`pwd`/$prog" ;;
+  *[\\/]*) prog=`pwd`/$prog ;;
 esac
 
-# FIXME: add hostname here for parallel makes that run commands on
-# other machines.  But that might take us over the 14-char limit.
 dirname=ylwrap$$
 do_exit="cd '`pwd`' && rm -rf $dirname > /dev/null 2>&1;"' (exit $ret); exit 
$ret'
 trap "ret=129; $do_exit" 1
@@ -188,7 +186,7 @@ if test $ret -eq 0; then
       # otherwise prepend '../'.
       case $to in
         [\\/]* | ?:[\\/]*) target=$to;;
-        *) target="../$to";;
+        *) target=../$to;;
       esac
 
       # Do not overwrite unchanged header files to avoid useless
@@ -197,7 +195,7 @@ if test $ret -eq 0; then
       # output of all other files to a temporary file so we can
       # compare them to existing versions.
       if test $from != $parser; then
-        realtarget="$target"
+        realtarget=$target
         target=tmp-`printf '%s\n' "$target" | sed 's|.*[\\/]||g'`
       fi
 
diff --git a/configure b/configure
index 1b10245..16fc8b4 100755
--- a/configure
+++ b/configure
@@ -1,6 +1,6 @@
 #! /bin/sh
 # Guess values for system-dependent variables and create Makefiles.
-# Generated by GNU Autoconf 2.69 for GNU MIG 1.4.
+# Generated by GNU Autoconf 2.69 for GNU MIG 1.5.
 #
 # Report bugs to <address@hidden>.
 #
@@ -580,8 +580,8 @@ MAKEFLAGS=
 # Identity of this package.
 PACKAGE_NAME='GNU MIG'
 PACKAGE_TARNAME='mig'
-PACKAGE_VERSION='1.4'
-PACKAGE_STRING='GNU MIG 1.4'
+PACKAGE_VERSION='1.5'
+PACKAGE_STRING='GNU MIG 1.5'
 PACKAGE_BUGREPORT='address@hidden'
 PACKAGE_URL='http://www.gnu.org/software/mig/'
 
@@ -1254,7 +1254,7 @@ if test "$ac_init_help" = "long"; then
   # Omit some internal or obsolete options to make the list less imposing.
   # This message is too long to be a string in the A/UX 3.1 sh.
   cat <<_ACEOF
-\`configure' configures GNU MIG 1.4 to adapt to many kinds of systems.
+\`configure' configures GNU MIG 1.5 to adapt to many kinds of systems.
 
 Usage: $0 [OPTION]... [VAR=VALUE]...
 
@@ -1325,7 +1325,7 @@ fi
 
 if test -n "$ac_init_help"; then
   case $ac_init_help in
-     short | recursive ) echo "Configuration of GNU MIG 1.4:";;
+     short | recursive ) echo "Configuration of GNU MIG 1.5:";;
    esac
   cat <<\_ACEOF
 
@@ -1424,7 +1424,7 @@ fi
 test -n "$ac_init_help" && exit $ac_status
 if $ac_init_version; then
   cat <<\_ACEOF
-GNU MIG configure 1.4
+GNU MIG configure 1.5
 generated by GNU Autoconf 2.69
 
 Copyright (C) 2012 Free Software Foundation, Inc.
@@ -1671,7 +1671,7 @@ cat >config.log <<_ACEOF
 This file contains any messages produced by compilers while
 running configure, to aid debugging if configure makes a mistake.
 
-It was created by GNU MIG $as_me 1.4, which was
+It was created by GNU MIG $as_me 1.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   $ $0 $@
@@ -2172,7 +2172,7 @@ ac_script='s/[\\$]/&&/g;s/;s,x,x,$//'
 program_transform_name=`$as_echo "$program_transform_name" | sed "$ac_script"`
 
 
-am__api_version='1.13'
+am__api_version='1.14'
 
 # Find a good install program.  We prefer a C program (faster),
 # so one script is as good as another.  But avoid the broken or
@@ -2334,8 +2334,8 @@ fi
 
 rm -f conftest.file
 
-# expand $ac_aux_dir to an absolute path
-am_aux_dir=`cd $ac_aux_dir && pwd`
+# Expand $ac_aux_dir to an absolute path.
+am_aux_dir=`cd "$ac_aux_dir" && pwd`
 
 if test x"${MISSING+set}" != xset; then
   case $am_aux_dir in
@@ -2648,7 +2648,7 @@ fi
 
 # Define the identity of the package.
  PACKAGE='mig'
- VERSION='1.4'
+ VERSION='1.5'
 
 
 # Some tools Automake needs.
@@ -2690,6 +2690,48 @@ am__tar='$${TAR-tar} chof - "$$tardir"' 
am__untar='$${TAR-tar} xf -'
 
 
 
+# POSIX will say in a future version that running "rm -f" with no argument
+# is OK; and we want to be able to make that assumption in our Makefile
+# recipes.  So use an aggressive probe to check that the usage we want is
+# actually supported "in the wild" to an acceptable degree.
+# See automake bug#10828.
+# To make any issue more visible, cause the running configure to be aborted
+# by default if the 'rm' program in use doesn't match our expectations; the
+# user can still override this though.
+if rm -f && rm -fr && rm -rf; then : OK; else
+  cat >&2 <<'END'
+Oops!
+
+Your 'rm' program seems unable to run without file operands specified
+on the command line, even when the '-f' option is present.  This is contrary
+to the behaviour of most rm programs out there, and not conforming with
+the upcoming POSIX standard: <http://austingroupbugs.net/view.php?id=542>
+
+Please tell address@hidden about your system, including the value
+of your $PATH and any error possibly output before this message.  This
+can help us improve future automake versions.
+
+END
+  if test x"$ACCEPT_INFERIOR_RM_PROGRAM" = x"yes"; then
+    echo 'Configuration will proceed anyway, since you have set the' >&2
+    echo 'ACCEPT_INFERIOR_RM_PROGRAM variable to "yes"' >&2
+    echo >&2
+  else
+    cat >&2 <<'END'
+Aborting the configuration process, to ensure you take notice of the issue.
+
+You can download and install GNU coreutils to get an 'rm' implementation
+that behaves properly: <http://www.gnu.org/software/coreutils/>.
+
+If you want to complete the configuration process using your problematic
+'rm' anyway, export the environment variable ACCEPT_INFERIOR_RM_PROGRAM
+to "yes", and re-run configure.
+
+END
+    as_fn_error $? "Your 'rm' program is bad, sorry." "$LINENO" 5
+  fi
+fi
+
 
 # Check whether --enable-silent-rules was given.
 if test "${enable_silent_rules+set}" = set; then :
@@ -3519,6 +3561,65 @@ ac_cpp='$CPP $CPPFLAGS'
 ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
 ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
 ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+{ $as_echo "$as_me:${as_lineno-$LINENO}: checking whether $CC understands -c 
and -o together" >&5
+$as_echo_n "checking whether $CC understands -c and -o together... " >&6; }
+if ${am_cv_prog_cc_c_o+:} false; then :
+  $as_echo_n "(cached) " >&6
+else
+  cat confdefs.h - <<_ACEOF >conftest.$ac_ext
+/* end confdefs.h.  */
+
+int
+main ()
+{
+
+  ;
+  return 0;
+}
+_ACEOF
+  # Make sure it works both with $CC and with simple cc.
+  # Following AC_PROG_CC_C_O, we do the test twice because some
+  # compilers refuse to overwrite an existing .o file with -o,
+  # though they will create one.
+  am_cv_prog_cc_c_o=yes
+  for am_i in 1 2; do
+    if { echo "$as_me:$LINENO: $CC -c conftest.$ac_ext -o 
conftest2.$ac_objext" >&5
+   ($CC -c conftest.$ac_ext -o conftest2.$ac_objext) >&5 2>&5
+   ac_status=$?
+   echo "$as_me:$LINENO: \$? = $ac_status" >&5
+   (exit $ac_status); } \
+         && test -f conftest2.$ac_objext; then
+      : OK
+    else
+      am_cv_prog_cc_c_o=no
+      break
+    fi
+  done
+  rm -f core conftest*
+  unset am_i
+fi
+{ $as_echo "$as_me:${as_lineno-$LINENO}: result: $am_cv_prog_cc_c_o" >&5
+$as_echo "$am_cv_prog_cc_c_o" >&6; }
+if test "$am_cv_prog_cc_c_o" != yes; then
+   # Losing compiler, so override with the script.
+   # FIXME: It is wrong to rewrite CC.
+   # But if we don't then we get into trouble of one sort or another.
+   # A longer-term fix would be to have automake use am__CC in this case,
+   # and then we could set am__CC="\$(top_srcdir)/compile \$(CC)"
+   CC="$am_aux_dir/compile $CC"
+fi
+ac_ext=c
+ac_cpp='$CPP $CPPFLAGS'
+ac_compile='$CC -c $CFLAGS $CPPFLAGS conftest.$ac_ext >&5'
+ac_link='$CC -o conftest$ac_exeext $CFLAGS $CPPFLAGS $LDFLAGS conftest.$ac_ext 
$LIBS >&5'
+ac_compiler_gnu=$ac_cv_c_compiler_gnu
+
 DEPDIR="${am__leading_dot}deps"
 
 ac_config_commands="$ac_config_commands depfiles"
@@ -3892,6 +3993,12 @@ done
 test -n "$YACC" || YACC="yacc"
 
 
+yacc_is_bison=`$YACC --version | head -n 1 | cut '-d ' -f1`
+if [ x"$yacc_is_bison" != x"bison" ]; then
+       as_fn_error $? "yacc is not provided by bison, check your alternative 
conf or your packages" "$LINENO" 5
+fi
+
+
 for ac_prog in flex lex
 do
   # Extract the first word of "$ac_prog", so it can be a program name with 
args.
@@ -4984,7 +5091,7 @@ cat >>$CONFIG_STATUS <<\_ACEOF || ac_write_fail=1
 # report actual input values of CONFIG_FILES etc. instead of their
 # values after options handling.
 ac_log="
-This file was extended by GNU MIG $as_me 1.4, which was
+This file was extended by GNU MIG $as_me 1.5, which was
 generated by GNU Autoconf 2.69.  Invocation command line was
 
   CONFIG_FILES    = $CONFIG_FILES
@@ -5043,7 +5150,7 @@ _ACEOF
 cat >>$CONFIG_STATUS <<_ACEOF || ac_write_fail=1
 ac_cs_config="`$as_echo "$ac_configure_args" | sed 's/^ //; 
s/[\\""\`\$]/\\\\&/g'`"
 ac_cs_version="\\
-GNU MIG config.status 1.4
+GNU MIG config.status 1.5
 configured by $0, generated by GNU Autoconf 2.69,
   with options \\"\$ac_cs_config\\"
 
diff --git a/configure.ac b/configure.ac
index efd542a..332c593 100644
--- a/configure.ac
+++ b/configure.ac
@@ -2,7 +2,7 @@ dnl configure script for GNU MIG.
 
 AC_PREREQ([2.53])
 
-AC_INIT([GNU MIG], [1.4], address@hidden)
+AC_INIT([GNU MIG], [1.5], address@hidden)
 AC_CONFIG_SRCDIR([migcom.c])
 AC_CONFIG_AUX_DIR([build-aux])
 
@@ -25,6 +25,12 @@ dnl Checks for programs.
 AC_PROG_CC
 AC_PROG_CPP
 AC_PROG_YACC
+
+yacc_is_bison=`$YACC --version | head -n 1 | cut '-d ' -f1`
+[if [ x"$yacc_is_bison" != x"bison" ]; then ]
+       AC_MSG_ERROR([yacc is not provided by bison, check your alternative 
conf or your packages])
+[fi]
+
 AM_PROG_LEX
 AC_PROG_AWK
 AC_PROG_INSTALL
diff --git a/global.c b/global.c
index 0a938f2..5685186 100644
--- a/global.c
+++ b/global.c
@@ -48,6 +48,7 @@ const_string_t UserPrefix = "";
 const_string_t ServerDemux = strNULL;
 const_string_t SubrPrefix = "";
 const_string_t RoutinePrefix = "";
+const_string_t OOLPostfix = "P";
 
 string_t yyinname;
 
diff --git a/global.h b/global.h
index ca4d865..8dbb6fd 100644
--- a/global.h
+++ b/global.h
@@ -53,6 +53,7 @@ extern const_string_t UserPrefix;
 extern const_string_t ServerDemux;
 extern const_string_t SubrPrefix;
 extern const_string_t RoutinePrefix;
+extern const_string_t OOLPostfix;
 
 extern int yylineno;
 extern string_t yyinname;
diff --git a/header.c b/header.c
index 150412a..23e5686 100644
--- a/header.c
+++ b/header.c
@@ -41,6 +41,7 @@ WriteIncludes(FILE *file)
 static void
 WriteDefines(FILE *file)
 {
+    (void) file;       /* Avoid the warning.  */
 }
 
 static void
@@ -153,6 +154,8 @@ WriteServerHeader(FILE *file, const statement_t *stats)
     const char *protect = strconcat(SubsystemName, "_server_");
 
     WriteProlog(file, protect);
+    fprintf(file, "#include <mach/mig_errors.h>\n"); /* For mig_routine_t. */
+
     for (stat = stats; stat != stNULL; stat = stat->stNext)
        switch (stat->stKind)
        {
@@ -169,6 +172,14 @@ WriteServerHeader(FILE *file, const statement_t *stats)
            fatal("WriteServerHeader(): bad statement_kind_t (%d)",
                  (int) stat->stKind);
        }
+    fprintf(file, "\n");
+
+    /*
+     * Include the x_server_routine function so it can be inlined.
+     */
+    fprintf(file, "extern mig_routine_t %s_routines[];\n", ServerDemux);
+    WriteSubsystemServerRoutine(file, "extern inline");
+
     WriteEpilog(file, protect);
 }
 
diff --git a/lexxer.c b/lexxer.c
index 592b59e..d5e2238 100644
--- a/lexxer.c
+++ b/lexxer.c
@@ -8,7 +8,7 @@
 #define FLEX_SCANNER
 #define YY_FLEX_MAJOR_VERSION 2
 #define YY_FLEX_MINOR_VERSION 5
-#define YY_FLEX_SUBMINOR_VERSION 35
+#define YY_FLEX_SUBMINOR_VERSION 39
 #if YY_FLEX_SUBMINOR_VERSION > 0
 #define FLEX_BETA
 #endif
@@ -161,7 +161,12 @@ typedef unsigned int flex_uint32_t;
 typedef struct yy_buffer_state *YY_BUFFER_STATE;
 #endif
 
-extern int yyleng;
+#ifndef YY_TYPEDEF_YY_SIZE_T
+#define YY_TYPEDEF_YY_SIZE_T
+typedef size_t yy_size_t;
+#endif
+
+extern yy_size_t yyleng;
 
 extern FILE *yyin, *yyout;
 
@@ -170,6 +175,7 @@ extern FILE *yyin, *yyout;
 #define EOB_ACT_LAST_MATCH 2
 
     #define YY_LESS_LINENO(n)
+    #define YY_LINENO_REWIND_TO(ptr)
     
 /* Return all but the first "n" matched characters back to the input stream. */
 #define yyless(n) \
@@ -187,11 +193,6 @@ extern FILE *yyin, *yyout;
 
 #define unput(c) yyunput( c, (yytext_ptr)  )
 
-#ifndef YY_TYPEDEF_YY_SIZE_T
-#define YY_TYPEDEF_YY_SIZE_T
-typedef size_t yy_size_t;
-#endif
-
 #ifndef YY_STRUCT_YY_BUFFER_STATE
 #define YY_STRUCT_YY_BUFFER_STATE
 struct yy_buffer_state
@@ -209,7 +210,7 @@ struct yy_buffer_state
        /* Number of characters read into yy_ch_buf, not including EOB
         * characters.
         */
-       int yy_n_chars;
+       yy_size_t yy_n_chars;
 
        /* Whether we "own" the buffer - i.e., we know we created it,
         * and can realloc() it to grow it, and should free() it to
@@ -279,8 +280,8 @@ static YY_BUFFER_STATE * yy_buffer_stack = 0; /**< Stack as 
an array. */
 
 /* yy_hold_char holds the character lost when yytext is formed. */
 static char yy_hold_char;
-static int yy_n_chars;         /* number of characters read into yy_ch_buf */
-int yyleng;
+static yy_size_t yy_n_chars;           /* number of characters read into 
yy_ch_buf */
+yy_size_t yyleng;
 
 /* Points to current character in buffer. */
 static char *yy_c_buf_p = (char *) 0;
@@ -308,7 +309,7 @@ static void yy_init_buffer (YY_BUFFER_STATE b,FILE *file  );
 
 YY_BUFFER_STATE yy_scan_buffer (char *base,yy_size_t size  );
 YY_BUFFER_STATE yy_scan_string (yyconst char *yy_str  );
-YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,int len  );
+YY_BUFFER_STATE yy_scan_bytes (yyconst char *bytes,yy_size_t len  );
 
 void *yyalloc (yy_size_t  );
 void *yyrealloc (void *,yy_size_t  );
@@ -368,8 +369,8 @@ static void yy_fatal_error (yyconst char msg[]  );
        *yy_cp = '\0'; \
        (yy_c_buf_p) = yy_cp;
 
-#define YY_NUM_RULES 102
-#define YY_END_OF_BUFFER 103
+#define YY_NUM_RULES 103
+#define YY_END_OF_BUFFER 104
 /* This struct is not used in this scanner,
    but its presence is necessary. */
 struct yy_trans_info
@@ -377,66 +378,67 @@ struct yy_trans_info
        flex_int32_t yy_verify;
        flex_int32_t yy_nxt;
        };
-static yyconst flex_int16_t yy_accept[527] =
+static yyconst flex_int16_t yy_accept[534] =
     {   0,
         0,    0,    0,    0,    0,    0,    0,    0,    0,    0,
-        0,    0,  103,  101,   99,  100,   96,   78,   79,   76,
-       74,   73,   75,   77,   89,   71,   72,   83,   80,   84,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   85,   86,   81,
-       88,   87,   82,   90,  101,  101,  101,   98,   98,   97,
-       96,    0,    0,   94,    0,   89,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   11,   88,   88,
-       88,   88,   88,   19,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-
-       88,   90,    0,   91,    0,    0,   92,    0,    0,    0,
-        0,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   12,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-        0,   93,    0,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   31,   88,   88,   88,   28,   88,
-       88,   88,   88,    0,   18,   88,   88,   36,   88,   88,
-
-       88,   88,   20,   88,   88,   13,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   24,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,    0,   88,   88,   88,   88,   88,   88,
-       88,   25,   33,   40,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   32,   88,   88,   88,   88,   88,    0,   88,
-       88,   88,   88,   42,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   34,   88,   88,   88,   88,   46,
-        1,   88,   88,   88,   88,   88,   27,   88,   88,   26,
-
-       88,   88,   88,   95,   88,   88,   88,   39,   88,    2,
-       88,   88,   88,   88,   88,    8,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,    9,   88,   88,   37,   88,   41,   88,   88,   88,
-        7,   88,   88,   88,    3,   15,   88,   88,   88,   88,
-       88,   88,   88,    6,   88,   88,   45,   88,   35,   88,
-       30,   88,   43,   10,   88,   88,   44,   88,   88,   88,
-       88,   17,   16,   22,   38,   88,   88,   47,   14,   23,
-       88,   88,   88,   29,   88,   21,   88,   88,   88,   88,
-        5,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-
-       88,    4,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   49,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   55,   54,
-       88,   88,   88,   88,   88,   88,   57,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   58,   88,
-       50,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   88,
-       88,   59,   88,   61,   88,   88,   88,   56,   62,   88,
-       63,   88,   66,   88,   68,   88,   51,   52,   53,   88,
-
-       88,   88,   88,   88,   88,   88,   88,   88,   88,   70,
-       88,   88,   88,   88,   60,   88,   67,   88,   48,   88,
-       88,   88,   64,   65,   69,    0
+        0,    0,  104,  102,  100,  101,   97,   79,   80,   77,
+       75,   74,   76,   78,   90,   72,   73,   84,   81,   85,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   86,   87,   82,
+       89,   88,   83,   91,  102,  102,  102,   99,   99,   98,
+       97,    0,    0,   95,    0,   90,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   11,   89,   89,
+       89,   89,   89,   19,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+
+       89,   91,    0,   92,    0,    0,   93,    0,    0,    0,
+        0,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   12,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+        0,   94,    0,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   31,   89,   89,   89,   28,   89,
+       89,   89,   89,    0,   18,   89,   89,   37,   89,   89,
+
+       89,   89,   20,   89,   89,   13,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   24,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,    0,   89,   89,   89,   89,   89,   89,
+       89,   25,   33,   41,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   32,   89,   89,   89,   89,   89,    0,   89,
+       89,   89,   89,   43,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   35,   89,   89,   89,   89,
+       47,    1,   89,   89,   89,   89,   89,   27,   89,   89,
+
+       26,   89,   89,   89,   96,   89,   89,   89,   40,   89,
+        2,   89,   89,   89,   89,   89,   89,    8,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,    9,   89,   89,   38,   89,   89,   42,
+       89,   89,   89,    7,   89,   89,   89,    3,   15,   89,
+       89,   89,   89,   89,   89,   89,    6,   89,   89,   46,
+       89,   36,   89,   89,   30,   89,   44,   10,   89,   89,
+       45,   89,   89,   89,   89,   17,   16,   22,   39,   89,
+       89,   89,   48,   14,   23,   89,   89,   89,   89,   29,
+       89,   21,   89,   89,   34,   89,   89,    5,   89,   89,
+
+       89,   89,   89,   89,   89,   89,   89,   89,    4,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   50,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   56,   55,   89,   89,   89,
+       89,   89,   89,   58,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   59,   89,   51,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   89,   89,   60,   89,
+       62,   89,   89,   89,   57,   63,   89,   64,   89,   67,
+
+       89,   69,   89,   52,   53,   54,   89,   89,   89,   89,
+       89,   89,   89,   89,   89,   89,   71,   89,   89,   89,
+       89,   61,   89,   68,   89,   49,   89,   89,   89,   65,
+       66,   70,    0
     } ;
 
 static yyconst flex_int32_t yy_ec[256] =
@@ -483,135 +485,137 @@ static yyconst flex_int32_t yy_meta[79] =
         4,    4,    4,    4,    4,    4,    1,    1
     } ;
 
-static yyconst flex_int16_t yy_base[536] =
+static yyconst flex_int16_t yy_base[543] =
     {   0,
-        0,    3,    9, 1002,   87,  165,   98,  102,  112,  125,
-      116,  130, 1007, 1009, 1009, 1009,  133, 1009, 1009, 1009,
-     1009, 1009, 1009, 1009,  140, 1009, 1009, 1009, 1009, 1009,
+        0,    3,    9, 1016,   87,  165,   98,  102,  112,  125,
+      116,  130, 1021, 1023, 1023, 1023,  133, 1023, 1023, 1023,
+     1023, 1023, 1023, 1023,  140, 1023, 1023, 1023, 1023, 1023,
        50,    0,  138,  112,  134,  134,  155,  149,  159,  155,
-      167,  185,  203,  242,   87,  195,  179, 1009, 1009, 1009,
-      153, 1009, 1009,    0, 1001,  979,  999, 1009, 1009, 1009,
-      276,  306,  326,  334,  943,  230,    0,  189,  190,  205,
+      167,  185,  203,  242,   87,  195,  179, 1023, 1023, 1023,
+      153, 1023, 1023,    0, 1015,  993, 1013, 1023, 1023, 1023,
+      276,  306,  326,  334,  957,  230,    0,  189,  190,  205,
       162,  210,  212,  231,  227,  213,  220,  288,  318,  230,
-      973,  237,  291,    0,  239,  245,  263,  288,  320,  301,
+      987,  237,  291,    0,  239,  245,  263,  288,  320,  301,
       321,  292,  332,  337,  327,  342,  330,  334,  343,  345,
 
-      342,    0,  996, 1009,  974,  994, 1009,  405,  140,  993,
-      936,  352,  343,  341,  345,  357,  343,  353,  356,  363,
-      384,  377,  367,  383,  387,  389,  391,  962,  392,  404,
+      342,    0, 1010, 1023,  988, 1008, 1023,  405,  140, 1007,
+      950,  352,  343,  341,  345,  357,  343,  353,  356,  363,
+      384,  377,  367,  383,  387,  389,  391,  976,  392,  404,
       409,  389,  224,  409,  404,  405,  398,  411,  401,  400,
       407,  408,  409,  406,  410,  413,  415,  418,  422,  424,
-      990, 1009,  930,  318,  430,  433,  452,  440,  442,  449,
-      445,  446,  445,  448,  448,  468,  458,  450,  468,  938,
+     1004, 1023,  944,  318,  430,  433,  452,  440,  442,  449,
+      445,  446,  445,  448,  448,  468,  458,  450,  468,  952,
       459,  471,  473,  470,  456,  468,  478,  480,  469,  483,
       481,  490,  499,  499,    0,  494,  512,  485,    0,  503,
-      508,  505,  496,  924,    0,  513,  518,    0,  506,  516,
+      508,  505,  496,  938,    0,  513,  518,    0,  506,  516,
 
       512,  508,    0,  521,  511,    0,  518,  529,  526,  528,
-      952,  517,  947,  540,  525,  546,  535,  553,    0,  545,
+      966,  517,  961,  540,  525,  546,  535,  553,    0,  545,
       544,  558,  553,  551,  566,  556,  548,  555,  558,  561,
-      555,  563,  573,  929,  570,  565,  563,  573,  582,  589,
-      579,    0,    0,    0,  582,  588,  943,  590,  589,  604,
-      573,  603,  601,  602,  609,  606,  613,  622,  626,  617,
-      617,  616,    0,  618,  619,  624,  638,  628,  121,  633,
-      631,  633,  647,    0,  635,  643,  649,  662,  652,  954,
-      658,  659,  663,  670,    0,  665,  662,  666,  670,    0,
-        0,  672,  683,  671,  674,  675,    0,  678,  689,    0,
-
-      682,  689,  694, 1009,  679,  679,  700,    0,  695,    0,
-      699,  694,  708,  931,  706,    0,  707,  713,  722,  726,
-      716,  718,  721,  727,  736,  728,  724,  728,  734,  731,
-      742,    0,  732,  737,    0,  737,    0,  734,  739,  939,
-        0,  755,  757,  755,    0,    0,  749,  719,  753,  760,
-      774,  758,  765,    0,  766,  934,    0,  783,    0,  784,
-        0,  932,    0,    0,  787,  776,    0,  932,  783,  792,
-      789,    0,    0,    0,    0,  784,  939,    0,    0,    0,
-      930,  795,  789,    0,  948,    0,  786,  799,  923,  790,
-        0,  834,  804,  805,  807,  937,  174,  935,  944,  928,
-
-      933,    0,  926,  930,  924,  942,  926,  921,  929,  917,
-      159,  937,  919,  917,    0,  923,  929,  915,  907,  926,
-      925,  924,  903,  907,  914,  916,  904,  918,    0,    0,
-      893,  914,  891,  890,  905,  888,    0,  902,  897,  913,
-      894,  907,  892,  102,  895,  176,  902,  887,  893,  901,
-      887,  899,  898,  897,  883,  899,  894,  893,  868,  893,
-        0,  881,  865,  879,  889,  877,  874,  876,  885,  873,
-      883,  859,  871,  850,  867,  849,  847,  841,  843,  841,
-      837,    0,  818,    0,  838,  834,  831,    0,  787,  802,
-      781,  791,    0,  723,  451,  408,    0,    0,    0,  354,
-
-      334,  340,  351,  330,  279,  288,  278,  286,  274,    0,
-      278,  265,  239,  239,    0,  223,    0,  173,    0,  151,
-      131,   93,    0,    0,    0, 1009,  881,  885,  889,    4,
-      891,  895,  899,  903,  907
+      555,  563,  573,  943,  570,  565,  563,  573,  582,  589,
+      579,    0,  581,    0,  584,  588,  957,  594,  602,  605,
+      573,  604,  605,  603,  604,  606,  623,  624,  627,  617,
+      617,  622,    0,  620,  621,  626,  643,  639,  121,  639,
+      629,  639,  649,    0,  643,  651,  668,  658,  668,  655,
+      968,  660,  663,  667,  672,    0,  668,  668,  669,  672,
+        0,    0,  674,  686,  674,  676,  680,    0,  681,  692,
+
+        0,  684,  698,  700, 1023,  687,  686,  704,    0,  700,
+        0,  697,  718,  700,  723,  945,  716,    0,  716,  719,
+      729,  734,  709,  726,  726,  731,  741,  733,  719,  732,
+      738,  735,  740,    0,  735,  745,    0,  745,  752,    0,
+      749,  755,  953,    0,  749,  757,  756,    0,    0,  756,
+      758,  763,  779,  783,  773,  775,    0,  776,  948,    0,
+      782,    0,  782,  783,    0,  946,    0,    0,  796,  782,
+        0,  946,  794,  799,  796,    0,    0,    0,    0,  805,
+      791,  953,    0,    0,    0,  944,  806,  798,  809,    0,
+      962,    0,  797,  814,    0,  937,  806,    0,  828,  816,
+
+      843,  845,  951,  174,  949,  958,  942,  947,    0,  940,
+      944,  938,  956,  940,  935,  943,  931,  159,  951,  933,
+      931,    0,  937,  943,  929,  921,  940,  939,  938,  917,
+      921,  928,  930,  918,  932,    0,    0,  907,  928,  905,
+      904,  919,  902,    0,  916,  911,  927,  908,  921,  906,
+      102,  909,  176,  916,  901,  907,  915,  901,  913,  912,
+      911,  897,  913,  908,  907,  882,  907,    0,  895,  879,
+      893,  903,  891,  888,  890,  899,  887,  897,  879,  888,
+      867,  884,  879,  863,  858,  860,  859,  859,    0,  835,
+        0,  861,  863,  850,    0,  809,  818,  797,  798,    0,
+
+      630,  451,  408,    0,    0,    0,  354,  334,  340,  351,
+      330,  279,  288,  278,  286,  274,    0,  278,  265,  239,
+      239,    0,  223,    0,  173,    0,  151,  131,   93,    0,
+        0,    0, 1023,  894,  898,  902,    4,  904,  908,  912,
+      916,  920
     } ;
 
-static yyconst flex_int16_t yy_def[536] =
+static yyconst flex_int16_t yy_def[543] =
     {   0,
-      527,  527,  526,    3,  528,  528,  527,  527,  527,  527,
-      529,  529,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  526,  526,  526,
-      530,  526,  526,  531,  532,  533,  534,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-
-      530,  531,  532,  526,  533,  534,  526,  526,  526,  535,
-      526,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      535,  526,  526,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  526,  530,  530,  530,  530,  530,  530,
-
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  526,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  526,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-
-      530,  530,  530,  526,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,  530,  530,  530,  530,  530,
-      530,  530,  530,  530,  530,    0,  526,  526,  526,  526,
-      526,  526,  526,  526,  526
+      534,  534,  533,    3,  535,  535,  534,  534,  534,  534,
+      536,  536,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  533,  533,  533,
+      537,  533,  533,  538,  539,  540,  541,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+
+      537,  538,  539,  533,  540,  541,  533,  533,  533,  542,
+      533,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      542,  533,  533,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  533,  537,  537,  537,  537,  537,  537,
+
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  533,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  533,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+
+      537,  537,  537,  537,  533,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,  537,  537,  537,  537,  537,  537,  537,  537,
+      537,  537,    0,  533,  533,  533,  533,  533,  533,  533,
+      533,  533
     } ;
 
-static yyconst flex_int16_t yy_nxt[1088] =
+static yyconst flex_int16_t yy_nxt[1102] =
     {   0,
-      526,   15,   16,   15,   15,   16,   15,   67,   17,   14,
+      533,   15,   16,   15,   15,   16,   15,   67,   17,   14,
        15,   16,   15,   14,   14,   14,   18,   19,   20,   21,
        22,   23,   24,   25,   25,   25,   25,   25,   25,   25,
        26,   27,   28,   29,   30,   31,   32,   33,   34,   35,
@@ -624,49 +628,49 @@ static yyconst flex_int16_t yy_nxt[1088] =
 
        16,   15,   55,   15,   16,   15,   55,   17,   14,   14,
        14,   14,   14,   15,   16,   15,   57,   59,   60,   59,
-       68,   56,  304,  525,  304,   56,   15,   16,   15,   57,
+       68,   56,  305,  532,  305,   56,   15,   16,   15,   57,
        17,   59,   60,   59,   62,   61,   63,   97,   14,   14,
-       14,  109,   74,  109,  110,  453,  454,   64,   64,   64,
+       14,  109,   74,  109,  110,  460,  461,   64,   64,   64,
        64,   64,   64,   64,   66,   66,   66,   66,   66,   66,
-       66,  524,   97,   14,   14,   14,   15,   16,   15,   14,
+       66,  531,   97,   14,   14,   14,   15,   16,   15,   14,
        17,   74,   14,   14,   14,   14,   14,   75,   69,   80,
-       76,  523,   70,   71,   72,   81,   14,   14,   14,   14,
-       14,   65,   73,   77,   78,   83,  423,   82,   84,   79,
+       76,  530,   70,   71,   72,   81,   14,   14,   14,   14,
+       14,   65,   73,   77,   78,   83,  430,   82,   84,   79,
 
-      409,  522,  424,   82,   75,  101,   69,   76,   80,   70,
-       71,   72,  115,   85,  410,  456,   14,   14,   14,  457,
-      458,   77,   78,   83,   82,   86,   79,   84,   87,   98,
+      416,  529,  431,   82,   75,  101,   69,   76,   80,   70,
+       71,   72,  115,   85,  417,  463,   14,   14,   14,  464,
+      465,   77,   78,   83,   82,   86,   79,   84,   87,   98,
        82,   88,  112,   89,  101,  114,  113,  115,   99,  100,
        85,   14,   14,   90,   66,   66,   66,   66,   66,   66,
-       66,  521,  121,   86,  116,   87,  117,  118,   98,  112,
-       88,  122,   89,  113,  114,   99,  100,  520,  519,  129,
+       66,  528,  121,   86,  116,   87,  117,  118,   98,  112,
+       88,  122,   89,  113,  114,   99,  100,  527,  526,  129,
       120,   90,   91,  127,  176,  119,   92,   62,   93,   63,
       121,  116,  133,  117,  132,   94,  118,   95,   96,  122,
        64,   64,   64,   64,   64,   64,   64,  120,  129,  176,
 
-      127,   91,  119,  134,  518,   92,   93,   62,  517,   62,
-      133,  132,   94,  516,   95,   96,  515,  514,  513,  512,
+      127,   91,  119,  134,  525,   92,   93,   62,  524,   62,
+      133,  132,   94,  523,   95,   96,  522,  521,  520,  519,
       108,  108,  108,  108,  108,  108,  108,   62,  123,   63,
       141,  134,  135,  124,   65,  109,  130,  109,  110,  131,
        64,   64,   64,   64,   64,   64,   64,  139,   64,   64,
        64,   64,   64,   64,   64,  125,  123,  126,  141,  135,
       124,  136,  137,  130,  140,  138,  142,  143,  195,  145,
-      144,  146,  147,  148,  139,  149,  150,  511,  154,  510,
-      509,  508,  155,  125,  156,  126,  157,  158,  159,  136,
-      160,  140,  138,  195,  507,  142,  143,  144,  145,  146,
+      144,  146,  147,  148,  139,  149,  150,  518,  154,  517,
+      516,  515,  155,  125,  156,  126,  157,  158,  159,  136,
+      160,  140,  138,  195,  514,  142,  143,  144,  145,  146,
 
       147,  161,  148,  162,  149,  150,  109,  154,  109,  110,
       155,  156,  163,  165,  157,  159,  158,  164,  160,  108,
       108,  108,  108,  108,  108,  108,  166,  167,  161,  168,
       169,  162,  171,  173,  175,  174,  172,  177,  178,  181,
       165,  163,  179,  189,  180,  164,  182,  183,  184,  185,
-      186,  506,  187,  166,  188,  167,  190,  168,  169,  191,
+      186,  513,  187,  166,  188,  167,  190,  168,  169,  191,
       171,  175,  173,  172,  174,  192,  177,  178,  181,  193,
       179,  180,  189,  182,  183,  196,  184,  185,  186,  187,
       197,  188,  198,  199,  190,  200,  201,  191,  202,  203,
       204,  205,  192,  206,  207,  209,  193,  208,  210,  216,
 
-      212,  213,  196,  214,  215,  505,  217,  197,  218,  219,
+      212,  213,  196,  214,  215,  512,  217,  197,  218,  219,
       199,  198,  200,  221,  201,  202,  203,  204,  205,  220,
       206,  222,  209,  207,  223,  208,  216,  210,  212,  224,
       213,  227,  214,  215,  217,  229,  225,  218,  219,  226,
@@ -678,63 +682,66 @@ static yyconst flex_int16_t yy_nxt[1088] =
       244,  245,  258,  246,  259,  250,  260,  251,  262,  261,
 
       263,  252,  264,  253,  265,  266,  267,  268,  271,  270,
-      274,  254,  273,  272,  255,  256,  257,  275,  284,  276,
-      258,  259,  277,  262,  281,  260,  261,  263,  282,  264,
-      266,  265,  278,  267,  279,  271,  268,  270,  272,  274,
-      273,  283,  285,  290,  286,  284,  275,  276,  287,  288,
-      277,  289,  291,  281,  292,  293,  282,  298,  295,  278,
-      296,  279,  297,  299,  300,  301,  303,  294,  302,  283,
-      285,  286,  290,  305,  307,  287,  306,  288,  289,  308,
-      309,  291,  310,  292,  293,  298,  295,  296,  311,  297,
-      299,  300,  312,  301,  303,  294,  313,  302,  315,  316,
-
-      317,  305,  307,  306,  318,  320,  319,  309,  308,  321,
-      310,  322,  323,  324,  325,  327,  311,  326,  328,  329,
-      331,  312,  330,  313,  332,  333,  315,  316,  317,  334,
-      335,  337,  320,  318,  319,  336,  321,  338,  339,  322,
-      323,  325,  324,  327,  326,  341,  328,  342,  329,  331,
-      330,  343,  333,  332,  334,  344,  345,  504,  347,  335,
-      337,  346,  348,  336,  338,  349,  350,  339,  351,  367,
-      352,  353,  354,  341,  355,  342,  356,  357,  358,  343,
-      359,  360,  361,  363,  344,  345,  347,  364,  346,  365,
-      348,  369,  366,  349,  367,  350,  351,  352,  353,  368,
-
-      354,  355,  370,  371,  357,  356,  358,  359,  360,  361,
-      372,  373,  363,  375,  376,  378,  364,  381,  365,  366,
-      369,  379,  382,  383,  387,  503,  368,  384,  388,  391,
-      371,  370,  390,  393,  402,  502,  501,  372,  373,  403,
-      406,  500,  375,  376,  378,  404,  381,  407,  379,  499,
-      498,  382,  383,  387,  384,  405,  388,  497,  391,  390,
-      393,  394,  395,  402,  496,  485,  495,  486,  396,  487,
-      488,  494,  397,  493,  492,  398,  491,  399,  400,  490,
-      401,   14,   14,   14,   14,   54,   54,   54,   54,   58,
-       58,   58,   58,  102,  102,  103,  489,  103,  103,  105,
-
-      484,  105,  105,  106,  483,  106,  106,  151,  151,  151,
-      151,  482,  481,  480,  479,  478,  477,  476,  475,  474,
-      473,  472,  471,  470,  469,  468,  467,  466,  465,  464,
-      463,  462,  461,  460,  459,  455,  452,  451,  450,  449,
-      448,  447,  446,  445,  444,  443,  442,  441,  440,  439,
-      438,  437,  436,  435,  434,  433,  432,  431,  430,  429,
-      428,  427,  426,  425,  422,  421,  420,  419,  418,  417,
-      416,  415,  414,  413,  412,  411,  408,  392,  389,  386,
-      385,  380,  377,  374,  362,  340,  314,  280,  269,  249,
-      247,  234,  211,  194,  152,  170,  153,  152,  107,  104,
-
-      104,  128,  111,  107,  104,  104,  526,   17,   13,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526
+      274,  254,  273,  272,  255,  256,  257,  275,  285,  276,
+      258,  259,  277,  262,  278,  260,  261,  263,  282,  264,
+      266,  265,  279,  267,  280,  271,  268,  270,  272,  274,
+      273,  283,  284,  286,  289,  285,  275,  276,  287,  288,
+      277,  290,  278,  291,  292,  293,  294,  282,  296,  279,
+      297,  280,  298,  299,  511,  300,  301,  302,  295,  283,
+      284,  286,  289,  303,  307,  287,  288,  304,  290,  306,
+      308,  309,  291,  292,  293,  294,  296,  297,  310,  298,
+      311,  299,  300,  301,  312,  302,  295,  313,  314,  315,
+
+      317,  307,  303,  318,  319,  304,  320,  306,  308,  321,
+      309,  322,  323,  324,  325,  310,  326,  327,  311,  328,
+      329,  330,  331,  312,  332,  313,  315,  314,  317,  333,
+      334,  318,  319,  335,  337,  320,  336,  321,  322,  323,
+      338,  324,  325,  341,  327,  326,  328,  339,  329,  330,
+      340,  331,  332,  342,  349,  344,  345,  346,  333,  334,
+      335,  336,  347,  337,  348,  355,  350,  351,  338,  352,
+      341,  353,  339,  354,  359,  356,  357,  367,  358,  340,
+      360,  349,  342,  344,  345,  346,  361,  368,  362,  363,
+      369,  347,  355,  348,  350,  351,  364,  352,  365,  370,
+
+      353,  354,  356,  359,  357,  358,  367,  360,  371,  372,
+      373,  374,  379,  381,  361,  362,  368,  363,  375,  369,
+      376,  377,  380,  364,  383,  365,  370,  384,  386,  387,
+      388,  389,  510,  371,  390,  393,  372,  394,  395,  373,
+      374,  379,  381,  397,  398,  375,  409,  376,  377,  400,
+      380,  509,  508,  383,  384,  401,  402,  386,  387,  388,
+      389,  390,  403,  507,  393,  394,  404,  395,  506,  405,
+      397,  406,  407,  398,  408,  409,  400,  410,  413,  505,
+      504,  503,  492,  411,  493,  414,  494,  495,  502,  501,
+      500,  499,  498,  412,   14,   14,   14,   14,   54,   54,
+
+       54,   54,   58,   58,   58,   58,  102,  102,  103,  497,
+      103,  103,  105,  496,  105,  105,  106,  491,  106,  106,
+      151,  151,  151,  151,  490,  489,  488,  487,  486,  485,
+      484,  483,  482,  481,  480,  479,  478,  477,  476,  475,
+      474,  473,  472,  471,  470,  469,  468,  467,  466,  462,
+      459,  458,  457,  456,  455,  454,  453,  452,  451,  450,
+      449,  448,  447,  446,  445,  444,  443,  442,  441,  440,
+      439,  438,  437,  436,  435,  434,  433,  432,  429,  428,
+      427,  426,  425,  424,  423,  422,  421,  420,  419,  418,
+      415,  399,  396,  392,  391,  385,  382,  378,  366,  343,
+
+      316,  281,  269,  249,  247,  234,  211,  194,  152,  170,
+      153,  152,  107,  104,  104,  128,  111,  107,  104,  104,
+      533,   17,   13,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+
+      533
     } ;
 
-static yyconst flex_int16_t yy_chk[1088] =
+static yyconst flex_int16_t yy_chk[1102] =
     {   0,
-        0,    1,    1,    1,    2,    2,    2,  530,    2,    3,
+        0,    1,    1,    1,    2,    2,    2,  537,    2,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
         3,    3,    3,    3,    3,    3,    3,    3,    3,    3,
@@ -747,49 +754,49 @@ static yyconst flex_int16_t yy_chk[1088] =
 
         7,    7,    7,    8,    8,    8,    8,    8,    5,    5,
         5,    5,    5,    9,    9,    9,    9,   11,   11,   11,
-       31,    7,  269,  522,  269,    8,   10,   10,   10,   10,
+       31,    7,  269,  529,  269,    8,   10,   10,   10,   10,
        10,   12,   12,   12,   17,   12,   17,   45,    5,    5,
-        5,  109,   34,  109,  109,  444,  444,   17,   17,   17,
+        5,  109,   34,  109,  109,  451,  451,   17,   17,   17,
        17,   17,   17,   17,   25,   25,   25,   25,   25,   25,
-       25,  521,   45,    5,    5,    6,    6,    6,    6,    6,
+       25,  528,   45,    5,    5,    6,    6,    6,    6,    6,
         6,   34,    6,    6,    6,    6,    6,   35,   33,   38,
-       36,  520,   33,   33,   33,   39,    6,    6,    6,    6,
-        6,   17,   33,   37,   37,   40,  411,   51,   41,   37,
+       36,  527,   33,   33,   33,   39,    6,    6,    6,    6,
+        6,   17,   33,   37,   37,   40,  418,   51,   41,   37,
 
-      397,  518,  411,   39,   35,   47,   33,   36,   38,   33,
-       33,   33,   71,   41,  397,  446,    6,    6,    6,  446,
-      446,   37,   37,   40,   51,   42,   37,   41,   42,   46,
+      404,  525,  418,   39,   35,   47,   33,   36,   38,   33,
+       33,   33,   71,   41,  404,  453,    6,    6,    6,  453,
+      453,   37,   37,   40,   51,   42,   37,   41,   42,   46,
        39,   43,   68,   43,   47,   70,   69,   71,   46,   46,
        41,    6,    6,   43,   66,   66,   66,   66,   66,   66,
-       66,  516,   76,   42,   72,   42,   73,   74,   46,   68,
-       43,   77,   43,   69,   70,   46,   46,  514,  513,   82,
+       66,  523,   76,   42,   72,   42,   73,   74,   46,   68,
+       43,   77,   43,   69,   70,   46,   46,  521,  520,   82,
        75,   43,   44,   80,  133,   74,   44,   61,   44,   61,
        76,   72,   86,   73,   85,   44,   74,   44,   44,   77,
        61,   61,   61,   61,   61,   61,   61,   75,   82,  133,
 
-       80,   44,   74,   87,  512,   44,   44,   62,  511,   62,
-       86,   85,   44,  509,   44,   44,  508,  507,  506,  505,
+       80,   44,   74,   87,  519,   44,   44,   62,  518,   62,
+       86,   85,   44,  516,   44,   44,  515,  514,  513,  512,
        62,   62,   62,   62,   62,   62,   62,   63,   78,   63,
        92,   87,   88,   78,   61,   64,   83,   64,   64,   83,
        63,   63,   63,   63,   63,   63,   63,   90,   64,   64,
        64,   64,   64,   64,   64,   79,   78,   79,   92,   88,
        78,   89,   89,   83,   91,   89,   93,   94,  154,   96,
-       95,   97,   98,   99,   90,  100,  101,  504,  112,  503,
-      502,  501,  113,   79,  114,   79,  115,  116,  117,   89,
-      118,   91,   89,  154,  500,   93,   94,   95,   96,   97,
+       95,   97,   98,   99,   90,  100,  101,  511,  112,  510,
+      509,  508,  113,   79,  114,   79,  115,  116,  117,   89,
+      118,   91,   89,  154,  507,   93,   94,   95,   96,   97,
 
        98,  119,   99,  120,  100,  101,  108,  112,  108,  108,
       113,  114,  121,  123,  115,  117,  116,  122,  118,  108,
       108,  108,  108,  108,  108,  108,  124,  125,  119,  126,
       127,  120,  129,  130,  132,  131,  129,  134,  135,  138,
       123,  121,  136,  146,  137,  122,  139,  140,  141,  142,
-      143,  496,  144,  124,  145,  125,  147,  126,  127,  148,
+      143,  503,  144,  124,  145,  125,  147,  126,  127,  148,
       129,  132,  130,  129,  131,  149,  134,  135,  138,  150,
       136,  137,  146,  139,  140,  155,  141,  142,  143,  144,
       156,  145,  157,  158,  147,  159,  160,  148,  161,  162,
       163,  164,  149,  165,  166,  168,  150,  167,  169,  175,
 
-      171,  172,  155,  173,  174,  495,  176,  156,  177,  178,
+      171,  172,  155,  173,  174,  502,  176,  156,  177,  178,
       158,  157,  159,  180,  160,  161,  162,  163,  164,  179,
       165,  181,  168,  166,  182,  167,  175,  169,  171,  183,
       172,  186,  173,  174,  176,  188,  184,  177,  178,  184,
@@ -802,57 +809,60 @@ static yyconst flex_int16_t yy_chk[1088] =
 
       228,  216,  229,  217,  230,  231,  232,  233,  236,  235,
       239,  218,  238,  237,  220,  221,  222,  240,  251,  241,
-      223,  224,  245,  227,  248,  225,  226,  228,  249,  229,
+      223,  224,  243,  227,  245,  225,  226,  228,  248,  229,
       231,  230,  246,  232,  246,  236,  233,  235,  237,  239,
-      238,  250,  252,  257,  253,  251,  240,  241,  254,  255,
-      245,  256,  258,  248,  259,  259,  249,  262,  260,  246,
-      260,  246,  261,  264,  265,  266,  268,  259,  267,  250,
-      252,  253,  257,  270,  272,  254,  271,  255,  256,  273,
-      275,  258,  276,  259,  259,  262,  260,  260,  277,  261,
-      264,  265,  278,  266,  268,  259,  279,  267,  281,  282,
-
-      283,  270,  272,  271,  284,  287,  286,  275,  273,  288,
-      276,  289,  292,  293,  294,  296,  277,  295,  298,  299,
-      302,  278,  301,  279,  303,  305,  281,  282,  283,  306,
-      307,  311,  287,  284,  286,  309,  288,  312,  313,  289,
-      292,  294,  293,  296,  295,  315,  298,  317,  299,  302,
-      301,  318,  305,  303,  306,  319,  320,  494,  322,  307,
-      311,  321,  323,  309,  312,  324,  325,  313,  326,  348,
-      327,  328,  329,  315,  330,  317,  331,  333,  334,  318,
-      336,  338,  339,  342,  319,  320,  322,  343,  321,  344,
-      323,  350,  347,  324,  348,  325,  326,  327,  328,  349,
-
-      329,  330,  351,  352,  333,  331,  334,  336,  338,  339,
-      353,  355,  342,  358,  360,  365,  343,  369,  344,  347,
-      350,  366,  370,  371,  382,  492,  349,  376,  383,  388,
-      352,  351,  387,  390,  393,  491,  490,  353,  355,  394,
-      395,  489,  358,  360,  365,  394,  369,  395,  366,  487,
-      486,  370,  371,  382,  376,  394,  383,  485,  388,  387,
-      390,  392,  392,  393,  483,  474,  481,  474,  392,  474,
-      474,  480,  392,  479,  478,  392,  477,  392,  392,  476,
-      392,  527,  527,  527,  527,  528,  528,  528,  528,  529,
-      529,  529,  529,  531,  531,  532,  475,  532,  532,  533,
-
-      473,  533,  533,  534,  472,  534,  534,  535,  535,  535,
-      535,  471,  470,  469,  468,  467,  466,  465,  464,  463,
-      462,  460,  459,  458,  457,  456,  455,  454,  453,  452,
-      451,  450,  449,  448,  447,  445,  443,  442,  441,  440,
-      439,  438,  436,  435,  434,  433,  432,  431,  428,  427,
-      426,  425,  424,  423,  422,  421,  420,  419,  418,  417,
-      416,  414,  413,  412,  410,  409,  408,  407,  406,  405,
-      404,  403,  401,  400,  399,  398,  396,  389,  385,  381,
-      377,  368,  362,  356,  340,  314,  280,  247,  234,  213,
-      211,  194,  170,  153,  151,  128,  111,  110,  106,  105,
-
-      103,   81,   65,   57,   56,   55,   13,    4,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526,  526,  526,  526,
-      526,  526,  526,  526,  526,  526,  526
+      238,  249,  250,  252,  255,  251,  240,  241,  253,  254,
+      243,  256,  245,  257,  258,  259,  259,  248,  260,  246,
+      260,  246,  261,  262,  501,  264,  265,  266,  259,  249,
+      250,  252,  255,  267,  271,  253,  254,  268,  256,  270,
+      272,  273,  257,  258,  259,  259,  260,  260,  275,  261,
+      276,  262,  264,  265,  277,  266,  259,  278,  279,  280,
+
+      282,  271,  267,  283,  284,  268,  285,  270,  272,  287,
+      273,  288,  289,  290,  293,  275,  294,  295,  276,  296,
+      297,  299,  300,  277,  302,  278,  280,  279,  282,  303,
+      304,  283,  284,  306,  308,  285,  307,  287,  288,  289,
+      310,  290,  293,  314,  295,  294,  296,  312,  297,  299,
+      313,  300,  302,  315,  323,  317,  319,  320,  303,  304,
+      306,  307,  321,  308,  322,  329,  324,  325,  310,  326,
+      314,  327,  312,  328,  333,  330,  331,  345,  332,  313,
+      335,  323,  315,  317,  319,  320,  336,  346,  338,  339,
+      347,  321,  329,  322,  324,  325,  341,  326,  342,  350,
+
+      327,  328,  330,  333,  331,  332,  345,  335,  351,  352,
+      353,  354,  361,  364,  336,  338,  346,  339,  355,  347,
+      356,  358,  363,  341,  369,  342,  350,  370,  373,  374,
+      375,  380,  499,  351,  381,  387,  352,  388,  389,  353,
+      354,  361,  364,  393,  394,  355,  400,  356,  358,  397,
+      363,  498,  497,  369,  370,  399,  399,  373,  374,  375,
+      380,  381,  399,  496,  387,  388,  399,  389,  494,  399,
+      393,  399,  399,  394,  399,  400,  397,  401,  402,  493,
+      492,  490,  481,  401,  481,  402,  481,  481,  488,  487,
+      486,  485,  484,  401,  534,  534,  534,  534,  535,  535,
+
+      535,  535,  536,  536,  536,  536,  538,  538,  539,  483,
+      539,  539,  540,  482,  540,  540,  541,  480,  541,  541,
+      542,  542,  542,  542,  479,  478,  477,  476,  475,  474,
+      473,  472,  471,  470,  469,  467,  466,  465,  464,  463,
+      462,  461,  460,  459,  458,  457,  456,  455,  454,  452,
+      450,  449,  448,  447,  446,  445,  443,  442,  441,  440,
+      439,  438,  435,  434,  433,  432,  431,  430,  429,  428,
+      427,  426,  425,  424,  423,  421,  420,  419,  417,  416,
+      415,  414,  413,  412,  411,  410,  408,  407,  406,  405,
+      403,  396,  391,  386,  382,  372,  366,  359,  343,  316,
+
+      281,  247,  234,  213,  211,  194,  170,  153,  151,  128,
+      111,  110,  106,  105,  103,   81,   65,   57,   56,   55,
+       13,    4,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+      533,  533,  533,  533,  533,  533,  533,  533,  533,  533,
+
+      533
     } ;
 
 static yy_state_type yy_last_accepting_state;
@@ -869,8 +879,8 @@ int yy_flex_debug = 0;
 #define YY_MORE_ADJ 0
 #define YY_RESTORE_YY_MORE_OFFSET
 char *yytext;
-#line 1 "../lexxer.l"
-#line 17 "../lexxer.l"
+#line 1 "../release/lexxer.l"
+#line 17 "../release/lexxer.l"
 /*
  * Mach Operating System
  * Copyright (c) 1991,1990 Carnegie Mellon University
@@ -907,6 +917,9 @@ char *yytext;
 #include "lexxer.h"
 #include "cpu.h"
 
+/* We do not need the input function.  */
+#define YY_NO_INPUT
+
 #define        stringize(x)    #x
 
 #ifdef LDEBUG
@@ -954,7 +967,7 @@ static struct yysvf *oldYYBegin;
 
 static void doSharp(const char *body); /* process body of # directives */
 
-#line 958 "lexxer.c"
+#line 971 "lexxer.c"
 
 #define INITIAL 0
 #define Normal 1
@@ -998,7 +1011,7 @@ FILE *yyget_out (void );
 
 void yyset_out  (FILE * out_str  );
 
-int yyget_leng (void );
+yy_size_t yyget_leng (void );
 
 char *yyget_text (void );
 
@@ -1147,11 +1160,6 @@ YY_DECL
        register char *yy_cp, *yy_bp;
        register int yy_act;
     
-#line 103 "../lexxer.l"
-
-
-#line 1154 "lexxer.c"
-
        if ( !(yy_init) )
                {
                (yy_init) = 1;
@@ -1178,6 +1186,12 @@ YY_DECL
                yy_load_buffer_state( );
                }
 
+       {
+#line 106 "../release/lexxer.l"
+
+
+#line 1194 "lexxer.c"
+
        while ( 1 )             /* loops until end-of-file is reached */
                {
                yy_cp = (yy_c_buf_p);
@@ -1195,7 +1209,7 @@ YY_DECL
 yy_match:
                do
                        {
-                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)];
+                       register YY_CHAR yy_c = yy_ec[YY_SC_TO_UI(*yy_cp)] ;
                        if ( yy_accept[yy_current_state] )
                                {
                                (yy_last_accepting_state) = yy_current_state;
@@ -1204,13 +1218,13 @@ yy_match:
                        while ( yy_chk[yy_base[yy_current_state] + yy_c] != 
yy_current_state )
                                {
                                yy_current_state = (int) 
yy_def[yy_current_state];
-                               if ( yy_current_state >= 527 )
+                               if ( yy_current_state >= 534 )
                                        yy_c = yy_meta[(unsigned int) yy_c];
                                }
                        yy_current_state = yy_nxt[yy_base[yy_current_state] + 
(unsigned int) yy_c];
                        ++yy_cp;
                        }
-               while ( yy_base[yy_current_state] != 1009 );
+               while ( yy_base[yy_current_state] != 1023 );
 
 yy_find_action:
                yy_act = yy_accept[yy_current_state];
@@ -1236,530 +1250,535 @@ do_action:    /* This label is used only to access 
EOF actions. */
 
 case 1:
 YY_RULE_SETUP
-#line 105 "../lexxer.l"
+#line 108 "../release/lexxer.l"
 RETURN(syRoutine);
        YY_BREAK
 case 2:
 YY_RULE_SETUP
-#line 106 "../lexxer.l"
+#line 109 "../release/lexxer.l"
 RETURN(syFunction);
        YY_BREAK
 case 3:
 YY_RULE_SETUP
-#line 107 "../lexxer.l"
+#line 110 "../release/lexxer.l"
 RETURN(syProcedure);
        YY_BREAK
 case 4:
 YY_RULE_SETUP
-#line 108 "../lexxer.l"
+#line 111 "../release/lexxer.l"
 RETURN(sySimpleProcedure);
        YY_BREAK
 case 5:
 YY_RULE_SETUP
-#line 109 "../lexxer.l"
+#line 112 "../release/lexxer.l"
 RETURN(sySimpleRoutine);
        YY_BREAK
 case 6:
 YY_RULE_SETUP
-#line 110 "../lexxer.l"
+#line 113 "../release/lexxer.l"
 RETURN(sySubsystem);
        YY_BREAK
 case 7:
 YY_RULE_SETUP
-#line 111 "../lexxer.l"
+#line 114 "../release/lexxer.l"
 RETURN(syMsgOption);
        YY_BREAK
 case 8:
 YY_RULE_SETUP
-#line 112 "../lexxer.l"
+#line 115 "../release/lexxer.l"
 RETURN(syMsgSeqno);
        YY_BREAK
 case 9:
 YY_RULE_SETUP
-#line 113 "../lexxer.l"
+#line 116 "../release/lexxer.l"
 RETURN(syWaitTime);
        YY_BREAK
 case 10:
 YY_RULE_SETUP
-#line 114 "../lexxer.l"
+#line 117 "../release/lexxer.l"
 RETURN(syNoWaitTime);
        YY_BREAK
 case 11:
 YY_RULE_SETUP
-#line 115 "../lexxer.l"
+#line 118 "../release/lexxer.l"
 RETURN(syIn);
        YY_BREAK
 case 12:
 YY_RULE_SETUP
-#line 116 "../lexxer.l"
+#line 119 "../release/lexxer.l"
 RETURN(syOut);
        YY_BREAK
 case 13:
 YY_RULE_SETUP
-#line 117 "../lexxer.l"
+#line 120 "../release/lexxer.l"
 RETURN(syInOut);
        YY_BREAK
 case 14:
 YY_RULE_SETUP
-#line 118 "../lexxer.l"
+#line 121 "../release/lexxer.l"
 RETURN(syRequestPort);
        YY_BREAK
 case 15:
 YY_RULE_SETUP
-#line 119 "../lexxer.l"
+#line 122 "../release/lexxer.l"
 RETURN(syReplyPort);
        YY_BREAK
 case 16:
 YY_RULE_SETUP
-#line 120 "../lexxer.l"
+#line 123 "../release/lexxer.l"
 RETURN(syUReplyPort);
        YY_BREAK
 case 17:
 YY_RULE_SETUP
-#line 121 "../lexxer.l"
+#line 124 "../release/lexxer.l"
 RETURN(sySReplyPort);
        YY_BREAK
 case 18:
 YY_RULE_SETUP
-#line 122 "../lexxer.l"
+#line 125 "../release/lexxer.l"
 RETURN(syArray);
        YY_BREAK
 case 19:
 YY_RULE_SETUP
-#line 123 "../lexxer.l"
+#line 126 "../release/lexxer.l"
 RETURN(syOf);
        YY_BREAK
 case 20:
 YY_RULE_SETUP
-#line 124 "../lexxer.l"
+#line 127 "../release/lexxer.l"
 RETURN(syErrorProc);
        YY_BREAK
 case 21:
 YY_RULE_SETUP
-#line 125 "../lexxer.l"
+#line 128 "../release/lexxer.l"
 RETURN(syServerPrefix);
        YY_BREAK
 case 22:
 YY_RULE_SETUP
-#line 126 "../lexxer.l"
+#line 129 "../release/lexxer.l"
 RETURN(syUserPrefix);
        YY_BREAK
 case 23:
 YY_RULE_SETUP
-#line 127 "../lexxer.l"
+#line 130 "../release/lexxer.l"
 RETURN(syServerDemux);
        YY_BREAK
 case 24:
 YY_RULE_SETUP
-#line 128 "../lexxer.l"
+#line 131 "../release/lexxer.l"
 RETURN(syRCSId);
        YY_BREAK
 case 25:
 YY_RULE_SETUP
-#line 129 "../lexxer.l"
+#line 132 "../release/lexxer.l"
 RETURN(syImport);
        YY_BREAK
 case 26:
 YY_RULE_SETUP
-#line 130 "../lexxer.l"
+#line 133 "../release/lexxer.l"
 RETURN(syUImport);
        YY_BREAK
 case 27:
 YY_RULE_SETUP
-#line 131 "../lexxer.l"
+#line 134 "../release/lexxer.l"
 RETURN(sySImport);
        YY_BREAK
 case 28:
 YY_RULE_SETUP
-#line 132 "../lexxer.l"
+#line 135 "../release/lexxer.l"
 RETURN(syType);
        YY_BREAK
 case 29:
 YY_RULE_SETUP
-#line 133 "../lexxer.l"
+#line 136 "../release/lexxer.l"
 RETURN(syKernelServer);
        YY_BREAK
 case 30:
 YY_RULE_SETUP
-#line 134 "../lexxer.l"
+#line 137 "../release/lexxer.l"
 RETURN(syKernelUser);
        YY_BREAK
 case 31:
 YY_RULE_SETUP
-#line 135 "../lexxer.l"
+#line 138 "../release/lexxer.l"
 RETURN(sySkip);
        YY_BREAK
 case 32:
 YY_RULE_SETUP
-#line 136 "../lexxer.l"
+#line 139 "../release/lexxer.l"
 RETURN(syStruct);
        YY_BREAK
 case 33:
 YY_RULE_SETUP
-#line 137 "../lexxer.l"
+#line 140 "../release/lexxer.l"
 RETURN(syInTran);
        YY_BREAK
 case 34:
 YY_RULE_SETUP
-#line 138 "../lexxer.l"
-RETURN(syOutTran);
+#line 141 "../release/lexxer.l"
+RETURN(syInTranPayload);
        YY_BREAK
 case 35:
 YY_RULE_SETUP
-#line 139 "../lexxer.l"
-RETURN(syDestructor);
+#line 142 "../release/lexxer.l"
+RETURN(syOutTran);
        YY_BREAK
 case 36:
 YY_RULE_SETUP
-#line 140 "../lexxer.l"
-RETURN(syCType);
+#line 143 "../release/lexxer.l"
+RETURN(syDestructor);
        YY_BREAK
 case 37:
 YY_RULE_SETUP
-#line 141 "../lexxer.l"
-RETURN(syCUserType);
+#line 144 "../release/lexxer.l"
+RETURN(syCType);
        YY_BREAK
 case 38:
 YY_RULE_SETUP
-#line 142 "../lexxer.l"
-RETURN(syCServerType);
+#line 145 "../release/lexxer.l"
+RETURN(syCUserType);
        YY_BREAK
 case 39:
 YY_RULE_SETUP
-#line 143 "../lexxer.l"
-RETURN(syCString);
+#line 146 "../release/lexxer.l"
+RETURN(syCServerType);
        YY_BREAK
 case 40:
 YY_RULE_SETUP
-#line 145 "../lexxer.l"
-FRETURN(flLong);
+#line 147 "../release/lexxer.l"
+RETURN(syCString);
        YY_BREAK
 case 41:
 YY_RULE_SETUP
-#line 146 "../lexxer.l"
-FRETURN(flNotLong);
+#line 149 "../release/lexxer.l"
+FRETURN(flLong);
        YY_BREAK
 case 42:
 YY_RULE_SETUP
-#line 147 "../lexxer.l"
-FRETURN(flDealloc);
+#line 150 "../release/lexxer.l"
+FRETURN(flNotLong);
        YY_BREAK
 case 43:
 YY_RULE_SETUP
-#line 148 "../lexxer.l"
-FRETURN(flNotDealloc);
+#line 151 "../release/lexxer.l"
+FRETURN(flDealloc);
        YY_BREAK
 case 44:
 YY_RULE_SETUP
-#line 149 "../lexxer.l"
-FRETURN(flServerCopy);
+#line 152 "../release/lexxer.l"
+FRETURN(flNotDealloc);
        YY_BREAK
 case 45:
 YY_RULE_SETUP
-#line 150 "../lexxer.l"
-FRETURN(flCountInOut);
+#line 153 "../release/lexxer.l"
+FRETURN(flServerCopy);
        YY_BREAK
 case 46:
 YY_RULE_SETUP
-#line 151 "../lexxer.l"
-FRETURN(flNone);
+#line 154 "../release/lexxer.l"
+FRETURN(flCountInOut);
        YY_BREAK
 case 47:
 YY_RULE_SETUP
-#line 153 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_POLYMORPHIC,word_size_in_bits);
+#line 155 "../release/lexxer.l"
+FRETURN(flNone);
        YY_BREAK
 case 48:
 YY_RULE_SETUP
-#line 155 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_UNSTRUCTURED,0);
+#line 157 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_POLYMORPHIC,word_size_in_bits);
        YY_BREAK
 case 49:
 YY_RULE_SETUP
-#line 156 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_BIT,1);
+#line 159 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_UNSTRUCTURED,0);
        YY_BREAK
 case 50:
 YY_RULE_SETUP
-#line 157 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_BOOLEAN,32);
+#line 160 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_BIT,1);
        YY_BREAK
 case 51:
 YY_RULE_SETUP
-#line 158 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_INTEGER_16,16);
+#line 161 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_BOOLEAN,32);
        YY_BREAK
 case 52:
 YY_RULE_SETUP
-#line 159 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_INTEGER_32,32);
+#line 162 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_INTEGER_16,16);
        YY_BREAK
 case 53:
 YY_RULE_SETUP
-#line 160 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_INTEGER_64,64);
+#line 163 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_INTEGER_32,32);
        YY_BREAK
 case 54:
 YY_RULE_SETUP
-#line 161 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_CHAR,8);
+#line 164 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_INTEGER_64,64);
        YY_BREAK
 case 55:
 YY_RULE_SETUP
-#line 162 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_BYTE,8);
+#line 165 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_CHAR,8);
        YY_BREAK
 case 56:
 YY_RULE_SETUP
-#line 163 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_INTEGER_8,8);
+#line 166 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_BYTE,8);
        YY_BREAK
 case 57:
 YY_RULE_SETUP
-#line 164 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_REAL,0);
+#line 167 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_INTEGER_8,8);
        YY_BREAK
 case 58:
 YY_RULE_SETUP
-#line 165 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_STRING,0);
+#line 168 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_REAL,0);
        YY_BREAK
 case 59:
 YY_RULE_SETUP
-#line 166 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_STRING_C,0);
+#line 169 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_STRING,0);
        YY_BREAK
 case 60:
 YY_RULE_SETUP
-#line 168 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
+#line 170 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_STRING_C,0);
        YY_BREAK
 case 61:
 YY_RULE_SETUP
-#line 169 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
+#line 172 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_MOVE_RECEIVE,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
        YY_BREAK
 case 62:
 YY_RULE_SETUP
-#line 170 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
+#line 173 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_COPY_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        YY_BREAK
 case 63:
 YY_RULE_SETUP
-#line 171 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
+#line 174 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_MAKE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        YY_BREAK
 case 64:
 YY_RULE_SETUP
-#line 172 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
+#line 175 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_MOVE_SEND,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        YY_BREAK
 case 65:
 YY_RULE_SETUP
-#line 173 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
+#line 176 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_MAKE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        YY_BREAK
 case 66:
 YY_RULE_SETUP
-#line 175 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_PORT_NAME,word_size_in_bits);
+#line 177 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_MOVE_SEND_ONCE,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        YY_BREAK
 case 67:
 YY_RULE_SETUP
-#line 176 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
+#line 179 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_PORT_NAME,word_size_in_bits);
        YY_BREAK
 case 68:
 YY_RULE_SETUP
-#line 177 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
+#line 180 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_RECEIVE,word_size_in_bits);
        YY_BREAK
 case 69:
 YY_RULE_SETUP
-#line 178 "../lexxer.l"
-TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
+#line 181 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND,word_size_in_bits);
        YY_BREAK
 case 70:
 YY_RULE_SETUP
-#line 179 "../lexxer.l"
-TRETURN(MACH_MSG_TYPE_POLYMORPHIC,0);
+#line 182 "../release/lexxer.l"
+TPRETURN(MACH_MSG_TYPE_POLYMORPHIC,MACH_MSG_TYPE_PORT_SEND_ONCE,word_size_in_bits);
        YY_BREAK
 case 71:
 YY_RULE_SETUP
-#line 181 "../lexxer.l"
-RETURN(syColon);
+#line 183 "../release/lexxer.l"
+TRETURN(MACH_MSG_TYPE_POLYMORPHIC,0);
        YY_BREAK
 case 72:
 YY_RULE_SETUP
-#line 182 "../lexxer.l"
-RETURN(sySemi);
+#line 185 "../release/lexxer.l"
+RETURN(syColon);
        YY_BREAK
 case 73:
 YY_RULE_SETUP
-#line 183 "../lexxer.l"
-RETURN(syComma);
+#line 186 "../release/lexxer.l"
+RETURN(sySemi);
        YY_BREAK
 case 74:
 YY_RULE_SETUP
-#line 184 "../lexxer.l"
-RETURN(syPlus);
+#line 187 "../release/lexxer.l"
+RETURN(syComma);
        YY_BREAK
 case 75:
 YY_RULE_SETUP
-#line 185 "../lexxer.l"
-RETURN(syMinus);
+#line 188 "../release/lexxer.l"
+RETURN(syPlus);
        YY_BREAK
 case 76:
 YY_RULE_SETUP
-#line 186 "../lexxer.l"
-RETURN(syStar);
+#line 189 "../release/lexxer.l"
+RETURN(syMinus);
        YY_BREAK
 case 77:
 YY_RULE_SETUP
-#line 187 "../lexxer.l"
-RETURN(syDiv);
+#line 190 "../release/lexxer.l"
+RETURN(syStar);
        YY_BREAK
 case 78:
 YY_RULE_SETUP
-#line 188 "../lexxer.l"
-RETURN(syLParen);
+#line 191 "../release/lexxer.l"
+RETURN(syDiv);
        YY_BREAK
 case 79:
 YY_RULE_SETUP
-#line 189 "../lexxer.l"
-RETURN(syRParen);
+#line 192 "../release/lexxer.l"
+RETURN(syLParen);
        YY_BREAK
 case 80:
 YY_RULE_SETUP
-#line 190 "../lexxer.l"
-RETURN(syEqual);
+#line 193 "../release/lexxer.l"
+RETURN(syRParen);
        YY_BREAK
 case 81:
 YY_RULE_SETUP
-#line 191 "../lexxer.l"
-RETURN(syCaret);
+#line 194 "../release/lexxer.l"
+RETURN(syEqual);
        YY_BREAK
 case 82:
 YY_RULE_SETUP
-#line 192 "../lexxer.l"
-RETURN(syTilde);
+#line 195 "../release/lexxer.l"
+RETURN(syCaret);
        YY_BREAK
 case 83:
 YY_RULE_SETUP
-#line 193 "../lexxer.l"
-RETURN(syLAngle);
+#line 196 "../release/lexxer.l"
+RETURN(syTilde);
        YY_BREAK
 case 84:
 YY_RULE_SETUP
-#line 194 "../lexxer.l"
-RETURN(syRAngle);
+#line 197 "../release/lexxer.l"
+RETURN(syLAngle);
        YY_BREAK
 case 85:
 YY_RULE_SETUP
-#line 195 "../lexxer.l"
-RETURN(syLBrack);
+#line 198 "../release/lexxer.l"
+RETURN(syRAngle);
        YY_BREAK
 case 86:
 YY_RULE_SETUP
-#line 196 "../lexxer.l"
-RETURN(syRBrack);
+#line 199 "../release/lexxer.l"
+RETURN(syLBrack);
        YY_BREAK
 case 87:
 YY_RULE_SETUP
-#line 197 "../lexxer.l"
-RETURN(syBar);
+#line 200 "../release/lexxer.l"
+RETURN(syRBrack);
        YY_BREAK
 case 88:
 YY_RULE_SETUP
-#line 199 "../lexxer.l"
+#line 201 "../release/lexxer.l"
+RETURN(syBar);
+       YY_BREAK
+case 89:
+YY_RULE_SETUP
+#line 203 "../release/lexxer.l"
 { yylval.identifier = strmake(yytext);
                          RETURN(syIdentifier); }
        YY_BREAK
-case 89:
+case 90:
 YY_RULE_SETUP
-#line 201 "../lexxer.l"
+#line 205 "../release/lexxer.l"
 { yylval.number = atoi(yytext); RETURN(syNumber); }
        YY_BREAK
-case 90:
+case 91:
 YY_RULE_SETUP
-#line 203 "../lexxer.l"
+#line 207 "../release/lexxer.l"
 { yylval.string = strmake(yytext);
                          BEGIN Normal; RETURN(syString); }
        YY_BREAK
-case 91:
+case 92:
 YY_RULE_SETUP
-#line 205 "../lexxer.l"
+#line 209 "../release/lexxer.l"
 { yylval.string = strmake(yytext);
                          BEGIN Normal; RETURN(syFileName); }
        YY_BREAK
-case 92:
+case 93:
 YY_RULE_SETUP
-#line 207 "../lexxer.l"
+#line 211 "../release/lexxer.l"
 { yylval.string = strmake(yytext);
                          BEGIN Normal; RETURN(syQString); }
        YY_BREAK
-case 93:
-/* rule 93 can match eol */
+case 94:
+/* rule 94 can match eol */
 YY_RULE_SETUP
-#line 210 "../lexxer.l"
+#line 214 "../release/lexxer.l"
 { doSharp(yytext+1);
                                          SAVE_BEGIN;
                                          BEGIN SkipToEOL; }
        YY_BREAK
-case 94:
+case 95:
 YY_RULE_SETUP
-#line 213 "../lexxer.l"
+#line 217 "../release/lexxer.l"
 { doSharp(yytext+1);
                                          SAVE_BEGIN;
                                          BEGIN SkipToEOL; }
        YY_BREAK
-case 95:
+case 96:
 YY_RULE_SETUP
-#line 216 "../lexxer.l"
+#line 220 "../release/lexxer.l"
 { /* GCC's pre-processor might emit those.  */
                                          SAVE_BEGIN;
                                          BEGIN SkipToEOL; }
        YY_BREAK
-case 96:
+case 97:
 YY_RULE_SETUP
-#line 219 "../lexxer.l"
+#line 223 "../release/lexxer.l"
 { yyerror("illegal # directive");
                                          SAVE_BEGIN;
                                          BEGIN SkipToEOL; }
        YY_BREAK
-case 97:
-/* rule 97 can match eol */
+case 98:
+/* rule 98 can match eol */
 YY_RULE_SETUP
-#line 223 "../lexxer.l"
+#line 227 "../release/lexxer.l"
 RSTR_BEGIN;
        YY_BREAK
-case 98:
+case 99:
 YY_RULE_SETUP
-#line 224 "../lexxer.l"
+#line 228 "../release/lexxer.l"
 ;
        YY_BREAK
-case 99:
+case 100:
 YY_RULE_SETUP
-#line 226 "../lexxer.l"
+#line 230 "../release/lexxer.l"
 ;
        YY_BREAK
-case 100:
-/* rule 100 can match eol */
+case 101:
+/* rule 101 can match eol */
 YY_RULE_SETUP
-#line 227 "../lexxer.l"
+#line 231 "../release/lexxer.l"
 { lineno++; }
        YY_BREAK
-case 101:
+case 102:
 YY_RULE_SETUP
-#line 228 "../lexxer.l"
+#line 232 "../release/lexxer.l"
 { BEGIN Normal; RETURN(syError); }
        YY_BREAK
-case 102:
+case 103:
 YY_RULE_SETUP
-#line 230 "../lexxer.l"
+#line 234 "../release/lexxer.l"
 ECHO;
        YY_BREAK
-#line 1763 "lexxer.c"
+#line 1782 "lexxer.c"
 case YY_STATE_EOF(INITIAL):
 case YY_STATE_EOF(Normal):
 case YY_STATE_EOF(String):
@@ -1895,6 +1914,7 @@ case YY_STATE_EOF(SkipToEOL):
                        "fatal flex scanner internal error--no action found" );
        } /* end of action switch */
                } /* end of scanning one token */
+       } /* end of user's declarations */
 } /* end of yylex */
 
 /* yy_get_next_buffer - try to read in a new buffer
@@ -1950,21 +1970,21 @@ static int yy_get_next_buffer (void)
 
        else
                {
-                       int num_to_read =
+                       yy_size_t num_to_read =
                        YY_CURRENT_BUFFER_LVALUE->yy_buf_size - number_to_move 
- 1;
 
                while ( num_to_read <= 0 )
                        { /* Not enough room in the buffer - grow it. */
 
                        /* just a shorter name for the current buffer */
-                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER;
+                       YY_BUFFER_STATE b = YY_CURRENT_BUFFER_LVALUE;
 
                        int yy_c_buf_p_offset =
                                (int) ((yy_c_buf_p) - b->yy_ch_buf);
 
                        if ( b->yy_is_our_buffer )
                                {
-                               int new_size = b->yy_buf_size * 2;
+                               yy_size_t new_size = b->yy_buf_size * 2;
 
                                if ( new_size <= 0 )
                                        b->yy_buf_size += b->yy_buf_size / 8;
@@ -1995,7 +2015,7 @@ static int yy_get_next_buffer (void)
 
                /* Read in more data. */
                YY_INPUT( 
(&YY_CURRENT_BUFFER_LVALUE->yy_ch_buf[number_to_move]),
-                       (yy_n_chars), (size_t) num_to_read );
+                       (yy_n_chars), num_to_read );
 
                YY_CURRENT_BUFFER_LVALUE->yy_n_chars = (yy_n_chars);
                }
@@ -2057,7 +2077,7 @@ static int yy_get_next_buffer (void)
                while ( yy_chk[yy_base[yy_current_state] + yy_c] != 
yy_current_state )
                        {
                        yy_current_state = (int) yy_def[yy_current_state];
-                       if ( yy_current_state >= 527 )
+                       if ( yy_current_state >= 534 )
                                yy_c = yy_meta[(unsigned int) yy_c];
                        }
                yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned 
int) yy_c];
@@ -2085,13 +2105,13 @@ static int yy_get_next_buffer (void)
        while ( yy_chk[yy_base[yy_current_state] + yy_c] != yy_current_state )
                {
                yy_current_state = (int) yy_def[yy_current_state];
-               if ( yy_current_state >= 527 )
+               if ( yy_current_state >= 534 )
                        yy_c = yy_meta[(unsigned int) yy_c];
                }
        yy_current_state = yy_nxt[yy_base[yy_current_state] + (unsigned int) 
yy_c];
-       yy_is_jam = (yy_current_state == 526);
+       yy_is_jam = (yy_current_state == 533);
 
-       return yy_is_jam ? 0 : yy_current_state;
+               return yy_is_jam ? 0 : yy_current_state;
 }
 
 #ifndef YY_NO_INPUT
@@ -2118,7 +2138,7 @@ static int yy_get_next_buffer (void)
 
                else
                        { /* need more input */
-                       int offset = (yy_c_buf_p) - (yytext_ptr);
+                       yy_size_t offset = (yy_c_buf_p) - (yytext_ptr);
                        ++(yy_c_buf_p);
 
                        switch ( yy_get_next_buffer(  ) )
@@ -2280,10 +2300,6 @@ static void yy_load_buffer_state  (void)
        yyfree((void *) b  );
 }
 
-#ifndef __cplusplus
-extern int isatty (int );
-#endif /* __cplusplus */
-    
 /* Initializes or reinitializes a buffer.
  * This function is sometimes called more than once on the same buffer,
  * such as during a yyrestart() or at EOF.
@@ -2396,7 +2412,7 @@ void yypop_buffer_state (void)
  */
 static void yyensure_buffer_stack (void)
 {
-       int num_to_alloc;
+       yy_size_t num_to_alloc;
     
        if (!(yy_buffer_stack)) {
 
@@ -2493,12 +2509,12 @@ YY_BUFFER_STATE yy_scan_string (yyconst char * yystr )
  * 
  * @return the newly allocated buffer state object.
  */
-YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, int  _yybytes_len )
+YY_BUFFER_STATE yy_scan_bytes  (yyconst char * yybytes, yy_size_t  
_yybytes_len )
 {
        YY_BUFFER_STATE b;
        char *buf;
        yy_size_t n;
-       int i;
+       yy_size_t i;
     
        /* Get memory for full buffer, including space for trailing EOB's. */
        n = _yybytes_len + 2;
@@ -2580,7 +2596,7 @@ FILE *yyget_out  (void)
 /** Get the length of the current token.
  * 
  */
-int yyget_leng  (void)
+yy_size_t yyget_leng  (void)
 {
         return yyleng;
 }
@@ -2728,7 +2744,7 @@ void yyfree (void * ptr )
 
 #define YYTABLES_NAME "yytables"
 
-#line 230 "../lexxer.l"
+#line 233 "../release/lexxer.l"
 
 
 
diff --git a/lexxer.l b/lexxer.l
index 6686b55..7ff5677 100644
--- a/lexxer.l
+++ b/lexxer.l
@@ -50,6 +50,9 @@ FileName      ({QString}|{AString})
 #include "lexxer.h"
 #include "cpu.h"
 
+/* We do not need the input function.  */
+#define YY_NO_INPUT
+
 #define        stringize(x)    #x
 
 #ifdef LDEBUG
@@ -135,6 +138,7 @@ static void doSharp(const char *body); /* process body of # 
directives */
 <Normal>[Ss][Kk][Ii][Pp]                       RETURN(sySkip);
 <Normal>[Ss][Tt][Rr][Uu][Cc][Tt]               RETURN(syStruct);
 <Normal>[Ii][Nn][Tt][Rr][Aa][Nn]               RETURN(syInTran);
+<Normal>[Ii][Nn][Tt][Rr][Aa][Nn][Pp][Aa][Yy][Ll][Oo][Aa][Dd] 
RETURN(syInTranPayload);
 <Normal>[Oo][Uu][Tt][Tt][Rr][Aa][Nn]           RETURN(syOutTran);
 <Normal>[Dd][Ee][Ss][Tt][Rr][Uu][Cc][Tt][Oo][Rr]       RETURN(syDestructor);
 <Normal>[Cc][Tt][Yy][Pp][Ee]                           RETURN(syCType);
diff --git a/parser.c b/parser.c
index 4c8556a..3ce61d4 100644
--- a/parser.c
+++ b/parser.c
@@ -1,19 +1,19 @@
-/* A Bison parser, made by GNU Bison 2.7.12-4996.  */
+/* A Bison parser, made by GNU Bison 3.0.2.  */
 
 /* Bison implementation for Yacc-like parsers in C
-   
-      Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
-   
+
+   Copyright (C) 1984, 1989-1990, 2000-2013 Free Software Foundation, Inc.
+
    This program is free software: you can redistribute it and/or modify
    it under the terms of the GNU General Public License as published by
    the Free Software Foundation, either version 3 of the License, or
    (at your option) any later version.
-   
+
    This program is distributed in the hope that it will be useful,
    but WITHOUT ANY WARRANTY; without even the implied warranty of
    MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    GNU General Public License for more details.
-   
+
    You should have received a copy of the GNU General Public License
    along with this program.  If not, see <http://www.gnu.org/licenses/>.  */
 
@@ -26,7 +26,7 @@
    special exception, which will cause the skeleton and the resulting
    Bison output files to be licensed under the GNU General Public
    License without this special exception.
-   
+
    This special exception was added by the Free Software Foundation in
    version 2.2 of Bison.  */
 
@@ -44,7 +44,7 @@
 #define YYBISON 1
 
 /* Bison version.  */
-#define YYBISON_VERSION "2.7.12-4996"
+#define YYBISON_VERSION "3.0.2"
 
 /* Skeleton name.  */
 #define YYSKELETON_NAME "yacc.c"
@@ -62,8 +62,7 @@
 
 
 /* Copy the first part of user declarations.  */
-/* Line 371 of yacc.c  */
-#line 117 "../parser.y"
+#line 119 "../release/parser.y" /* yacc.c:339  */
 
 
 #include <stdio.h>
@@ -84,14 +83,13 @@ yyerror(const char *s)
     error("%s", s);
 }
 
-/* Line 371 of yacc.c  */
-#line 89 "parser.c"
+#line 87 "parser.c" /* yacc.c:339  */
 
-# ifndef YY_NULL
+# ifndef YY_NULLPTR
 #  if defined __cplusplus && 201103L <= __cplusplus
-#   define YY_NULL nullptr
+#   define YY_NULLPTR nullptr
 #  else
-#   define YY_NULL 0
+#   define YY_NULLPTR 0
 #  endif
 # endif
 
@@ -104,7 +102,7 @@ yyerror(const char *s)
 #endif
 
 
-/* Enabling traces.  */
+/* Debug traces.  */
 #ifndef YYDEBUG
 # define YYDEBUG 0
 #endif
@@ -112,77 +110,77 @@ yyerror(const char *s)
 extern int yydebug;
 #endif
 
-/* Tokens.  */
+/* Token type.  */
 #ifndef YYTOKENTYPE
 # define YYTOKENTYPE
-   /* Put the tokens into the symbol table, so that GDB and other debuggers
-      know about them.  */
-   enum yytokentype {
-     sySkip = 258,
-     syRoutine = 259,
-     sySimpleRoutine = 260,
-     sySimpleProcedure = 261,
-     syProcedure = 262,
-     syFunction = 263,
-     sySubsystem = 264,
-     syKernelUser = 265,
-     syKernelServer = 266,
-     syMsgOption = 267,
-     syMsgSeqno = 268,
-     syWaitTime = 269,
-     syNoWaitTime = 270,
-     syErrorProc = 271,
-     syServerPrefix = 272,
-     syUserPrefix = 273,
-     syServerDemux = 274,
-     syRCSId = 275,
-     syImport = 276,
-     syUImport = 277,
-     sySImport = 278,
-     syIn = 279,
-     syOut = 280,
-     syInOut = 281,
-     syRequestPort = 282,
-     syReplyPort = 283,
-     sySReplyPort = 284,
-     syUReplyPort = 285,
-     syType = 286,
-     syArray = 287,
-     syStruct = 288,
-     syOf = 289,
-     syInTran = 290,
-     syOutTran = 291,
-     syDestructor = 292,
-     syCType = 293,
-     syCUserType = 294,
-     syCServerType = 295,
-     syCString = 296,
-     syColon = 297,
-     sySemi = 298,
-     syComma = 299,
-     syPlus = 300,
-     syMinus = 301,
-     syStar = 302,
-     syDiv = 303,
-     syLParen = 304,
-     syRParen = 305,
-     syEqual = 306,
-     syCaret = 307,
-     syTilde = 308,
-     syLAngle = 309,
-     syRAngle = 310,
-     syLBrack = 311,
-     syRBrack = 312,
-     syBar = 313,
-     syError = 314,
-     syNumber = 315,
-     sySymbolicType = 316,
-     syIdentifier = 317,
-     syString = 318,
-     syQString = 319,
-     syFileName = 320,
-     syIPCFlag = 321
-   };
+  enum yytokentype
+  {
+    sySkip = 258,
+    syRoutine = 259,
+    sySimpleRoutine = 260,
+    sySimpleProcedure = 261,
+    syProcedure = 262,
+    syFunction = 263,
+    sySubsystem = 264,
+    syKernelUser = 265,
+    syKernelServer = 266,
+    syMsgOption = 267,
+    syMsgSeqno = 268,
+    syWaitTime = 269,
+    syNoWaitTime = 270,
+    syErrorProc = 271,
+    syServerPrefix = 272,
+    syUserPrefix = 273,
+    syServerDemux = 274,
+    syRCSId = 275,
+    syImport = 276,
+    syUImport = 277,
+    sySImport = 278,
+    syIn = 279,
+    syOut = 280,
+    syInOut = 281,
+    syRequestPort = 282,
+    syReplyPort = 283,
+    sySReplyPort = 284,
+    syUReplyPort = 285,
+    syType = 286,
+    syArray = 287,
+    syStruct = 288,
+    syOf = 289,
+    syInTran = 290,
+    syOutTran = 291,
+    syDestructor = 292,
+    syCType = 293,
+    syCUserType = 294,
+    syCServerType = 295,
+    syCString = 296,
+    syColon = 297,
+    sySemi = 298,
+    syComma = 299,
+    syPlus = 300,
+    syMinus = 301,
+    syStar = 302,
+    syDiv = 303,
+    syLParen = 304,
+    syRParen = 305,
+    syEqual = 306,
+    syCaret = 307,
+    syTilde = 308,
+    syLAngle = 309,
+    syRAngle = 310,
+    syLBrack = 311,
+    syRBrack = 312,
+    syBar = 313,
+    syError = 314,
+    syNumber = 315,
+    sySymbolicType = 316,
+    syIdentifier = 317,
+    syString = 318,
+    syQString = 319,
+    syFileName = 320,
+    syIPCFlag = 321,
+    syInTranPayload = 322
+  };
 #endif
 /* Tokens.  */
 #define sySkip 258
@@ -249,14 +247,14 @@ extern int yydebug;
 #define syQString 319
 #define syFileName 320
 #define syIPCFlag 321
+#define syInTranPayload 322
 
-
-
+/* Value type.  */
 #if ! defined YYSTYPE && ! defined YYSTYPE_IS_DECLARED
-typedef union YYSTYPE
+typedef union YYSTYPE YYSTYPE;
+union YYSTYPE
 {
-/* Line 387 of yacc.c  */
-#line 139 "../parser.y"
+#line 141 "../release/parser.y" /* yacc.c:355  */
 
     u_int number;
     identifier_t identifier;
@@ -276,37 +274,22 @@ typedef union YYSTYPE
     argument_t *argument;
     ipc_flags_t flag;
 
-
-/* Line 387 of yacc.c  */
-#line 282 "parser.c"
-} YYSTYPE;
+#line 278 "parser.c" /* yacc.c:355  */
+};
 # define YYSTYPE_IS_TRIVIAL 1
-# define yystype YYSTYPE /* obsolescent; will be withdrawn */
 # define YYSTYPE_IS_DECLARED 1
 #endif
 
+
 extern YYSTYPE yylval;
 
-#ifdef YYPARSE_PARAM
-#if defined __STDC__ || defined __cplusplus
-int yyparse (void *YYPARSE_PARAM);
-#else
-int yyparse ();
-#endif
-#else /* ! YYPARSE_PARAM */
-#if defined __STDC__ || defined __cplusplus
 int yyparse (void);
-#else
-int yyparse ();
-#endif
-#endif /* ! YYPARSE_PARAM */
 
 
 
 /* Copy the second part of user declarations.  */
 
-/* Line 390 of yacc.c  */
-#line 310 "parser.c"
+#line 293 "parser.c" /* yacc.c:358  */
 
 #ifdef short
 # undef short
@@ -320,11 +303,8 @@ typedef unsigned char yytype_uint8;
 
 #ifdef YYTYPE_INT8
 typedef YYTYPE_INT8 yytype_int8;
-#elif (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-typedef signed char yytype_int8;
 #else
-typedef short int yytype_int8;
+typedef signed char yytype_int8;
 #endif
 
 #ifdef YYTYPE_UINT16
@@ -344,8 +324,7 @@ typedef short int yytype_int16;
 #  define YYSIZE_T __SIZE_TYPE__
 # elif defined size_t
 #  define YYSIZE_T size_t
-# elif ! defined YYSIZE_T && (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+# elif ! defined YYSIZE_T
 #  include <stddef.h> /* INFRINGES ON USER NAME SPACE */
 #  define YYSIZE_T size_t
 # else
@@ -367,11 +346,30 @@ typedef short int yytype_int16;
 # endif
 #endif
 
-#ifndef __attribute__
-/* This feature is available in gcc versions 2.5 and later.  */
-# if (! defined __GNUC__ || __GNUC__ < 2 \
-      || (__GNUC__ == 2 && __GNUC_MINOR__ < 5))
-#  define __attribute__(Spec) /* empty */
+#ifndef YY_ATTRIBUTE
+# if (defined __GNUC__                                               \
+      && (2 < __GNUC__ || (__GNUC__ == 2 && 96 <= __GNUC_MINOR__)))  \
+     || defined __SUNPRO_C && 0x5110 <= __SUNPRO_C
+#  define YY_ATTRIBUTE(Spec) __attribute__(Spec)
+# else
+#  define YY_ATTRIBUTE(Spec) /* empty */
+# endif
+#endif
+
+#ifndef YY_ATTRIBUTE_PURE
+# define YY_ATTRIBUTE_PURE   YY_ATTRIBUTE ((__pure__))
+#endif
+
+#ifndef YY_ATTRIBUTE_UNUSED
+# define YY_ATTRIBUTE_UNUSED YY_ATTRIBUTE ((__unused__))
+#endif
+
+#if !defined _Noreturn \
+     && (!defined __STDC_VERSION__ || __STDC_VERSION__ < 201112)
+# if defined _MSC_VER && 1200 <= _MSC_VER
+#  define _Noreturn __declspec (noreturn)
+# else
+#  define _Noreturn YY_ATTRIBUTE ((__noreturn__))
 # endif
 #endif
 
@@ -382,24 +380,25 @@ typedef short int yytype_int16;
 # define YYUSE(E) /* empty */
 #endif
 
-
-/* Identity function, used to suppress warnings about constant conditions.  */
-#ifndef lint
-# define YYID(N) (N)
+#if defined __GNUC__ && 407 <= __GNUC__ * 100 + __GNUC_MINOR__
+/* Suppress an incorrect diagnostic about yylval being uninitialized.  */
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN \
+    _Pragma ("GCC diagnostic push") \
+    _Pragma ("GCC diagnostic ignored \"-Wuninitialized\"")\
+    _Pragma ("GCC diagnostic ignored \"-Wmaybe-uninitialized\"")
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END \
+    _Pragma ("GCC diagnostic pop")
 #else
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-static int
-YYID (int yyi)
-#else
-static int
-YYID (yyi)
-    int yyi;
+# define YY_INITIAL_VALUE(Value) Value
 #endif
-{
-  return yyi;
-}
+#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
+# define YY_IGNORE_MAYBE_UNINITIALIZED_END
 #endif
+#ifndef YY_INITIAL_VALUE
+# define YY_INITIAL_VALUE(Value) /* Nothing. */
+#endif
+
 
 #if ! defined yyoverflow || YYERROR_VERBOSE
 
@@ -418,8 +417,7 @@ YYID (yyi)
 #    define alloca _alloca
 #   else
 #    define YYSTACK_ALLOC alloca
-#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS && (defined __STDC__ || 
defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#    if ! defined _ALLOCA_H && ! defined EXIT_SUCCESS
 #     include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
       /* Use EXIT_SUCCESS as a witness for stdlib.h.  */
 #     ifndef EXIT_SUCCESS
@@ -431,8 +429,8 @@ YYID (yyi)
 # endif
 
 # ifdef YYSTACK_ALLOC
-   /* Pacify GCC's `empty if-body' warning.  */
-#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (YYID (0))
+   /* Pacify GCC's 'empty if-body' warning.  */
+#  define YYSTACK_FREE(Ptr) do { /* empty */; } while (0)
 #  ifndef YYSTACK_ALLOC_MAXIMUM
     /* The OS might guarantee only one guard page at the bottom of the stack,
        and a page size can be as small as 4096 bytes.  So we cannot safely
@@ -448,7 +446,7 @@ YYID (yyi)
 #  endif
 #  if (defined __cplusplus && ! defined EXIT_SUCCESS \
        && ! ((defined YYMALLOC || defined malloc) \
-            && (defined YYFREE || defined free)))
+             && (defined YYFREE || defined free)))
 #   include <stdlib.h> /* INFRINGES ON USER NAME SPACE */
 #   ifndef EXIT_SUCCESS
 #    define EXIT_SUCCESS 0
@@ -456,15 +454,13 @@ YYID (yyi)
 #  endif
 #  ifndef YYMALLOC
 #   define YYMALLOC malloc
-#   if ! defined malloc && ! defined EXIT_SUCCESS && (defined __STDC__ || 
defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined malloc && ! defined EXIT_SUCCESS
 void *malloc (YYSIZE_T); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
 #  ifndef YYFREE
 #   define YYFREE free
-#   if ! defined free && ! defined EXIT_SUCCESS && (defined __STDC__ || 
defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
+#   if ! defined free && ! defined EXIT_SUCCESS
 void free (void *); /* INFRINGES ON USER NAME SPACE */
 #   endif
 #  endif
@@ -474,7 +470,7 @@ void free (void *); /* INFRINGES ON USER NAME SPACE */
 
 #if (! defined yyoverflow \
      && (! defined __cplusplus \
-        || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
+         || (defined YYSTYPE_IS_TRIVIAL && YYSTYPE_IS_TRIVIAL)))
 
 /* A type that is properly aligned for any stack member.  */
 union yyalloc
@@ -499,16 +495,16 @@ union yyalloc
    elements in the stack, and YYPTR gives the new location of the
    stack.  Advance YYPTR to a properly aligned location for the next
    stack.  */
-# define YYSTACK_RELOCATE(Stack_alloc, Stack)                          \
-    do                                                                 \
-      {                                                                        
\
-       YYSIZE_T yynewbytes;                                            \
-       YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
-       Stack = &yyptr->Stack_alloc;                                    \
-       yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
-       yyptr += yynewbytes / sizeof (*yyptr);                          \
-      }                                                                        
\
-    while (YYID (0))
+# define YYSTACK_RELOCATE(Stack_alloc, Stack)                           \
+    do                                                                  \
+      {                                                                 \
+        YYSIZE_T yynewbytes;                                            \
+        YYCOPY (&yyptr->Stack_alloc, Stack, yysize);                    \
+        Stack = &yyptr->Stack_alloc;                                    \
+        yynewbytes = yystacksize * sizeof (*Stack) + YYSTACK_GAP_MAXIMUM; \
+        yyptr += yynewbytes / sizeof (*yyptr);                          \
+      }                                                                 \
+    while (0)
 
 #endif
 
@@ -527,7 +523,7 @@ union yyalloc
           for (yyi = 0; yyi < (Count); yyi++)   \
             (Dst)[yyi] = (Src)[yyi];            \
         }                                       \
-      while (YYID (0))
+      while (0)
 #  endif
 # endif
 #endif /* !YYCOPY_NEEDED */
@@ -535,25 +531,27 @@ union yyalloc
 /* YYFINAL -- State number of the termination state.  */
 #define YYFINAL  2
 /* YYLAST -- Last index in YYTABLE.  */
-#define YYLAST   219
+#define YYLAST   223
 
 /* YYNTOKENS -- Number of terminals.  */
-#define YYNTOKENS  67
+#define YYNTOKENS  68
 /* YYNNTS -- Number of nonterminals.  */
 #define YYNNTS  46
 /* YYNRULES -- Number of rules.  */
-#define YYNRULES  108
-/* YYNRULES -- Number of states.  */
-#define YYNSTATES  213
+#define YYNRULES  109
+/* YYNSTATES -- Number of states.  */
+#define YYNSTATES  217
 
-/* YYTRANSLATE(YYLEX) -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[YYX] -- Symbol number corresponding to YYX as returned
+   by yylex, with out-of-bounds checking.  */
 #define YYUNDEFTOK  2
-#define YYMAXUTOK   321
+#define YYMAXUTOK   322
 
-#define YYTRANSLATE(YYX)                                               \
+#define YYTRANSLATE(YYX)                                                \
   ((unsigned int) (YYX) <= YYMAXUTOK ? yytranslate[YYX] : YYUNDEFTOK)
 
-/* YYTRANSLATE[YYLEX] -- Bison symbol number corresponding to YYLEX.  */
+/* YYTRANSLATE[TOKEN-NUM] -- Symbol number corresponding to TOKEN-NUM
+   as returned by yylex, without out-of-bounds checking.  */
 static const yytype_uint8 yytranslate[] =
 {
        0,     2,     2,     2,     2,     2,     2,     2,     2,     2,
@@ -588,82 +586,24 @@ static const yytype_uint8 yytranslate[] =
       35,    36,    37,    38,    39,    40,    41,    42,    43,    44,
       45,    46,    47,    48,    49,    50,    51,    52,    53,    54,
       55,    56,    57,    58,    59,    60,    61,    62,    63,    64,
-      65,    66
+      65,    66,    67
 };
 
 #if YYDEBUG
-/* YYPRHS[YYN] -- Index of the first RHS symbol of rule number YYN in
-   YYRHS.  */
-static const yytype_uint16 yyprhs[] =
-{
-       0,     0,     3,     4,     7,    10,    13,    16,    19,    22,
-      25,    28,    31,    34,    37,    41,    44,    47,    49,    52,
-      57,    59,    60,    63,    65,    67,    69,    71,    75,    79,
-      81,    84,    87,    90,    93,    97,    99,   101,   103,   107,
-     110,   114,   116,   125,   134,   142,   147,   152,   157,   159,
-     161,   164,   167,   170,   173,   175,   177,   184,   185,   189,
-     195,   197,   199,   201,   205,   207,   212,   218,   226,   232,
-     238,   243,   250,   254,   258,   262,   266,   268,   272,   274,
-     276,   278,   280,   282,   286,   290,   294,   298,   303,   306,
-     310,   312,   316,   321,   322,   324,   326,   328,   330,   332,
-     334,   336,   338,   340,   342,   345,   348,   349,   350
-};
-
-/* YYRHS -- A `-1'-separated list of the rules' RHS.  */
-static const yytype_int8 yyrhs[] =
-{
-      68,     0,    -1,    -1,    68,    69,    -1,    70,    43,    -1,
-      77,    43,    -1,    76,    43,    -1,    78,    43,    -1,    79,
-      43,    -1,    80,    43,    -1,    81,    43,    -1,    85,    43,
-      -1,    99,    43,    -1,     3,    43,    -1,     3,    60,    43,
-      -1,    82,    43,    -1,    84,    43,    -1,    43,    -1,     1,
-      43,    -1,    71,    72,    74,    75,    -1,     9,    -1,    -1,
-      72,    73,    -1,    10,    -1,    11,    -1,    62,    -1,    60,
-      -1,   110,    12,    63,    -1,   110,    14,    63,    -1,    15,
-      -1,    16,    62,    -1,    17,    62,    -1,    18,    62,    -1,
-      19,    62,    -1,   111,    83,    65,    -1,    21,    -1,    22,
-      -1,    23,    -1,   112,    20,    64,    -1,    31,    86,    -1,
-      62,    51,    87,    -1,    88,    -1,    87,    35,    42,    62,
-      62,    49,    62,    50,    -1,    87,    36,    42,    62,    62,
-      49,    62,    50,    -1,    87,    37,    42,    62,    49,    62,
-      50,    -1,    87,    38,    42,    62,    -1,    87,    39,    42,
-      62,    -1,    87,    40,    42,    62,    -1,    89,    -1,    93,
-      -1,    94,    88,    -1,    95,    88,    -1,    52,    88,    -1,
-      96,    88,    -1,    97,    -1,    92,    -1,    49,    92,    44,
-      98,    90,    50,    -1,    -1,    90,    44,    66,    -1,    90,
-      44,    66,    56,    57,    -1,    60,    -1,    61,    -1,    91,
-      -1,    91,    58,    91,    -1,    62,    -1,    32,    56,    57,
-      34,    -1,    32,    56,    47,    57,    34,    -1,    32,    56,
-      47,    42,    98,    57,    34,    -1,    32,    56,    98,    57,
-      34,    -1,    33,    56,    98,    57,    34,    -1,    41,    56,
-      98,    57,    -1,    41,    56,    47,    42,    98,    57,    -1,
-      98,    45,    98,    -1,    98,    46,    98,    -1,    98,    47,
-      98,    -1,    98,    48,    98,    -1,    60,    -1,    49,    98,
-      50,    -1,   100,    -1,   101,    -1,   102,    -1,   103,    -1,
-     104,    -1,     4,    62,   105,    -1,     5,    62,   105,    -1,
-       7,    62,   105,    -1,     6,    62,   105,    -1,     8,    62,
-     105,   109,    -1,    49,    50,    -1,    49,   106,    50,    -1,
-     107,    -1,   107,    43,   106,    -1,   108,    62,   109,    90,
-      -1,    -1,    24,    -1,    25,    -1,    26,    -1,    27,    -1,
-      28,    -1,    29,    -1,    30,    -1,    14,    -1,    12,    -1,
-      13,    -1,    42,    62,    -1,    42,    86,    -1,    -1,    -1,
-      -1
-};
-
-/* YYRLINE[YYN] -- source line where rule number YYN was defined.  */
+  /* YYRLINE[YYN] -- Source line where rule number YYN was defined.  */
 static const yytype_uint16 yyrline[] =
 {
-       0,   161,   161,   162,   165,   166,   167,   168,   169,   170,
-     171,   172,   173,   183,   185,   187,   188,   189,   190,   194,
-     207,   219,   220,   223,   229,   237,   240,   243,   260,   266,
-     274,   282,   290,   298,   306,   317,   318,   319,   322,   332,
-     342,   346,   348,   368,   388,   403,   417,   426,   438,   440,
-     442,   444,   446,   448,   450,   454,   460,   470,   471,   478,
-     487,   493,   497,   499,   523,   527,   529,   531,   536,   540,
-     544,   546,   551,   553,   555,   557,   559,   561,   566,   567,
-     568,   569,   570,   573,   577,   581,   585,   589,   593,   595,
-     600,   602,   609,   619,   620,   621,   622,   623,   624,   625,
-     626,   627,   628,   629,   632,   638,   643,   647,   651
+       0,   163,   163,   164,   167,   168,   169,   170,   171,   172,
+     173,   174,   175,   185,   187,   189,   190,   191,   192,   196,
+     209,   221,   222,   225,   231,   239,   242,   245,   262,   268,
+     276,   284,   292,   300,   308,   319,   320,   321,   324,   334,
+     344,   348,   350,   370,   385,   405,   420,   434,   443,   455,
+     457,   459,   461,   463,   465,   467,   471,   477,   487,   488,
+     495,   504,   510,   514,   516,   540,   544,   546,   548,   553,
+     557,   561,   563,   568,   570,   572,   574,   576,   578,   583,
+     584,   585,   586,   587,   590,   594,   598,   602,   606,   610,
+     612,   617,   619,   626,   636,   637,   638,   639,   640,   641,
+     642,   643,   644,   645,   646,   649,   655,   660,   664,   668
 };
 #endif
 
@@ -684,8 +624,8 @@ static const char *const yytname[] =
   "syMinus", "syStar", "syDiv", "syLParen", "syRParen", "syEqual",
   "syCaret", "syTilde", "syLAngle", "syRAngle", "syLBrack", "syRBrack",
   "syBar", "syError", "syNumber", "sySymbolicType", "syIdentifier",
-  "syString", "syQString", "syFileName", "syIPCFlag", "$accept",
-  "Statements", "Statement", "Subsystem", "SubsystemStart",
+  "syString", "syQString", "syFileName", "syIPCFlag", "syInTranPayload",
+  "$accept", "Statements", "Statement", "Subsystem", "SubsystemStart",
   "SubsystemMods", "SubsystemMod", "SubsystemName", "SubsystemBase",
   "MsgOption", "WaitTime", "Error", "ServerPrefix", "UserPrefix",
   "ServerDemux", "Import", "ImportIndicant", "RCSDecl", "TypeDecl",
@@ -694,13 +634,13 @@ static const char *const yytname[] =
   "ArrayHead", "StructHead", "CStringSpec", "IntExp", "RoutineDecl",
   "Routine", "SimpleRoutine", "Procedure", "SimpleProcedure", "Function",
   "Arguments", "ArgumentList", "Argument", "Direction", "ArgumentType",
-  "LookString", "LookFileName", "LookQString", YY_NULL
+  "LookString", "LookFileName", "LookQString", YY_NULLPTR
 };
 #endif
 
 # ifdef YYPRINT
-/* YYTOKNUM[YYLEX-NUM] -- Internal token number corresponding to
-   token YYLEX-NUM.  */
+/* YYTOKNUM[NUM] -- (External) token number corresponding to the
+   (internal) symbol number NUM (which must be that of a token).  */
 static const yytype_uint16 yytoknum[] =
 {
        0,   256,   257,   258,   259,   260,   261,   262,   263,   264,
@@ -709,234 +649,224 @@ static const yytype_uint16 yytoknum[] =
      285,   286,   287,   288,   289,   290,   291,   292,   293,   294,
      295,   296,   297,   298,   299,   300,   301,   302,   303,   304,
      305,   306,   307,   308,   309,   310,   311,   312,   313,   314,
-     315,   316,   317,   318,   319,   320,   321
+     315,   316,   317,   318,   319,   320,   321,   322
 };
 # endif
 
-/* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
-static const yytype_uint8 yyr1[] =
-{
-       0,    67,    68,    68,    69,    69,    69,    69,    69,    69,
-      69,    69,    69,    69,    69,    69,    69,    69,    69,    70,
-      71,    72,    72,    73,    73,    74,    75,    76,    77,    77,
-      78,    79,    80,    81,    82,    83,    83,    83,    84,    85,
-      86,    87,    87,    87,    87,    87,    87,    87,    88,    88,
-      88,    88,    88,    88,    88,    89,    89,    90,    90,    90,
-      91,    91,    92,    92,    93,    94,    94,    94,    95,    96,
-      97,    97,    98,    98,    98,    98,    98,    98,    99,    99,
-      99,    99,    99,   100,   101,   102,   103,   104,   105,   105,
-     106,   106,   107,   108,   108,   108,   108,   108,   108,   108,
-     108,   108,   108,   108,   109,   109,   110,   111,   112
-};
+#define YYPACT_NINF -130
 
-/* YYR2[YYN] -- Number of symbols composing right hand side of rule YYN.  */
-static const yytype_uint8 yyr2[] =
+#define yypact_value_is_default(Yystate) \
+  (!!((Yystate) == (-130)))
+
+#define YYTABLE_NINF -110
+
+#define yytable_value_is_error(Yytable_value) \
+  0
+
+  /* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
+     STATE-NUM.  */
+static const yytype_int16 yypact[] =
 {
-       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
-       2,     2,     2,     2,     3,     2,     2,     1,     2,     4,
-       1,     0,     2,     1,     1,     1,     1,     3,     3,     1,
-       2,     2,     2,     2,     3,     1,     1,     1,     3,     2,
-       3,     1,     8,     8,     7,     4,     4,     4,     1,     1,
-       2,     2,     2,     2,     1,     1,     6,     0,     3,     5,
-       1,     1,     1,     3,     1,     4,     5,     7,     5,     5,
-       4,     6,     3,     3,     3,     3,     1,     3,     1,     1,
-       1,     1,     1,     3,     3,     3,     3,     4,     2,     3,
-       1,     3,     4,     0,     1,     1,     1,     1,     1,     1,
-       1,     1,     1,     1,     2,     2,     0,     0,     0
+    -130,    50,  -130,   -29,   -22,   -43,    -1,     1,    33,    49,
+    -130,  -130,    55,    70,    75,    76,    88,  -130,  -130,    -3,
+    -130,    93,   101,   108,   109,   110,   111,   112,   113,   114,
+     115,  -130,  -130,  -130,  -130,  -130,    34,    81,   139,  -130,
+    -130,   117,   116,   116,   116,   116,   116,  -130,  -130,  -130,
+    -130,   118,  -130,  -130,   -10,  -130,  -130,  -130,  -130,  -130,
+    -130,  -130,  -130,  -130,  -130,    98,    99,  -130,  -130,  -130,
+     102,   100,  -130,    62,  -130,  -130,  -130,  -130,   121,    64,
+    -130,  -130,  -130,  -130,   106,  -130,  -130,  -130,  -130,  -130,
+    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
+     120,   125,   119,   122,  -130,   123,   124,   126,   -49,    64,
+    -130,  -130,  -130,   -31,  -130,  -130,   127,  -130,  -130,    64,
+      64,    64,  -130,  -130,  -130,  -130,     4,   121,   118,  -130,
+     -34,     0,   -25,   128,  -130,   129,   131,   132,   133,   134,
+     135,   136,   -49,  -130,  -130,  -130,  -130,  -130,   -32,     0,
+     149,  -130,    37,    53,   144,    61,     0,   130,   137,   138,
+     140,   141,   142,   143,  -130,   145,     0,   153,    95,  -130,
+       0,     0,     0,     0,   154,   156,     0,  -130,    32,   146,
+     147,   148,  -130,  -130,  -130,   150,   151,    74,  -130,  -130,
+      67,    67,  -130,  -130,  -130,  -130,    82,    -5,   152,   157,
+     158,  -130,   155,   159,  -130,  -130,   160,   161,   163,   162,
+    -130,   164,   165,  -130,  -130,  -130,  -130
 };
 
-/* YYDEFACT[STATE-NAME] -- Default reduction number in state STATE-NUM.
-   Performed when YYTABLE doesn't specify something else to do.  Zero
-   means the default is an error.  */
+  /* YYDEFACT[STATE-NUM] -- Default reduction number in state STATE-NUM.
+     Performed when YYTABLE does not specify something else to do.  Zero
+     means the default is an error.  */
 static const yytype_uint8 yydefact[] =
 {
        2,     0,     1,     0,     0,     0,     0,     0,     0,     0,
       20,    29,     0,     0,     0,     0,     0,    17,     3,     0,
       21,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,    78,    79,    80,    81,    82,     0,     0,     0,    18,
+       0,    79,    80,    81,    82,    83,     0,     0,     0,    18,
       13,     0,     0,     0,     0,     0,     0,    30,    31,    32,
       33,     0,    39,     4,     0,     6,     5,     7,     8,     9,
       10,    15,    16,    11,    12,     0,     0,    35,    36,    37,
-       0,     0,    14,    93,    83,    84,    86,    85,     0,     0,
-      23,    24,    25,    22,     0,    27,    28,    34,    38,   102,
-     103,   101,    94,    95,    96,    97,    98,    99,   100,    88,
-       0,    90,     0,     0,    87,     0,     0,     0,     0,     0,
-      60,    61,    64,    40,    41,    48,    62,    55,    49,     0,
-       0,     0,    54,    26,    19,    89,    93,     0,   104,   105,
-       0,     0,     0,     0,    52,     0,     0,     0,     0,     0,
-       0,     0,    50,    51,    53,    91,    57,     0,     0,     0,
-      76,     0,     0,     0,     0,     0,     0,     0,     0,     0,
-       0,     0,    63,    92,     0,     0,     0,    65,     0,     0,
-       0,     0,     0,     0,     0,    70,    57,     0,     0,     0,
-      45,    46,    47,     0,     0,    66,    77,    72,    73,    74,
-      75,    68,    69,     0,     0,     0,     0,     0,    58,     0,
-      71,    56,     0,     0,     0,     0,    67,     0,     0,    44,
-      59,    42,    43
+       0,     0,    14,    94,    84,    85,    87,    86,     0,     0,
+      23,    24,    25,    22,     0,    27,    28,    34,    38,   103,
+     104,   102,    95,    96,    97,    98,    99,   100,   101,    89,
+       0,    91,     0,     0,    88,     0,     0,     0,     0,     0,
+      61,    62,    65,    40,    41,    49,    63,    56,    50,     0,
+       0,     0,    55,    26,    19,    90,    94,     0,   105,   106,
+       0,     0,     0,     0,    53,     0,     0,     0,     0,     0,
+       0,     0,     0,    51,    52,    54,    92,    58,     0,     0,
+       0,    77,     0,     0,     0,     0,     0,     0,     0,     0,
+       0,     0,     0,     0,    64,    93,     0,     0,     0,    66,
+       0,     0,     0,     0,     0,     0,     0,    71,    58,     0,
+       0,     0,    46,    47,    48,     0,     0,     0,    67,    78,
+      73,    74,    75,    76,    69,    70,     0,     0,     0,     0,
+       0,    43,    59,     0,    72,    57,     0,     0,     0,     0,
+      68,     0,     0,    45,    60,    42,    44
 };
 
-/* YYDEFGOTO[NTERM-NUM].  */
+  /* YYPGOTO[NTERM-NUM].  */
+static const yytype_int16 yypgoto[] =
+{
+    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,
+    -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,  -130,    91,
+    -130,    14,  -130,    13,    54,    87,  -130,  -130,  -130,  -130,
+    -130,  -129,  -130,  -130,  -130,  -130,  -130,  -130,   103,    72,
+    -130,  -130,    80,  -130,  -130,  -130
+};
+
+  /* YYDEFGOTO[NTERM-NUM].  */
 static const yytype_int16 yydefgoto[] =
 {
       -1,     1,    18,    19,    20,    54,    83,    84,   124,    21,
       22,    23,    24,    25,    26,    27,    70,    28,    29,    52,
-     113,   114,   115,   163,   116,   117,   118,   119,   120,   121,
-     122,   151,    30,    31,    32,    33,    34,    35,    74,   100,
+     113,   114,   115,   165,   116,   117,   118,   119,   120,   121,
+     122,   152,    30,    31,    32,    33,    34,    35,    74,   100,
      101,   102,   104,    36,    37,    38
 };
 
-/* YYPACT[STATE-NUM] -- Index in YYTABLE of the portion describing
-   STATE-NUM.  */
-#define YYPACT_NINF -106
-static const yytype_int16 yypact[] =
-{
-    -106,     2,  -106,    -5,   -31,   -16,    27,    28,    30,    33,
-    -106,  -106,    35,    49,    71,    72,    89,  -106,  -106,     6,
-    -106,    60,    67,   107,   109,   110,   111,   112,   113,   114,
-     115,  -106,  -106,  -106,  -106,  -106,    56,     9,    51,  -106,
-    -106,   116,   117,   117,   117,   117,   117,  -106,  -106,  -106,
-    -106,   118,  -106,  -106,   -10,  -106,  -106,  -106,  -106,  -106,
-    -106,  -106,  -106,  -106,  -106,    98,    99,  -106,  -106,  -106,
-      95,   100,  -106,    48,  -106,  -106,  -106,  -106,   121,    47,
-    -106,  -106,  -106,  -106,   105,  -106,  -106,  -106,  -106,  -106,
-    -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,
-     120,   124,   106,   119,  -106,   122,   123,   126,    -7,    47,
-    -106,  -106,  -106,   101,  -106,  -106,   125,  -106,  -106,    47,
-      47,    47,  -106,  -106,  -106,  -106,    88,   121,   118,  -106,
-     -13,   -45,   -12,   127,  -106,   130,   131,   132,   133,   134,
-     135,    -7,  -106,  -106,  -106,  -106,  -106,   -29,   -45,   146,
-    -106,    -6,    10,   142,    36,   -45,   128,   129,   136,   137,
-     138,   139,  -106,   141,   -45,   152,    82,  -106,   -45,   -45,
-     -45,   -45,   153,   154,   -45,  -106,    97,   140,   143,   144,
-    -106,  -106,  -106,   145,    74,  -106,  -106,    39,    39,  -106,
-    -106,  -106,  -106,    78,    41,   147,   148,   150,   151,   155,
-    -106,  -106,   156,   157,   158,   149,  -106,   159,   160,  -106,
-    -106,  -106,  -106
-};
-
-/* YYPGOTO[NTERM-NUM].  */
-static const yytype_int8 yypgoto[] =
-{
-    -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,
-    -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,  -106,    91,
-    -106,   -15,  -106,    16,    54,    96,  -106,  -106,  -106,  -106,
-    -106,  -105,  -106,  -106,  -106,  -106,  -106,  -106,   103,    77,
-    -106,  -106,    86,  -106,  -106,  -106
-};
-
-/* YYTABLE[YYPACT[STATE-NUM]].  What to do in state STATE-NUM.  If
-   positive, shift that token.  If negative, reduce the rule which
-   number is the opposite.  If YYTABLE_NINF, syntax error.  */
-#define YYTABLE_NINF -109
+  /* YYTABLE[YYPACT[STATE-NUM]] -- What to do in state STATE-NUM.  If
+     positive, shift that token.  If negative, reduce the rule whose
+     number is the opposite.  If YYTABLE_NINF, syntax error.  */
 static const yytype_int16 yytable[] =
 {
-      80,    81,     2,     3,   148,     4,     5,     6,     7,     8,
-       9,    10,    40,   164,  -106,   150,  -106,    11,    12,    13,
-      14,    15,  -108,  -107,  -107,  -107,   152,   154,   165,    41,
-      67,    68,    69,    16,   147,   153,   148,   148,    39,   168,
-     169,   170,   171,   166,   149,    17,    42,   150,   150,    53,
-     176,   172,    82,   110,   111,   168,   169,   170,   171,   184,
-      89,    90,    91,   187,   188,   189,   190,   173,    65,   193,
-      66,    71,    92,    93,    94,    95,    96,    97,    98,   105,
-     106,   168,   169,   170,   171,   183,   170,   171,   107,    43,
-      44,   201,    45,   175,   134,    46,   108,    47,    99,   109,
-      89,    90,    91,    55,   142,   143,   144,   110,   111,   112,
-      56,    48,    92,    93,    94,    95,    96,    97,    98,   168,
-     169,   170,   171,   168,   169,   170,   171,   168,   169,   170,
-     171,   199,   186,    49,    50,   200,   135,   136,   137,   138,
-     139,   140,   168,   169,   170,   171,    75,    76,    77,    78,
-      57,    51,    58,    59,    60,    61,    62,    63,    64,    72,
-      87,    85,    86,   103,    88,   123,    73,   126,   127,    79,
-     125,   155,   156,   157,   158,   159,   160,   161,   130,   131,
-     167,   128,   132,   141,   174,   183,   185,   191,   192,   206,
-     177,   178,   194,   197,   129,   162,   202,   203,   179,   180,
-     181,   182,   195,   145,   133,   196,   210,   205,   209,   211,
-     212,   198,   204,   146,     0,     0,     0,     0,   207,   208
+      80,    81,   153,   155,   135,   136,   137,   138,   139,   140,
+     166,   110,   111,   148,    39,   149,    89,    90,    91,    42,
+     168,    40,   154,   150,   149,   167,   151,   178,    92,    93,
+      94,    95,    96,    97,    98,   151,   141,   187,    41,   186,
+      53,   190,   191,   192,   193,   205,    65,   196,    66,   149,
+       2,     3,    82,     4,     5,     6,     7,     8,     9,    10,
+     151,    43,  -107,    44,  -107,    11,    12,    13,    14,    15,
+    -109,  -108,  -108,  -108,    89,    90,    91,   170,   171,   172,
+     173,    16,   170,   171,   172,   173,    92,    93,    94,    95,
+      96,    97,    98,    17,   174,    45,   105,   106,   170,   171,
+     172,   173,    67,    68,    69,   107,   170,   171,   172,   173,
+     175,    46,    99,   108,   172,   173,   109,    47,   177,   170,
+     171,   172,   173,   134,   110,   111,   112,   170,   171,   172,
+     173,   203,    48,   143,   144,   145,    55,    49,    50,   204,
+     170,   171,   172,   173,    56,   189,    75,    76,    77,    78,
+      51,    57,    58,    59,    60,    61,    62,    63,    64,    71,
+      72,    85,    86,   103,    88,    73,   123,    87,   126,    79,
+     125,   157,   156,   158,   159,   160,   161,   162,   163,   130,
+     131,   127,   132,   169,   128,   142,   176,   188,   194,   186,
+     195,   197,   179,   210,   129,   133,   164,   200,   146,   180,
+     181,   206,   182,   183,   184,   185,   207,   147,   198,   199,
+       0,   209,   201,   213,   215,   216,     0,   202,     0,   214,
+     208,     0,   211,   212
 };
 
-#define yypact_value_is_default(Yystate) \
-  (!!((Yystate) == (-106)))
-
-#define yytable_value_is_error(Yytable_value) \
-  YYID (0)
-
 static const yytype_int16 yycheck[] =
 {
-      10,    11,     0,     1,    49,     3,     4,     5,     6,     7,
-       8,     9,    43,    42,    12,    60,    14,    15,    16,    17,
-      18,    19,    20,    21,    22,    23,   131,   132,    57,    60,
-      21,    22,    23,    31,    47,    47,    49,    49,    43,    45,
-      46,    47,    48,   148,    57,    43,    62,    60,    60,    43,
-     155,    57,    62,    60,    61,    45,    46,    47,    48,   164,
-      12,    13,    14,   168,   169,   170,   171,    57,    12,   174,
-      14,    20,    24,    25,    26,    27,    28,    29,    30,    32,
-      33,    45,    46,    47,    48,    44,    47,    48,    41,    62,
-      62,    50,    62,    57,   109,    62,    49,    62,    50,    52,
-      12,    13,    14,    43,   119,   120,   121,    60,    61,    62,
-      43,    62,    24,    25,    26,    27,    28,    29,    30,    45,
-      46,    47,    48,    45,    46,    47,    48,    45,    46,    47,
-      48,    57,    50,    62,    62,    57,    35,    36,    37,    38,
-      39,    40,    45,    46,    47,    48,    43,    44,    45,    46,
-      43,    62,    43,    43,    43,    43,    43,    43,    43,    43,
-      65,    63,    63,    42,    64,    60,    49,    43,    62,    51,
-      50,    44,    42,    42,    42,    42,    42,    42,    56,    56,
-      34,    62,    56,    58,    42,    44,    34,    34,    34,    34,
-      62,    62,   176,    49,   103,   141,    49,    49,    62,    62,
-      62,    62,    62,   126,   108,    62,    57,    56,    50,    50,
-      50,    66,    62,   127,    -1,    -1,    -1,    -1,    62,    62
+      10,    11,   131,   132,    35,    36,    37,    38,    39,    40,
+      42,    60,    61,    47,    43,    49,    12,    13,    14,    62,
+     149,    43,    47,    57,    49,    57,    60,   156,    24,    25,
+      26,    27,    28,    29,    30,    60,    67,   166,    60,    44,
+      43,   170,   171,   172,   173,    50,    12,   176,    14,    49,
+       0,     1,    62,     3,     4,     5,     6,     7,     8,     9,
+      60,    62,    12,    62,    14,    15,    16,    17,    18,    19,
+      20,    21,    22,    23,    12,    13,    14,    45,    46,    47,
+      48,    31,    45,    46,    47,    48,    24,    25,    26,    27,
+      28,    29,    30,    43,    57,    62,    32,    33,    45,    46,
+      47,    48,    21,    22,    23,    41,    45,    46,    47,    48,
+      57,    62,    50,    49,    47,    48,    52,    62,    57,    45,
+      46,    47,    48,   109,    60,    61,    62,    45,    46,    47,
+      48,    57,    62,   119,   120,   121,    43,    62,    62,    57,
+      45,    46,    47,    48,    43,    50,    43,    44,    45,    46,
+      62,    43,    43,    43,    43,    43,    43,    43,    43,    20,
+      43,    63,    63,    42,    64,    49,    60,    65,    43,    51,
+      50,    42,    44,    42,    42,    42,    42,    42,    42,    56,
+      56,    62,    56,    34,    62,    58,    42,    34,    34,    44,
+      34,   178,    62,    34,   103,   108,   142,    49,   126,    62,
+      62,    49,    62,    62,    62,    62,    49,   127,    62,    62,
+      -1,    56,    62,    50,    50,    50,    -1,    66,    -1,    57,
+      62,    -1,    62,    62
 };
 
-/* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
-   symbol of state STATE-NUM.  */
+  /* YYSTOS[STATE-NUM] -- The (internal number of the) accessing
+     symbol of state STATE-NUM.  */
 static const yytype_uint8 yystos[] =
 {
-       0,    68,     0,     1,     3,     4,     5,     6,     7,     8,
-       9,    15,    16,    17,    18,    19,    31,    43,    69,    70,
-      71,    76,    77,    78,    79,    80,    81,    82,    84,    85,
-      99,   100,   101,   102,   103,   104,   110,   111,   112,    43,
+       0,    69,     0,     1,     3,     4,     5,     6,     7,     8,
+       9,    15,    16,    17,    18,    19,    31,    43,    70,    71,
+      72,    77,    78,    79,    80,    81,    82,    83,    85,    86,
+     100,   101,   102,   103,   104,   105,   111,   112,   113,    43,
       43,    60,    62,    62,    62,    62,    62,    62,    62,    62,
-      62,    62,    86,    43,    72,    43,    43,    43,    43,    43,
+      62,    62,    87,    43,    73,    43,    43,    43,    43,    43,
       43,    43,    43,    43,    43,    12,    14,    21,    22,    23,
-      83,    20,    43,    49,   105,   105,   105,   105,   105,    51,
-      10,    11,    62,    73,    74,    63,    63,    65,    64,    12,
+      84,    20,    43,    49,   106,   106,   106,   106,   106,    51,
+      10,    11,    62,    74,    75,    63,    63,    65,    64,    12,
       13,    14,    24,    25,    26,    27,    28,    29,    30,    50,
-     106,   107,   108,    42,   109,    32,    33,    41,    49,    52,
-      60,    61,    62,    87,    88,    89,    91,    92,    93,    94,
-      95,    96,    97,    60,    75,    50,    43,    62,    62,    86,
-      56,    56,    56,    92,    88,    35,    36,    37,    38,    39,
-      40,    58,    88,    88,    88,   106,   109,    47,    49,    57,
-      60,    98,    98,    47,    98,    44,    42,    42,    42,    42,
-      42,    42,    91,    90,    42,    57,    98,    34,    45,    46,
-      47,    48,    57,    57,    42,    57,    98,    62,    62,    62,
-      62,    62,    62,    44,    98,    34,    50,    98,    98,    98,
-      98,    34,    34,    98,    90,    62,    62,    49,    66,    57,
-      57,    50,    49,    49,    62,    56,    34,    62,    62,    50,
-      57,    50,    50
+     107,   108,   109,    42,   110,    32,    33,    41,    49,    52,
+      60,    61,    62,    88,    89,    90,    92,    93,    94,    95,
+      96,    97,    98,    60,    76,    50,    43,    62,    62,    87,
+      56,    56,    56,    93,    89,    35,    36,    37,    38,    39,
+      40,    67,    58,    89,    89,    89,   107,   110,    47,    49,
+      57,    60,    99,    99,    47,    99,    44,    42,    42,    42,
+      42,    42,    42,    42,    92,    91,    42,    57,    99,    34,
+      45,    46,    47,    48,    57,    57,    42,    57,    99,    62,
+      62,    62,    62,    62,    62,    62,    44,    99,    34,    50,
+      99,    99,    99,    99,    34,    34,    99,    91,    62,    62,
+      49,    62,    66,    57,    57,    50,    49,    49,    62,    56,
+      34,    62,    62,    50,    57,    50,    50
 };
 
-#define yyerrok                (yyerrstatus = 0)
-#define yyclearin      (yychar = YYEMPTY)
-#define YYEMPTY                (-2)
-#define YYEOF          0
-
-#define YYACCEPT       goto yyacceptlab
-#define YYABORT                goto yyabortlab
-#define YYERROR                goto yyerrorlab
-
-
-/* Like YYERROR except do call yyerror.  This remains here temporarily
-   to ease the transition to the new meaning of YYERROR, for GCC.
-   Once GCC version 2 has supplanted version 1, this can go.  However,
-   YYFAIL appears to be in use.  Nevertheless, it is formally deprecated
-   in Bison 2.4.2's NEWS entry, where a plan to phase it out is
-   discussed.  */
-
-#define YYFAIL         goto yyerrlab
-#if defined YYFAIL
-  /* This is here to suppress warnings from the GCC cpp's
-     -Wunused-macros.  Normally we don't worry about that warning, but
-     some users do, and we want to make it easy for users to remove
-     YYFAIL uses, which will produce warnings from Bison 2.5.  */
-#endif
+  /* YYR1[YYN] -- Symbol number of symbol that rule YYN derives.  */
+static const yytype_uint8 yyr1[] =
+{
+       0,    68,    69,    69,    70,    70,    70,    70,    70,    70,
+      70,    70,    70,    70,    70,    70,    70,    70,    70,    71,
+      72,    73,    73,    74,    74,    75,    76,    77,    78,    78,
+      79,    80,    81,    82,    83,    84,    84,    84,    85,    86,
+      87,    88,    88,    88,    88,    88,    88,    88,    88,    89,
+      89,    89,    89,    89,    89,    89,    90,    90,    91,    91,
+      91,    92,    92,    93,    93,    94,    95,    95,    95,    96,
+      97,    98,    98,    99,    99,    99,    99,    99,    99,   100,
+     100,   100,   100,   100,   101,   102,   103,   104,   105,   106,
+     106,   107,   107,   108,   109,   109,   109,   109,   109,   109,
+     109,   109,   109,   109,   109,   110,   110,   111,   112,   113
+};
+
+  /* YYR2[YYN] -- Number of symbols on the right hand side of rule YYN.  */
+static const yytype_uint8 yyr2[] =
+{
+       0,     2,     0,     2,     2,     2,     2,     2,     2,     2,
+       2,     2,     2,     2,     3,     2,     2,     1,     2,     4,
+       1,     0,     2,     1,     1,     1,     1,     3,     3,     1,
+       2,     2,     2,     2,     3,     1,     1,     1,     3,     2,
+       3,     1,     8,     5,     8,     7,     4,     4,     4,     1,
+       1,     2,     2,     2,     2,     1,     1,     6,     0,     3,
+       5,     1,     1,     1,     3,     1,     4,     5,     7,     5,
+       5,     4,     6,     3,     3,     3,     3,     1,     3,     1,
+       1,     1,     1,     1,     3,     3,     3,     3,     4,     2,
+       3,     1,     3,     4,     0,     1,     1,     1,     1,     1,
+       1,     1,     1,     1,     1,     2,     2,     0,     0,     0
+};
+
+
+#define yyerrok         (yyerrstatus = 0)
+#define yyclearin       (yychar = YYEMPTY)
+#define YYEMPTY         (-2)
+#define YYEOF           0
+
+#define YYACCEPT        goto yyacceptlab
+#define YYABORT         goto yyabortlab
+#define YYERROR         goto yyerrorlab
+
 
 #define YYRECOVERING()  (!!yyerrstatus)
 
@@ -953,27 +883,15 @@ do                                                        
      \
   else                                                          \
     {                                                           \
       yyerror (YY_("syntax error: cannot back up")); \
-      YYERROR;                                                 \
-    }                                                          \
-while (YYID (0))
+      YYERROR;                                                  \
+    }                                                           \
+while (0)
 
 /* Error token number */
-#define YYTERROR       1
-#define YYERRCODE      256
-
-
-/* This macro is provided for backward compatibility. */
-#ifndef YY_LOCATION_PRINT
-# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
-#endif
+#define YYTERROR        1
+#define YYERRCODE       256
 
 
-/* YYLEX -- calling `yylex' with the right arguments.  */
-#ifdef YYLEX_PARAM
-# define YYLEX yylex (YYLEX_PARAM)
-#else
-# define YYLEX yylex ()
-#endif
 
 /* Enable debugging if requested.  */
 #if YYDEBUG
@@ -983,40 +901,36 @@ while (YYID (0))
 #  define YYFPRINTF fprintf
 # endif
 
-# define YYDPRINTF(Args)                       \
-do {                                           \
-  if (yydebug)                                 \
-    YYFPRINTF Args;                            \
-} while (YYID (0))
+# define YYDPRINTF(Args)                        \
+do {                                            \
+  if (yydebug)                                  \
+    YYFPRINTF Args;                             \
+} while (0)
 
-# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                   \
-do {                                                                     \
-  if (yydebug)                                                           \
-    {                                                                    \
-      YYFPRINTF (stderr, "%s ", Title);                                        
  \
-      yy_symbol_print (stderr,                                           \
-                 Type, Value); \
-      YYFPRINTF (stderr, "\n");                                                
  \
-    }                                                                    \
-} while (YYID (0))
+/* This macro is provided for backward compatibility. */
+#ifndef YY_LOCATION_PRINT
+# define YY_LOCATION_PRINT(File, Loc) ((void) 0)
+#endif
 
 
-/*--------------------------------.
-| Print this symbol on YYOUTPUT.  |
-`--------------------------------*/
+# define YY_SYMBOL_PRINT(Title, Type, Value, Location)                    \
+do {                                                                      \
+  if (yydebug)                                                            \
+    {                                                                     \
+      YYFPRINTF (stderr, "%s ", Title);                                   \
+      yy_symbol_print (stderr,                                            \
+                  Type, Value); \
+      YYFPRINTF (stderr, "\n");                                           \
+    }                                                                     \
+} while (0)
+
+
+/*----------------------------------------.
+| Print this symbol's value on YYOUTPUT.  |
+`----------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_value_print (FILE *yyoutput, int yytype, YYSTYPE const * const 
yyvaluep)
-#else
-static void
-yy_symbol_value_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
   FILE *yyo = yyoutput;
   YYUSE (yyo);
@@ -1025,8 +939,6 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
 # ifdef YYPRINT
   if (yytype < YYNTOKENS)
     YYPRINT (yyoutput, yytoknum[yytype], *yyvaluep);
-# else
-  YYUSE (yyoutput);
 # endif
   YYUSE (yytype);
 }
@@ -1036,22 +948,11 @@ yy_symbol_value_print (yyoutput, yytype, yyvaluep)
 | Print this symbol on YYOUTPUT.  |
 `--------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_symbol_print (FILE *yyoutput, int yytype, YYSTYPE const * const yyvaluep)
-#else
-static void
-yy_symbol_print (yyoutput, yytype, yyvaluep)
-    FILE *yyoutput;
-    int yytype;
-    YYSTYPE const * const yyvaluep;
-#endif
 {
-  if (yytype < YYNTOKENS)
-    YYFPRINTF (yyoutput, "token %s (", yytname[yytype]);
-  else
-    YYFPRINTF (yyoutput, "nterm %s (", yytname[yytype]);
+  YYFPRINTF (yyoutput, "%s %s (",
+             yytype < YYNTOKENS ? "token" : "nterm", yytname[yytype]);
 
   yy_symbol_value_print (yyoutput, yytype, yyvaluep);
   YYFPRINTF (yyoutput, ")");
@@ -1062,16 +963,8 @@ yy_symbol_print (yyoutput, yytype, yyvaluep)
 | TOP (included).                                                   |
 `------------------------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yy_stack_print (yytype_int16 *yybottom, yytype_int16 *yytop)
-#else
-static void
-yy_stack_print (yybottom, yytop)
-    yytype_int16 *yybottom;
-    yytype_int16 *yytop;
-#endif
 {
   YYFPRINTF (stderr, "Stack now");
   for (; yybottom <= yytop; yybottom++)
@@ -1082,49 +975,42 @@ yy_stack_print (yybottom, yytop)
   YYFPRINTF (stderr, "\n");
 }
 
-# define YY_STACK_PRINT(Bottom, Top)                           \
-do {                                                           \
-  if (yydebug)                                                 \
-    yy_stack_print ((Bottom), (Top));                          \
-} while (YYID (0))
+# define YY_STACK_PRINT(Bottom, Top)                            \
+do {                                                            \
+  if (yydebug)                                                  \
+    yy_stack_print ((Bottom), (Top));                           \
+} while (0)
 
 
 /*------------------------------------------------.
 | Report that the YYRULE is going to be reduced.  |
 `------------------------------------------------*/
 
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
-yy_reduce_print (YYSTYPE *yyvsp, int yyrule)
-#else
-static void
-yy_reduce_print (yyvsp, yyrule)
-    YYSTYPE *yyvsp;
-    int yyrule;
-#endif
+yy_reduce_print (yytype_int16 *yyssp, YYSTYPE *yyvsp, int yyrule)
 {
+  unsigned long int yylno = yyrline[yyrule];
   int yynrhs = yyr2[yyrule];
   int yyi;
-  unsigned long int yylno = yyrline[yyrule];
   YYFPRINTF (stderr, "Reducing stack by rule %d (line %lu):\n",
-            yyrule - 1, yylno);
+             yyrule - 1, yylno);
   /* The symbols being reduced.  */
   for (yyi = 0; yyi < yynrhs; yyi++)
     {
       YYFPRINTF (stderr, "   $%d = ", yyi + 1);
-      yy_symbol_print (stderr, yyrhs[yyprhs[yyrule] + yyi],
-                      &(yyvsp[(yyi + 1) - (yynrhs)])
-                                      );
+      yy_symbol_print (stderr,
+                       yystos[yyssp[yyi + 1 - yynrhs]],
+                       &(yyvsp[(yyi + 1) - (yynrhs)])
+                                              );
       YYFPRINTF (stderr, "\n");
     }
 }
 
-# define YY_REDUCE_PRINT(Rule)         \
-do {                                   \
-  if (yydebug)                         \
-    yy_reduce_print (yyvsp, Rule); \
-} while (YYID (0))
+# define YY_REDUCE_PRINT(Rule)          \
+do {                                    \
+  if (yydebug)                          \
+    yy_reduce_print (yyssp, yyvsp, Rule); \
+} while (0)
 
 /* Nonzero means print parse trace.  It is left uninitialized so that
    multiple parsers can coexist.  */
@@ -1138,7 +1024,7 @@ int yydebug;
 
 
 /* YYINITDEPTH -- initial size of the parser's stacks.  */
-#ifndef        YYINITDEPTH
+#ifndef YYINITDEPTH
 # define YYINITDEPTH 200
 #endif
 
@@ -1161,15 +1047,8 @@ int yydebug;
 #   define yystrlen strlen
 #  else
 /* Return the length of YYSTR.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static YYSIZE_T
 yystrlen (const char *yystr)
-#else
-static YYSIZE_T
-yystrlen (yystr)
-    const char *yystr;
-#endif
 {
   YYSIZE_T yylen;
   for (yylen = 0; yystr[yylen]; yylen++)
@@ -1185,16 +1064,8 @@ yystrlen (yystr)
 #  else
 /* Copy YYSRC to YYDEST, returning the address of the terminating '\0' in
    YYDEST.  */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static char *
 yystpcpy (char *yydest, const char *yysrc)
-#else
-static char *
-yystpcpy (yydest, yysrc)
-    char *yydest;
-    const char *yysrc;
-#endif
 {
   char *yyd = yydest;
   const char *yys = yysrc;
@@ -1224,27 +1095,27 @@ yytnamerr (char *yyres, const char *yystr)
       char const *yyp = yystr;
 
       for (;;)
-       switch (*++yyp)
-         {
-         case '\'':
-         case ',':
-           goto do_not_strip_quotes;
-
-         case '\\':
-           if (*++yyp != '\\')
-             goto do_not_strip_quotes;
-           /* Fall through.  */
-         default:
-           if (yyres)
-             yyres[yyn] = *yyp;
-           yyn++;
-           break;
-
-         case '"':
-           if (yyres)
-             yyres[yyn] = '\0';
-           return yyn;
-         }
+        switch (*++yyp)
+          {
+          case '\'':
+          case ',':
+            goto do_not_strip_quotes;
+
+          case '\\':
+            if (*++yyp != '\\')
+              goto do_not_strip_quotes;
+            /* Fall through.  */
+          default:
+            if (yyres)
+              yyres[yyn] = *yyp;
+            yyn++;
+            break;
+
+          case '"':
+            if (yyres)
+              yyres[yyn] = '\0';
+            return yyn;
+          }
     do_not_strip_quotes: ;
     }
 
@@ -1267,11 +1138,11 @@ static int
 yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                 yytype_int16 *yyssp, int yytoken)
 {
-  YYSIZE_T yysize0 = yytnamerr (YY_NULL, yytname[yytoken]);
+  YYSIZE_T yysize0 = yytnamerr (YY_NULLPTR, yytname[yytoken]);
   YYSIZE_T yysize = yysize0;
   enum { YYERROR_VERBOSE_ARGS_MAXIMUM = 5 };
   /* Internationalized format string. */
-  const char *yyformat = YY_NULL;
+  const char *yyformat = YY_NULLPTR;
   /* Arguments of yyformat. */
   char const *yyarg[YYERROR_VERBOSE_ARGS_MAXIMUM];
   /* Number of reported tokens (one for the "unexpected", one per
@@ -1279,10 +1150,6 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
   int yycount = 0;
 
   /* There are many possibilities here to consider:
-     - Assume YYFAIL is not used.  It's too flawed to consider.  See
-       <http://lists.gnu.org/archive/html/bison-patches/2009-12/msg00024.html>
-       for details.  YYERROR is fine as it does not invoke this
-       function.
      - If this state is a consistent state with a default action, then
        the only way this function was invoked is if the default action
        is an error action.  In that case, don't check for expected
@@ -1332,7 +1199,7 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
                   }
                 yyarg[yycount++] = yytname[yyx];
                 {
-                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULL, 
yytname[yyx]);
+                  YYSIZE_T yysize1 = yysize + yytnamerr (YY_NULLPTR, 
yytname[yyx]);
                   if (! (yysize <= yysize1
                          && yysize1 <= YYSTACK_ALLOC_MAXIMUM))
                     return 2;
@@ -1399,26 +1266,17 @@ yysyntax_error (YYSIZE_T *yymsg_alloc, char **yymsg,
 | Release the memory associated to this symbol.  |
 `-----------------------------------------------*/
 
-/*ARGSUSED*/
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 static void
 yydestruct (const char *yymsg, int yytype, YYSTYPE *yyvaluep)
-#else
-static void
-yydestruct (yymsg, yytype, yyvaluep)
-    const char *yymsg;
-    int yytype;
-    YYSTYPE *yyvaluep;
-#endif
 {
   YYUSE (yyvaluep);
-
   if (!yymsg)
     yymsg = "Deleting";
   YY_SYMBOL_PRINT (yymsg, yytype, yyvaluep, yylocationp);
 
+  YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
   YYUSE (yytype);
+  YY_IGNORE_MAYBE_UNINITIALIZED_END
 }
 
 
@@ -1427,18 +1285,8 @@ yydestruct (yymsg, yytype, yyvaluep)
 /* The lookahead symbol.  */
 int yychar;
 
-
-#ifndef YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_BEGIN
-# define YY_IGNORE_MAYBE_UNINITIALIZED_END
-#endif
-#ifndef YY_INITIAL_VALUE
-# define YY_INITIAL_VALUE(Value) /* Nothing. */
-#endif
-
 /* The semantic value of the lookahead symbol.  */
-YYSTYPE yylval YY_INITIAL_VALUE(yyval_default);
-
+YYSTYPE yylval;
 /* Number of syntax errors so far.  */
 int yynerrs;
 
@@ -1447,35 +1295,16 @@ int yynerrs;
 | yyparse.  |
 `----------*/
 
-#ifdef YYPARSE_PARAM
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
-int
-yyparse (void *YYPARSE_PARAM)
-#else
-int
-yyparse (YYPARSE_PARAM)
-    void *YYPARSE_PARAM;
-#endif
-#else /* ! YYPARSE_PARAM */
-#if (defined __STDC__ || defined __C99__FUNC__ \
-     || defined __cplusplus || defined _MSC_VER)
 int
 yyparse (void)
-#else
-int
-yyparse ()
-
-#endif
-#endif
 {
     int yystate;
     /* Number of tokens to shift before error messages enabled.  */
     int yyerrstatus;
 
     /* The stacks and their tools:
-       `yyss': related to states.
-       `yyvs': related to semantic values.
+       'yyss': related to states.
+       'yyvs': related to semantic values.
 
        Refer to the stacks through separate pointers, to allow yyoverflow
        to reallocate them elsewhere.  */
@@ -1543,23 +1372,23 @@ yyparse ()
 
 #ifdef yyoverflow
       {
-       /* Give user a chance to reallocate the stack.  Use copies of
-          these so that the &'s don't force the real ones into
-          memory.  */
-       YYSTYPE *yyvs1 = yyvs;
-       yytype_int16 *yyss1 = yyss;
-
-       /* Each stack pointer address is followed by the size of the
-          data in use in that stack, in bytes.  This used to be a
-          conditional around just the two extra args, but that might
-          be undefined if yyoverflow is a macro.  */
-       yyoverflow (YY_("memory exhausted"),
-                   &yyss1, yysize * sizeof (*yyssp),
-                   &yyvs1, yysize * sizeof (*yyvsp),
-                   &yystacksize);
-
-       yyss = yyss1;
-       yyvs = yyvs1;
+        /* Give user a chance to reallocate the stack.  Use copies of
+           these so that the &'s don't force the real ones into
+           memory.  */
+        YYSTYPE *yyvs1 = yyvs;
+        yytype_int16 *yyss1 = yyss;
+
+        /* Each stack pointer address is followed by the size of the
+           data in use in that stack, in bytes.  This used to be a
+           conditional around just the two extra args, but that might
+           be undefined if yyoverflow is a macro.  */
+        yyoverflow (YY_("memory exhausted"),
+                    &yyss1, yysize * sizeof (*yyssp),
+                    &yyvs1, yysize * sizeof (*yyvsp),
+                    &yystacksize);
+
+        yyss = yyss1;
+        yyvs = yyvs1;
       }
 #else /* no yyoverflow */
 # ifndef YYSTACK_RELOCATE
@@ -1567,22 +1396,22 @@ yyparse ()
 # else
       /* Extend the stack our own way.  */
       if (YYMAXDEPTH <= yystacksize)
-       goto yyexhaustedlab;
+        goto yyexhaustedlab;
       yystacksize *= 2;
       if (YYMAXDEPTH < yystacksize)
-       yystacksize = YYMAXDEPTH;
+        yystacksize = YYMAXDEPTH;
 
       {
-       yytype_int16 *yyss1 = yyss;
-       union yyalloc *yyptr =
-         (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
-       if (! yyptr)
-         goto yyexhaustedlab;
-       YYSTACK_RELOCATE (yyss_alloc, yyss);
-       YYSTACK_RELOCATE (yyvs_alloc, yyvs);
+        yytype_int16 *yyss1 = yyss;
+        union yyalloc *yyptr =
+          (union yyalloc *) YYSTACK_ALLOC (YYSTACK_BYTES (yystacksize));
+        if (! yyptr)
+          goto yyexhaustedlab;
+        YYSTACK_RELOCATE (yyss_alloc, yyss);
+        YYSTACK_RELOCATE (yyvs_alloc, yyvs);
 #  undef YYSTACK_RELOCATE
-       if (yyss1 != yyssa)
-         YYSTACK_FREE (yyss1);
+        if (yyss1 != yyssa)
+          YYSTACK_FREE (yyss1);
       }
 # endif
 #endif /* no yyoverflow */
@@ -1591,10 +1420,10 @@ yyparse ()
       yyvsp = yyvs + yysize - 1;
 
       YYDPRINTF ((stderr, "Stack size increased to %lu\n",
-                 (unsigned long int) yystacksize));
+                  (unsigned long int) yystacksize));
 
       if (yyss + yystacksize - 1 <= yyssp)
-       YYABORT;
+        YYABORT;
     }
 
   YYDPRINTF ((stderr, "Entering state %d\n", yystate));
@@ -1623,7 +1452,7 @@ yybackup:
   if (yychar == YYEMPTY)
     {
       YYDPRINTF ((stderr, "Reading a token: "));
-      yychar = YYLEX;
+      yychar = yylex ();
     }
 
   if (yychar <= YYEOF)
@@ -1688,7 +1517,7 @@ yyreduce:
   yylen = yyr2[yyn];
 
   /* If YYLEN is nonzero, implement the default value of the action:
-     `$$ = $1'.
+     '$$ = $1'.
 
      Otherwise, the following line sets YYVAL to garbage.
      This behavior is undocumented and Bison
@@ -1702,40 +1531,39 @@ yyreduce:
   switch (yyn)
     {
         case 12:
-/* Line 1787 of yacc.c  */
-#line 174 "../parser.y"
+#line 176 "../release/parser.y" /* yacc.c:1646  */
     {
     statement_t *st = stAlloc();
 
     st->stKind = skRoutine;
-    st->stRoutine = (yyvsp[(1) - (2)].routine);
-    rtCheckRoutine((yyvsp[(1) - (2)].routine));
+    st->stRoutine = (yyvsp[-1].routine);
+    rtCheckRoutine((yyvsp[-1].routine));
     if (BeVerbose)
-       rtPrintRoutine((yyvsp[(1) - (2)].routine));
+       rtPrintRoutine((yyvsp[-1].routine));
 }
+#line 1545 "parser.c" /* yacc.c:1646  */
     break;
 
   case 13:
-/* Line 1787 of yacc.c  */
-#line 184 "../parser.y"
+#line 186 "../release/parser.y" /* yacc.c:1646  */
     { rtSkip(1); }
+#line 1551 "parser.c" /* yacc.c:1646  */
     break;
 
   case 14:
-/* Line 1787 of yacc.c  */
-#line 186 "../parser.y"
-    { rtSkip((yyvsp[(2) - (3)].number)); }
+#line 188 "../release/parser.y" /* yacc.c:1646  */
+    { rtSkip((yyvsp[-1].number)); }
+#line 1557 "parser.c" /* yacc.c:1646  */
     break;
 
   case 18:
-/* Line 1787 of yacc.c  */
-#line 191 "../parser.y"
+#line 193 "../release/parser.y" /* yacc.c:1646  */
     { yyerrok; }
+#line 1563 "parser.c" /* yacc.c:1646  */
     break;
 
   case 19:
-/* Line 1787 of yacc.c  */
-#line 196 "../parser.y"
+#line 198 "../release/parser.y" /* yacc.c:1646  */
     {
     if (BeVerbose)
     {
@@ -1745,11 +1573,11 @@ yyreduce:
               IsKernelServer ? ", KernelServer" : "");
     }
 }
+#line 1577 "parser.c" /* yacc.c:1646  */
     break;
 
   case 20:
-/* Line 1787 of yacc.c  */
-#line 208 "../parser.y"
+#line 210 "../release/parser.y" /* yacc.c:1646  */
     {
     if (SubsystemName != strNULL)
     {
@@ -1759,45 +1587,45 @@ yyreduce:
        strfree((string_t) SubsystemName);
     }
 }
+#line 1591 "parser.c" /* yacc.c:1646  */
     break;
 
   case 23:
-/* Line 1787 of yacc.c  */
-#line 224 "../parser.y"
+#line 226 "../release/parser.y" /* yacc.c:1646  */
     {
     if (IsKernelUser)
        warn("duplicate KernelUser keyword");
     IsKernelUser = TRUE;
 }
+#line 1601 "parser.c" /* yacc.c:1646  */
     break;
 
   case 24:
-/* Line 1787 of yacc.c  */
-#line 230 "../parser.y"
+#line 232 "../release/parser.y" /* yacc.c:1646  */
     {
     if (IsKernelServer)
        warn("duplicate KernelServer keyword");
     IsKernelServer = TRUE;
 }
+#line 1611 "parser.c" /* yacc.c:1646  */
     break;
 
   case 25:
-/* Line 1787 of yacc.c  */
-#line 237 "../parser.y"
-    { SubsystemName = (yyvsp[(1) - (1)].identifier); }
+#line 239 "../release/parser.y" /* yacc.c:1646  */
+    { SubsystemName = (yyvsp[0].identifier); }
+#line 1617 "parser.c" /* yacc.c:1646  */
     break;
 
   case 26:
-/* Line 1787 of yacc.c  */
-#line 240 "../parser.y"
-    { SubsystemBase = (yyvsp[(1) - (1)].number); }
+#line 242 "../release/parser.y" /* yacc.c:1646  */
+    { SubsystemBase = (yyvsp[0].number); }
+#line 1623 "parser.c" /* yacc.c:1646  */
     break;
 
   case 27:
-/* Line 1787 of yacc.c  */
-#line 244 "../parser.y"
+#line 246 "../release/parser.y" /* yacc.c:1646  */
     {
-    if (streql((yyvsp[(3) - (3)].string), "MACH_MSG_OPTION_NONE"))
+    if (streql((yyvsp[0].string), "MACH_MSG_OPTION_NONE"))
     {
        MsgOption = strNULL;
        if (BeVerbose)
@@ -1805,672 +1633,690 @@ yyreduce:
     }
     else
     {
-       MsgOption = (yyvsp[(3) - (3)].string);
+       MsgOption = (yyvsp[0].string);
        if (BeVerbose)
-           printf("MsgOption %s\n\n",(yyvsp[(3) - (3)].string));
+           printf("MsgOption %s\n\n",(yyvsp[0].string));
     }
 }
+#line 1642 "parser.c" /* yacc.c:1646  */
     break;
 
   case 28:
-/* Line 1787 of yacc.c  */
-#line 261 "../parser.y"
+#line 263 "../release/parser.y" /* yacc.c:1646  */
     {
-    WaitTime = (yyvsp[(3) - (3)].string);
+    WaitTime = (yyvsp[0].string);
     if (BeVerbose)
        printf("WaitTime %s\n\n", WaitTime);
 }
+#line 1652 "parser.c" /* yacc.c:1646  */
     break;
 
   case 29:
-/* Line 1787 of yacc.c  */
-#line 267 "../parser.y"
+#line 269 "../release/parser.y" /* yacc.c:1646  */
     {
     WaitTime = strNULL;
     if (BeVerbose)
        printf("NoWaitTime\n\n");
 }
+#line 1662 "parser.c" /* yacc.c:1646  */
     break;
 
   case 30:
-/* Line 1787 of yacc.c  */
-#line 275 "../parser.y"
+#line 277 "../release/parser.y" /* yacc.c:1646  */
     {
-    ErrorProc = (yyvsp[(2) - (2)].identifier);
+    ErrorProc = (yyvsp[0].identifier);
     if (BeVerbose)
        printf("ErrorProc %s\n\n", ErrorProc);
 }
+#line 1672 "parser.c" /* yacc.c:1646  */
     break;
 
   case 31:
-/* Line 1787 of yacc.c  */
-#line 283 "../parser.y"
+#line 285 "../release/parser.y" /* yacc.c:1646  */
     {
-    ServerPrefix = (yyvsp[(2) - (2)].identifier);
+    ServerPrefix = (yyvsp[0].identifier);
     if (BeVerbose)
        printf("ServerPrefix %s\n\n", ServerPrefix);
 }
+#line 1682 "parser.c" /* yacc.c:1646  */
     break;
 
   case 32:
-/* Line 1787 of yacc.c  */
-#line 291 "../parser.y"
+#line 293 "../release/parser.y" /* yacc.c:1646  */
     {
-    UserPrefix = (yyvsp[(2) - (2)].identifier);
+    UserPrefix = (yyvsp[0].identifier);
     if (BeVerbose)
        printf("UserPrefix %s\n\n", UserPrefix);
 }
+#line 1692 "parser.c" /* yacc.c:1646  */
     break;
 
   case 33:
-/* Line 1787 of yacc.c  */
-#line 299 "../parser.y"
+#line 301 "../release/parser.y" /* yacc.c:1646  */
     {
-    ServerDemux = (yyvsp[(2) - (2)].identifier);
+    ServerDemux = (yyvsp[0].identifier);
     if (BeVerbose)
        printf("ServerDemux %s\n\n", ServerDemux);
 }
+#line 1702 "parser.c" /* yacc.c:1646  */
     break;
 
   case 34:
-/* Line 1787 of yacc.c  */
-#line 307 "../parser.y"
+#line 309 "../release/parser.y" /* yacc.c:1646  */
     {
     statement_t *st = stAlloc();
-    st->stKind = (yyvsp[(2) - (3)].statement_kind);
-    st->stFileName = (yyvsp[(3) - (3)].string);
+    st->stKind = (yyvsp[-1].statement_kind);
+    st->stFileName = (yyvsp[0].string);
 
     if (BeVerbose)
-       printf("%s %s\n\n", import_name((yyvsp[(2) - (3)].statement_kind)), 
(yyvsp[(3) - (3)].string));
+       printf("%s %s\n\n", import_name((yyvsp[-1].statement_kind)), 
(yyvsp[0].string));
 }
+#line 1715 "parser.c" /* yacc.c:1646  */
     break;
 
   case 35:
-/* Line 1787 of yacc.c  */
-#line 317 "../parser.y"
+#line 319 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.statement_kind) = skImport; }
+#line 1721 "parser.c" /* yacc.c:1646  */
     break;
 
   case 36:
-/* Line 1787 of yacc.c  */
-#line 318 "../parser.y"
+#line 320 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.statement_kind) = skUImport; }
+#line 1727 "parser.c" /* yacc.c:1646  */
     break;
 
   case 37:
-/* Line 1787 of yacc.c  */
-#line 319 "../parser.y"
+#line 321 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.statement_kind) = skSImport; }
+#line 1733 "parser.c" /* yacc.c:1646  */
     break;
 
   case 38:
-/* Line 1787 of yacc.c  */
-#line 323 "../parser.y"
+#line 325 "../release/parser.y" /* yacc.c:1646  */
     {
     if (RCSId != strNULL)
        warn("previous RCS decl will be ignored");
     if (BeVerbose)
-       printf("RCSId %s\n\n", (yyvsp[(3) - (3)].string));
-    RCSId = (yyvsp[(3) - (3)].string);
+       printf("RCSId %s\n\n", (yyvsp[0].string));
+    RCSId = (yyvsp[0].string);
 }
+#line 1745 "parser.c" /* yacc.c:1646  */
     break;
 
   case 39:
-/* Line 1787 of yacc.c  */
-#line 333 "../parser.y"
+#line 335 "../release/parser.y" /* yacc.c:1646  */
     {
-    identifier_t name = (yyvsp[(2) - (2)].type)->itName;
+    identifier_t name = (yyvsp[0].type)->itName;
 
     if (itLookUp(name) != itNULL)
        warn("overriding previous definition of %s", name);
-    itInsert(name, (yyvsp[(2) - (2)].type));
+    itInsert(name, (yyvsp[0].type));
 }
+#line 1757 "parser.c" /* yacc.c:1646  */
     break;
 
   case 40:
-/* Line 1787 of yacc.c  */
-#line 343 "../parser.y"
-    { itTypeDecl((yyvsp[(1) - (3)].identifier), (yyval.type) = (yyvsp[(3) - 
(3)].type)); }
+#line 345 "../release/parser.y" /* yacc.c:1646  */
+    { itTypeDecl((yyvsp[-2].identifier), (yyval.type) = (yyvsp[0].type)); }
+#line 1763 "parser.c" /* yacc.c:1646  */
     break;
 
   case 41:
-/* Line 1787 of yacc.c  */
-#line 347 "../parser.y"
-    { (yyval.type) = itResetType((yyvsp[(1) - (1)].type)); }
+#line 349 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itResetType((yyvsp[0].type)); }
+#line 1769 "parser.c" /* yacc.c:1646  */
     break;
 
   case 42:
-/* Line 1787 of yacc.c  */
-#line 350 "../parser.y"
+#line 352 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (8)].type);
+    (yyval.type) = (yyvsp[-7].type);
 
-    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[(4) - (8)].identifier)))
+    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[-4].identifier)))
        warn("conflicting translation types (%s, %s)",
-            (yyval.type)->itTransType, (yyvsp[(4) - (8)].identifier));
-    (yyval.type)->itTransType = (yyvsp[(4) - (8)].identifier);
+            (yyval.type)->itTransType, (yyvsp[-4].identifier));
+    (yyval.type)->itTransType = (yyvsp[-4].identifier);
 
-    if (((yyval.type)->itInTrans != strNULL) && 
!streql((yyval.type)->itInTrans, (yyvsp[(5) - (8)].identifier)))
+    if (((yyval.type)->itInTrans != strNULL) && 
!streql((yyval.type)->itInTrans, (yyvsp[-3].identifier)))
        warn("conflicting in-translation functions (%s, %s)",
-            (yyval.type)->itInTrans, (yyvsp[(5) - (8)].identifier));
-    (yyval.type)->itInTrans = (yyvsp[(5) - (8)].identifier);
+            (yyval.type)->itInTrans, (yyvsp[-3].identifier));
+    (yyval.type)->itInTrans = (yyvsp[-3].identifier);
 
-    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[(7) - (8)].identifier)))
+    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[-1].identifier)))
        warn("conflicting server types (%s, %s)",
-            (yyval.type)->itServerType, (yyvsp[(7) - (8)].identifier));
-    (yyval.type)->itServerType = (yyvsp[(7) - (8)].identifier);
+            (yyval.type)->itServerType, (yyvsp[-1].identifier));
+    (yyval.type)->itServerType = (yyvsp[-1].identifier);
 }
+#line 1792 "parser.c" /* yacc.c:1646  */
     break;
 
   case 43:
-/* Line 1787 of yacc.c  */
-#line 370 "../parser.y"
+#line 372 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (8)].type);
+    (yyval.type) = (yyvsp[-4].type);
 
-    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[(4) - (8)].identifier)))
+    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[-1].identifier)))
+       warn("conflicting translation types (%s, %s)",
+            (yyval.type)->itTransType, (yyvsp[-1].identifier));
+    (yyval.type)->itTransType = (yyvsp[-1].identifier);
+
+    if (((yyval.type)->itInTransPayload != strNULL) && 
!streql((yyval.type)->itInTransPayload, (yyvsp[0].identifier)))
+       warn("conflicting in-translation functions (%s, %s)",
+            (yyval.type)->itInTransPayload, (yyvsp[0].identifier));
+    (yyval.type)->itInTransPayload = (yyvsp[0].identifier);
+}
+#line 1810 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 44:
+#line 387 "../release/parser.y" /* yacc.c:1646  */
+    {
+    (yyval.type) = (yyvsp[-7].type);
+
+    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[-4].identifier)))
        warn("conflicting server types (%s, %s)",
-            (yyval.type)->itServerType, (yyvsp[(4) - (8)].identifier));
-    (yyval.type)->itServerType = (yyvsp[(4) - (8)].identifier);
+            (yyval.type)->itServerType, (yyvsp[-4].identifier));
+    (yyval.type)->itServerType = (yyvsp[-4].identifier);
 
-    if (((yyval.type)->itOutTrans != strNULL) && 
!streql((yyval.type)->itOutTrans, (yyvsp[(5) - (8)].identifier)))
+    if (((yyval.type)->itOutTrans != strNULL) && 
!streql((yyval.type)->itOutTrans, (yyvsp[-3].identifier)))
        warn("conflicting out-translation functions (%s, %s)",
-            (yyval.type)->itOutTrans, (yyvsp[(5) - (8)].identifier));
-    (yyval.type)->itOutTrans = (yyvsp[(5) - (8)].identifier);
+            (yyval.type)->itOutTrans, (yyvsp[-3].identifier));
+    (yyval.type)->itOutTrans = (yyvsp[-3].identifier);
 
-    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[(7) - (8)].identifier)))
+    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[-1].identifier)))
        warn("conflicting translation types (%s, %s)",
-            (yyval.type)->itTransType, (yyvsp[(7) - (8)].identifier));
-    (yyval.type)->itTransType = (yyvsp[(7) - (8)].identifier);
+            (yyval.type)->itTransType, (yyvsp[-1].identifier));
+    (yyval.type)->itTransType = (yyvsp[-1].identifier);
 }
+#line 1833 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 44:
-/* Line 1787 of yacc.c  */
-#line 390 "../parser.y"
+  case 45:
+#line 407 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (7)].type);
+    (yyval.type) = (yyvsp[-6].type);
 
-    if (((yyval.type)->itDestructor != strNULL) && 
!streql((yyval.type)->itDestructor, (yyvsp[(4) - (7)].identifier)))
+    if (((yyval.type)->itDestructor != strNULL) && 
!streql((yyval.type)->itDestructor, (yyvsp[-3].identifier)))
        warn("conflicting destructor functions (%s, %s)",
-            (yyval.type)->itDestructor, (yyvsp[(4) - (7)].identifier));
-    (yyval.type)->itDestructor = (yyvsp[(4) - (7)].identifier);
+            (yyval.type)->itDestructor, (yyvsp[-3].identifier));
+    (yyval.type)->itDestructor = (yyvsp[-3].identifier);
 
-    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[(6) - (7)].identifier)))
+    if (((yyval.type)->itTransType != strNULL) && 
!streql((yyval.type)->itTransType, (yyvsp[-1].identifier)))
        warn("conflicting translation types (%s, %s)",
-            (yyval.type)->itTransType, (yyvsp[(6) - (7)].identifier));
-    (yyval.type)->itTransType = (yyvsp[(6) - (7)].identifier);
+            (yyval.type)->itTransType, (yyvsp[-1].identifier));
+    (yyval.type)->itTransType = (yyvsp[-1].identifier);
 }
+#line 1851 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 45:
-/* Line 1787 of yacc.c  */
-#line 404 "../parser.y"
+  case 46:
+#line 421 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (4)].type);
+    (yyval.type) = (yyvsp[-3].type);
 
-    if (((yyval.type)->itUserType != strNULL) && 
!streql((yyval.type)->itUserType, (yyvsp[(4) - (4)].identifier)))
+    if (((yyval.type)->itUserType != strNULL) && 
!streql((yyval.type)->itUserType, (yyvsp[0].identifier)))
        warn("conflicting user types (%s, %s)",
-            (yyval.type)->itUserType, (yyvsp[(4) - (4)].identifier));
-    (yyval.type)->itUserType = (yyvsp[(4) - (4)].identifier);
+            (yyval.type)->itUserType, (yyvsp[0].identifier));
+    (yyval.type)->itUserType = (yyvsp[0].identifier);
 
-    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[(4) - (4)].identifier)))
+    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[0].identifier)))
        warn("conflicting server types (%s, %s)",
-            (yyval.type)->itServerType, (yyvsp[(4) - (4)].identifier));
-    (yyval.type)->itServerType = (yyvsp[(4) - (4)].identifier);
+            (yyval.type)->itServerType, (yyvsp[0].identifier));
+    (yyval.type)->itServerType = (yyvsp[0].identifier);
 }
+#line 1869 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 46:
-/* Line 1787 of yacc.c  */
-#line 418 "../parser.y"
+  case 47:
+#line 435 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (4)].type);
+    (yyval.type) = (yyvsp[-3].type);
 
-    if (((yyval.type)->itUserType != strNULL) && 
!streql((yyval.type)->itUserType, (yyvsp[(4) - (4)].identifier)))
+    if (((yyval.type)->itUserType != strNULL) && 
!streql((yyval.type)->itUserType, (yyvsp[0].identifier)))
        warn("conflicting user types (%s, %s)",
-            (yyval.type)->itUserType, (yyvsp[(4) - (4)].identifier));
-    (yyval.type)->itUserType = (yyvsp[(4) - (4)].identifier);
+            (yyval.type)->itUserType, (yyvsp[0].identifier));
+    (yyval.type)->itUserType = (yyvsp[0].identifier);
 }
+#line 1882 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 47:
-/* Line 1787 of yacc.c  */
-#line 428 "../parser.y"
+  case 48:
+#line 445 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = (yyvsp[(1) - (4)].type);
+    (yyval.type) = (yyvsp[-3].type);
 
-    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[(4) - (4)].identifier)))
+    if (((yyval.type)->itServerType != strNULL) && 
!streql((yyval.type)->itServerType, (yyvsp[0].identifier)))
        warn("conflicting server types (%s, %s)",
-            (yyval.type)->itServerType, (yyvsp[(4) - (4)].identifier));
-    (yyval.type)->itServerType = (yyvsp[(4) - (4)].identifier);
+            (yyval.type)->itServerType, (yyvsp[0].identifier));
+    (yyval.type)->itServerType = (yyvsp[0].identifier);
 }
-    break;
-
-  case 48:
-/* Line 1787 of yacc.c  */
-#line 439 "../parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 1895 "parser.c" /* yacc.c:1646  */
     break;
 
   case 49:
-/* Line 1787 of yacc.c  */
-#line 441 "../parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 456 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 1901 "parser.c" /* yacc.c:1646  */
     break;
 
   case 50:
-/* Line 1787 of yacc.c  */
-#line 443 "../parser.y"
-    { (yyval.type) = itVarArrayDecl((yyvsp[(1) - (2)].number), (yyvsp[(2) - 
(2)].type)); }
+#line 458 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 1907 "parser.c" /* yacc.c:1646  */
     break;
 
   case 51:
-/* Line 1787 of yacc.c  */
-#line 445 "../parser.y"
-    { (yyval.type) = itArrayDecl((yyvsp[(1) - (2)].number), (yyvsp[(2) - 
(2)].type)); }
+#line 460 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itVarArrayDecl((yyvsp[-1].number), (yyvsp[0].type)); }
+#line 1913 "parser.c" /* yacc.c:1646  */
     break;
 
   case 52:
-/* Line 1787 of yacc.c  */
-#line 447 "../parser.y"
-    { (yyval.type) = itPtrDecl((yyvsp[(2) - (2)].type)); }
+#line 462 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itArrayDecl((yyvsp[-1].number), (yyvsp[0].type)); }
+#line 1919 "parser.c" /* yacc.c:1646  */
     break;
 
   case 53:
-/* Line 1787 of yacc.c  */
-#line 449 "../parser.y"
-    { (yyval.type) = itStructDecl((yyvsp[(1) - (2)].number), (yyvsp[(2) - 
(2)].type)); }
+#line 464 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itPtrDecl((yyvsp[0].type)); }
+#line 1925 "parser.c" /* yacc.c:1646  */
     break;
 
   case 54:
-/* Line 1787 of yacc.c  */
-#line 451 "../parser.y"
-    { (yyval.type) = (yyvsp[(1) - (1)].type); }
+#line 466 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itStructDecl((yyvsp[-1].number), (yyvsp[0].type)); }
+#line 1931 "parser.c" /* yacc.c:1646  */
     break;
 
   case 55:
-/* Line 1787 of yacc.c  */
-#line 455 "../parser.y"
-    {
-    (yyval.type) = itShortDecl((yyvsp[(1) - (1)].symtype).innumber, (yyvsp[(1) 
- (1)].symtype).instr,
-                    (yyvsp[(1) - (1)].symtype).outnumber, (yyvsp[(1) - 
(1)].symtype).outstr,
-                    (yyvsp[(1) - (1)].symtype).size);
-}
+#line 468 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 1937 "parser.c" /* yacc.c:1646  */
     break;
 
   case 56:
-/* Line 1787 of yacc.c  */
-#line 462 "../parser.y"
+#line 472 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = itLongDecl((yyvsp[(2) - (6)].symtype).innumber, (yyvsp[(2) 
- (6)].symtype).instr,
-                   (yyvsp[(2) - (6)].symtype).outnumber, (yyvsp[(2) - 
(6)].symtype).outstr,
-                   (yyvsp[(2) - (6)].symtype).size, (yyvsp[(4) - (6)].number), 
(yyvsp[(5) - (6)].flag));
+    (yyval.type) = itShortDecl((yyvsp[0].symtype).innumber, 
(yyvsp[0].symtype).instr,
+                    (yyvsp[0].symtype).outnumber, (yyvsp[0].symtype).outstr,
+                    (yyvsp[0].symtype).size);
 }
+#line 1947 "parser.c" /* yacc.c:1646  */
     break;
 
   case 57:
-/* Line 1787 of yacc.c  */
-#line 470 "../parser.y"
-    { (yyval.flag) = flNone; }
+#line 479 "../release/parser.y" /* yacc.c:1646  */
+    {
+    (yyval.type) = itLongDecl((yyvsp[-4].symtype).innumber, 
(yyvsp[-4].symtype).instr,
+                   (yyvsp[-4].symtype).outnumber, (yyvsp[-4].symtype).outstr,
+                   (yyvsp[-4].symtype).size, (yyvsp[-2].number), 
(yyvsp[-1].flag));
+}
+#line 1957 "parser.c" /* yacc.c:1646  */
     break;
 
   case 58:
-/* Line 1787 of yacc.c  */
-#line 472 "../parser.y"
+#line 487 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.flag) = flNone; }
+#line 1963 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 59:
+#line 489 "../release/parser.y" /* yacc.c:1646  */
     {
-    if ((yyvsp[(1) - (3)].flag) & (yyvsp[(3) - (3)].flag))
+    if ((yyvsp[-2].flag) & (yyvsp[0].flag))
        warn("redundant IPC flag ignored");
     else
-       (yyval.flag) = (yyvsp[(1) - (3)].flag) | (yyvsp[(3) - (3)].flag);
+       (yyval.flag) = (yyvsp[-2].flag) | (yyvsp[0].flag);
 }
+#line 1974 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 59:
-/* Line 1787 of yacc.c  */
-#line 479 "../parser.y"
+  case 60:
+#line 496 "../release/parser.y" /* yacc.c:1646  */
     {
-    if ((yyvsp[(3) - (5)].flag) != flDealloc)
+    if ((yyvsp[-2].flag) != flDealloc)
        warn("only Dealloc is variable");
     else
-       (yyval.flag) = (yyvsp[(1) - (5)].flag) | flMaybeDealloc;
+       (yyval.flag) = (yyvsp[-4].flag) | flMaybeDealloc;
 }
+#line 1985 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 60:
-/* Line 1787 of yacc.c  */
-#line 488 "../parser.y"
+  case 61:
+#line 505 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.symtype).innumber = (yyval.symtype).outnumber = (yyvsp[(1) - 
(1)].number);
+    (yyval.symtype).innumber = (yyval.symtype).outnumber = (yyvsp[0].number);
     (yyval.symtype).instr = (yyval.symtype).outstr = strNULL;
     (yyval.symtype).size = 0;
 }
-    break;
-
-  case 61:
-/* Line 1787 of yacc.c  */
-#line 494 "../parser.y"
-    { (yyval.symtype) = (yyvsp[(1) - (1)].symtype); }
+#line 1995 "parser.c" /* yacc.c:1646  */
     break;
 
   case 62:
-/* Line 1787 of yacc.c  */
-#line 498 "../parser.y"
-    { (yyval.symtype) = (yyvsp[(1) - (1)].symtype); }
+#line 511 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.symtype) = (yyvsp[0].symtype); }
+#line 2001 "parser.c" /* yacc.c:1646  */
     break;
 
   case 63:
-/* Line 1787 of yacc.c  */
-#line 500 "../parser.y"
+#line 515 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.symtype) = (yyvsp[0].symtype); }
+#line 2007 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 64:
+#line 517 "../release/parser.y" /* yacc.c:1646  */
     {
-    if ((yyvsp[(1) - (3)].symtype).size != (yyvsp[(3) - (3)].symtype).size)
+    if ((yyvsp[-2].symtype).size != (yyvsp[0].symtype).size)
     {
-       if ((yyvsp[(1) - (3)].symtype).size == 0)
-           (yyval.symtype).size = (yyvsp[(3) - (3)].symtype).size;
-       else if ((yyvsp[(3) - (3)].symtype).size == 0)
-           (yyval.symtype).size = (yyvsp[(1) - (3)].symtype).size;
+       if ((yyvsp[-2].symtype).size == 0)
+           (yyval.symtype).size = (yyvsp[0].symtype).size;
+       else if ((yyvsp[0].symtype).size == 0)
+           (yyval.symtype).size = (yyvsp[-2].symtype).size;
        else
        {
            error("sizes in IPCTypes (%d, %d) aren't equal",
-                 (yyvsp[(1) - (3)].symtype).size, (yyvsp[(3) - 
(3)].symtype).size);
+                 (yyvsp[-2].symtype).size, (yyvsp[0].symtype).size);
            (yyval.symtype).size = 0;
        }
     }
     else
-       (yyval.symtype).size = (yyvsp[(1) - (3)].symtype).size;
-    (yyval.symtype).innumber = (yyvsp[(1) - (3)].symtype).innumber;
-    (yyval.symtype).instr = (yyvsp[(1) - (3)].symtype).instr;
-    (yyval.symtype).outnumber = (yyvsp[(3) - (3)].symtype).outnumber;
-    (yyval.symtype).outstr = (yyvsp[(3) - (3)].symtype).outstr;
+       (yyval.symtype).size = (yyvsp[-2].symtype).size;
+    (yyval.symtype).innumber = (yyvsp[-2].symtype).innumber;
+    (yyval.symtype).instr = (yyvsp[-2].symtype).instr;
+    (yyval.symtype).outnumber = (yyvsp[0].symtype).outnumber;
+    (yyval.symtype).outstr = (yyvsp[0].symtype).outstr;
 }
-    break;
-
-  case 64:
-/* Line 1787 of yacc.c  */
-#line 524 "../parser.y"
-    { (yyval.type) = itPrevDecl((yyvsp[(1) - (1)].identifier)); }
+#line 2033 "parser.c" /* yacc.c:1646  */
     break;
 
   case 65:
-/* Line 1787 of yacc.c  */
-#line 528 "../parser.y"
-    { (yyval.number) = 0; }
+#line 541 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itPrevDecl((yyvsp[0].identifier)); }
+#line 2039 "parser.c" /* yacc.c:1646  */
     break;
 
   case 66:
-/* Line 1787 of yacc.c  */
-#line 530 "../parser.y"
+#line 545 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.number) = 0; }
+#line 2045 "parser.c" /* yacc.c:1646  */
     break;
 
   case 67:
-/* Line 1787 of yacc.c  */
-#line 533 "../parser.y"
-    { (yyval.number) = (yyvsp[(5) - (7)].number); }
+#line 547 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = 0; }
+#line 2051 "parser.c" /* yacc.c:1646  */
     break;
 
   case 68:
-/* Line 1787 of yacc.c  */
-#line 537 "../parser.y"
-    { (yyval.number) = (yyvsp[(3) - (5)].number); }
+#line 550 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number); }
+#line 2057 "parser.c" /* yacc.c:1646  */
     break;
 
   case 69:
-/* Line 1787 of yacc.c  */
-#line 541 "../parser.y"
-    { (yyval.number) = (yyvsp[(3) - (5)].number); }
+#line 554 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number); }
+#line 2063 "parser.c" /* yacc.c:1646  */
     break;
 
   case 70:
-/* Line 1787 of yacc.c  */
-#line 545 "../parser.y"
-    { (yyval.type) = itCStringDecl((yyvsp[(3) - (4)].number), FALSE); }
+#line 558 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number); }
+#line 2069 "parser.c" /* yacc.c:1646  */
     break;
 
   case 71:
-/* Line 1787 of yacc.c  */
-#line 548 "../parser.y"
-    { (yyval.type) = itCStringDecl((yyvsp[(5) - (6)].number), TRUE); }
+#line 562 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itCStringDecl((yyvsp[-1].number), FALSE); }
+#line 2075 "parser.c" /* yacc.c:1646  */
     break;
 
   case 72:
-/* Line 1787 of yacc.c  */
-#line 552 "../parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) + (yyvsp[(3) - (3)].number);  
}
+#line 565 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = itCStringDecl((yyvsp[-1].number), TRUE); }
+#line 2081 "parser.c" /* yacc.c:1646  */
     break;
 
   case 73:
-/* Line 1787 of yacc.c  */
-#line 554 "../parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) - (yyvsp[(3) - (3)].number);  
}
+#line 569 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number) + (yyvsp[0].number); }
+#line 2087 "parser.c" /* yacc.c:1646  */
     break;
 
   case 74:
-/* Line 1787 of yacc.c  */
-#line 556 "../parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) * (yyvsp[(3) - (3)].number);  
}
+#line 571 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number) - (yyvsp[0].number); }
+#line 2093 "parser.c" /* yacc.c:1646  */
     break;
 
   case 75:
-/* Line 1787 of yacc.c  */
-#line 558 "../parser.y"
-    { (yyval.number) = (yyvsp[(1) - (3)].number) / (yyvsp[(3) - (3)].number);  
}
+#line 573 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number) * (yyvsp[0].number); }
+#line 2099 "parser.c" /* yacc.c:1646  */
     break;
 
   case 76:
-/* Line 1787 of yacc.c  */
-#line 560 "../parser.y"
-    { (yyval.number) = (yyvsp[(1) - (1)].number);      }
+#line 575 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-2].number) / (yyvsp[0].number); }
+#line 2105 "parser.c" /* yacc.c:1646  */
     break;
 
   case 77:
-/* Line 1787 of yacc.c  */
-#line 562 "../parser.y"
-    { (yyval.number) = (yyvsp[(2) - (3)].number);      }
+#line 577 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[0].number);      }
+#line 2111 "parser.c" /* yacc.c:1646  */
     break;
 
   case 78:
-/* Line 1787 of yacc.c  */
-#line 566 "../parser.y"
-    { (yyval.routine) = (yyvsp[(1) - (1)].routine); }
+#line 579 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.number) = (yyvsp[-1].number);     }
+#line 2117 "parser.c" /* yacc.c:1646  */
     break;
 
   case 79:
-/* Line 1787 of yacc.c  */
-#line 567 "../parser.y"
-    { (yyval.routine) = (yyvsp[(1) - (1)].routine); }
+#line 583 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = (yyvsp[0].routine); }
+#line 2123 "parser.c" /* yacc.c:1646  */
     break;
 
   case 80:
-/* Line 1787 of yacc.c  */
-#line 568 "../parser.y"
-    { (yyval.routine) = (yyvsp[(1) - (1)].routine); }
+#line 584 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = (yyvsp[0].routine); }
+#line 2129 "parser.c" /* yacc.c:1646  */
     break;
 
   case 81:
-/* Line 1787 of yacc.c  */
-#line 569 "../parser.y"
-    { (yyval.routine) = (yyvsp[(1) - (1)].routine); }
+#line 585 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = (yyvsp[0].routine); }
+#line 2135 "parser.c" /* yacc.c:1646  */
     break;
 
   case 82:
-/* Line 1787 of yacc.c  */
-#line 570 "../parser.y"
-    { (yyval.routine) = (yyvsp[(1) - (1)].routine); }
+#line 586 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = (yyvsp[0].routine); }
+#line 2141 "parser.c" /* yacc.c:1646  */
     break;
 
   case 83:
-/* Line 1787 of yacc.c  */
-#line 574 "../parser.y"
-    { (yyval.routine) = rtMakeRoutine((yyvsp[(2) - (3)].identifier), 
(yyvsp[(3) - (3)].argument)); }
+#line 587 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = (yyvsp[0].routine); }
+#line 2147 "parser.c" /* yacc.c:1646  */
     break;
 
   case 84:
-/* Line 1787 of yacc.c  */
-#line 578 "../parser.y"
-    { (yyval.routine) = rtMakeSimpleRoutine((yyvsp[(2) - (3)].identifier), 
(yyvsp[(3) - (3)].argument)); }
+#line 591 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = rtMakeRoutine((yyvsp[-1].identifier), 
(yyvsp[0].argument)); }
+#line 2153 "parser.c" /* yacc.c:1646  */
     break;
 
   case 85:
-/* Line 1787 of yacc.c  */
-#line 582 "../parser.y"
-    { (yyval.routine) = rtMakeProcedure((yyvsp[(2) - (3)].identifier), 
(yyvsp[(3) - (3)].argument)); }
+#line 595 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = rtMakeSimpleRoutine((yyvsp[-1].identifier), 
(yyvsp[0].argument)); }
+#line 2159 "parser.c" /* yacc.c:1646  */
     break;
 
   case 86:
-/* Line 1787 of yacc.c  */
-#line 586 "../parser.y"
-    { (yyval.routine) = rtMakeSimpleProcedure((yyvsp[(2) - (3)].identifier), 
(yyvsp[(3) - (3)].argument)); }
+#line 599 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = rtMakeProcedure((yyvsp[-1].identifier), 
(yyvsp[0].argument)); }
+#line 2165 "parser.c" /* yacc.c:1646  */
     break;
 
   case 87:
-/* Line 1787 of yacc.c  */
-#line 590 "../parser.y"
-    { (yyval.routine) = rtMakeFunction((yyvsp[(2) - (4)].identifier), 
(yyvsp[(3) - (4)].argument), (yyvsp[(4) - (4)].type)); }
+#line 603 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = rtMakeSimpleProcedure((yyvsp[-1].identifier), 
(yyvsp[0].argument)); }
+#line 2171 "parser.c" /* yacc.c:1646  */
     break;
 
   case 88:
-/* Line 1787 of yacc.c  */
-#line 594 "../parser.y"
-    { (yyval.argument) = argNULL; }
+#line 607 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.routine) = rtMakeFunction((yyvsp[-2].identifier), 
(yyvsp[-1].argument), (yyvsp[0].type)); }
+#line 2177 "parser.c" /* yacc.c:1646  */
     break;
 
   case 89:
-/* Line 1787 of yacc.c  */
-#line 596 "../parser.y"
-    { (yyval.argument) = (yyvsp[(2) - (3)].argument); }
+#line 611 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.argument) = argNULL; }
+#line 2183 "parser.c" /* yacc.c:1646  */
     break;
 
   case 90:
-/* Line 1787 of yacc.c  */
-#line 601 "../parser.y"
-    { (yyval.argument) = (yyvsp[(1) - (1)].argument); }
+#line 613 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.argument) = (yyvsp[-1].argument); }
+#line 2189 "parser.c" /* yacc.c:1646  */
     break;
 
   case 91:
-/* Line 1787 of yacc.c  */
-#line 603 "../parser.y"
+#line 618 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.argument) = (yyvsp[0].argument); }
+#line 2195 "parser.c" /* yacc.c:1646  */
+    break;
+
+  case 92:
+#line 620 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.argument) = (yyvsp[(1) - (3)].argument);
-    (yyval.argument)->argNext = (yyvsp[(3) - (3)].argument);
+    (yyval.argument) = (yyvsp[-2].argument);
+    (yyval.argument)->argNext = (yyvsp[0].argument);
 }
+#line 2204 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 92:
-/* Line 1787 of yacc.c  */
-#line 610 "../parser.y"
+  case 93:
+#line 627 "../release/parser.y" /* yacc.c:1646  */
     {
     (yyval.argument) = argAlloc();
-    (yyval.argument)->argKind = (yyvsp[(1) - (4)].direction);
-    (yyval.argument)->argName = (yyvsp[(2) - (4)].identifier);
-    (yyval.argument)->argType = (yyvsp[(3) - (4)].type);
-    (yyval.argument)->argFlags = (yyvsp[(4) - (4)].flag);
+    (yyval.argument)->argKind = (yyvsp[-3].direction);
+    (yyval.argument)->argName = (yyvsp[-2].identifier);
+    (yyval.argument)->argType = (yyvsp[-1].type);
+    (yyval.argument)->argFlags = (yyvsp[0].flag);
 }
+#line 2216 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 93:
-/* Line 1787 of yacc.c  */
-#line 619 "../parser.y"
+  case 94:
+#line 636 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akNone; }
+#line 2222 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 94:
-/* Line 1787 of yacc.c  */
-#line 620 "../parser.y"
+  case 95:
+#line 637 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akIn; }
+#line 2228 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 95:
-/* Line 1787 of yacc.c  */
-#line 621 "../parser.y"
+  case 96:
+#line 638 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akOut; }
+#line 2234 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 96:
-/* Line 1787 of yacc.c  */
-#line 622 "../parser.y"
+  case 97:
+#line 639 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akInOut; }
+#line 2240 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 97:
-/* Line 1787 of yacc.c  */
-#line 623 "../parser.y"
+  case 98:
+#line 640 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akRequestPort; }
+#line 2246 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 98:
-/* Line 1787 of yacc.c  */
-#line 624 "../parser.y"
+  case 99:
+#line 641 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akReplyPort; }
+#line 2252 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 99:
-/* Line 1787 of yacc.c  */
-#line 625 "../parser.y"
+  case 100:
+#line 642 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akSReplyPort; }
+#line 2258 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 100:
-/* Line 1787 of yacc.c  */
-#line 626 "../parser.y"
+  case 101:
+#line 643 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akUReplyPort; }
+#line 2264 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 101:
-/* Line 1787 of yacc.c  */
-#line 627 "../parser.y"
+  case 102:
+#line 644 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akWaitTime; }
+#line 2270 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 102:
-/* Line 1787 of yacc.c  */
-#line 628 "../parser.y"
+  case 103:
+#line 645 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akMsgOption; }
+#line 2276 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 103:
-/* Line 1787 of yacc.c  */
-#line 629 "../parser.y"
+  case 104:
+#line 646 "../release/parser.y" /* yacc.c:1646  */
     { (yyval.direction) = akMsgSeqno; }
+#line 2282 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 104:
-/* Line 1787 of yacc.c  */
-#line 633 "../parser.y"
+  case 105:
+#line 650 "../release/parser.y" /* yacc.c:1646  */
     {
-    (yyval.type) = itLookUp((yyvsp[(2) - (2)].identifier));
+    (yyval.type) = itLookUp((yyvsp[0].identifier));
     if ((yyval.type) == itNULL)
-       error("type '%s' not defined", (yyvsp[(2) - (2)].identifier));
+       error("type '%s' not defined", (yyvsp[0].identifier));
 }
+#line 2292 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 105:
-/* Line 1787 of yacc.c  */
-#line 639 "../parser.y"
-    { (yyval.type) = (yyvsp[(2) - (2)].type); }
+  case 106:
+#line 656 "../release/parser.y" /* yacc.c:1646  */
+    { (yyval.type) = (yyvsp[0].type); }
+#line 2298 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 106:
-/* Line 1787 of yacc.c  */
-#line 643 "../parser.y"
+  case 107:
+#line 660 "../release/parser.y" /* yacc.c:1646  */
     { LookString(); }
+#line 2304 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 107:
-/* Line 1787 of yacc.c  */
-#line 647 "../parser.y"
+  case 108:
+#line 664 "../release/parser.y" /* yacc.c:1646  */
     { LookFileName(); }
+#line 2310 "parser.c" /* yacc.c:1646  */
     break;
 
-  case 108:
-/* Line 1787 of yacc.c  */
-#line 651 "../parser.y"
+  case 109:
+#line 668 "../release/parser.y" /* yacc.c:1646  */
     { LookQString(); }
+#line 2316 "parser.c" /* yacc.c:1646  */
     break;
 
 
-/* Line 1787 of yacc.c  */
-#line 2474 "parser.c"
+#line 2320 "parser.c" /* yacc.c:1646  */
       default: break;
     }
   /* User semantic actions sometimes alter yychar, and that requires
@@ -2492,7 +2338,7 @@ yyreduce:
 
   *++yyvsp = yyval;
 
-  /* Now `shift' the result of the reduction.  Determine what state
+  /* Now 'shift' the result of the reduction.  Determine what state
      that goes to, based on the state we popped back to and the rule
      number reduced by.  */
 
@@ -2507,9 +2353,9 @@ yyreduce:
   goto yynewstate;
 
 
-/*------------------------------------.
-| yyerrlab -- here on detecting error |
-`------------------------------------*/
+/*--------------------------------------.
+| yyerrlab -- here on detecting error.  |
+`--------------------------------------*/
 yyerrlab:
   /* Make sure we have latest lookahead translation.  See comments at
      user semantic actions for why this is necessary.  */
@@ -2560,20 +2406,20 @@ yyerrlab:
   if (yyerrstatus == 3)
     {
       /* If just tried and failed to reuse lookahead token after an
-        error, discard it.  */
+         error, discard it.  */
 
       if (yychar <= YYEOF)
-       {
-         /* Return failure if at end of input.  */
-         if (yychar == YYEOF)
-           YYABORT;
-       }
+        {
+          /* Return failure if at end of input.  */
+          if (yychar == YYEOF)
+            YYABORT;
+        }
       else
-       {
-         yydestruct ("Error: discarding",
-                     yytoken, &yylval);
-         yychar = YYEMPTY;
-       }
+        {
+          yydestruct ("Error: discarding",
+                      yytoken, &yylval);
+          yychar = YYEMPTY;
+        }
     }
 
   /* Else will try to reuse lookahead token after shifting the error
@@ -2592,7 +2438,7 @@ yyerrorlab:
   if (/*CONSTCOND*/ 0)
      goto yyerrorlab;
 
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYERROR.  */
   YYPOPSTACK (yylen);
   yylen = 0;
@@ -2605,29 +2451,29 @@ yyerrorlab:
 | yyerrlab1 -- common code for both syntax error and YYERROR.  |
 `-------------------------------------------------------------*/
 yyerrlab1:
-  yyerrstatus = 3;     /* Each real token shifted decrements this.  */
+  yyerrstatus = 3;      /* Each real token shifted decrements this.  */
 
   for (;;)
     {
       yyn = yypact[yystate];
       if (!yypact_value_is_default (yyn))
-       {
-         yyn += YYTERROR;
-         if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
-           {
-             yyn = yytable[yyn];
-             if (0 < yyn)
-               break;
-           }
-       }
+        {
+          yyn += YYTERROR;
+          if (0 <= yyn && yyn <= YYLAST && yycheck[yyn] == YYTERROR)
+            {
+              yyn = yytable[yyn];
+              if (0 < yyn)
+                break;
+            }
+        }
 
       /* Pop the current state because it cannot handle the error token.  */
       if (yyssp == yyss)
-       YYABORT;
+        YYABORT;
 
 
       yydestruct ("Error: popping",
-                 yystos[yystate], yyvsp);
+                  yystos[yystate], yyvsp);
       YYPOPSTACK (1);
       yystate = *yyssp;
       YY_STACK_PRINT (yyss, yyssp);
@@ -2678,14 +2524,14 @@ yyreturn:
       yydestruct ("Cleanup: discarding lookahead",
                   yytoken, &yylval);
     }
-  /* Do not reclaim the symbols of the rule which action triggered
+  /* Do not reclaim the symbols of the rule whose action triggered
      this YYABORT or YYACCEPT.  */
   YYPOPSTACK (yylen);
   YY_STACK_PRINT (yyss, yyssp);
   while (yyssp != yyss)
     {
       yydestruct ("Cleanup: popping",
-                 yystos[*yyssp], yyvsp);
+                  yystos[*yyssp], yyvsp);
       YYPOPSTACK (1);
     }
 #ifndef yyoverflow
@@ -2696,13 +2542,9 @@ yyreturn:
   if (yymsg != yymsgbuf)
     YYSTACK_FREE (yymsg);
 #endif
-  /* Make sure YYID is used.  */
-  return YYID (yyresult);
+  return yyresult;
 }
-
-
-/* Line 2050 of yacc.c  */
-#line 654 "../parser.y"
+#line 671 "../release/parser.y" /* yacc.c:1906  */
 
 
 static const char *
diff --git a/parser.h b/parser.h
index 651b66e..96e9b5d 100644
--- a/parser.h
+++ b/parser.h
@@ -82,6 +82,7 @@ typedef union
 #define        syQString       319
 #define        syFileName      320
 #define        syIPCFlag       321
+#define        syInTranPayload 322
 
 
 extern YYSTYPE yylval;
diff --git a/parser.y b/parser.y
index a916cb3..e88fd22 100644
--- a/parser.y
+++ b/parser.y
@@ -98,6 +98,8 @@
 %token <string>        syFileName
 %token <flag>          syIPCFlag
 
+%token syInTranPayload
+
 %left  syPlus syMinus
 %left  syStar syDiv
 
@@ -365,6 +367,21 @@ TransTypeSpec              :       TypeSpec
             $$->itServerType, $7);
     $$->itServerType = $7;
 }
+                       |       TransTypeSpec syInTranPayload syColon
+                               syIdentifier syIdentifier
+{
+    $$ = $1;
+
+    if (($$->itTransType != strNULL) && !streql($$->itTransType, $4))
+       warn("conflicting translation types (%s, %s)",
+            $$->itTransType, $4);
+    $$->itTransType = $4;
+
+    if (($$->itInTransPayload != strNULL) && !streql($$->itInTransPayload, $5))
+       warn("conflicting in-translation functions (%s, %s)",
+            $$->itInTransPayload, $5);
+    $$->itInTransPayload = $5;
+}
                        |       TransTypeSpec syOutTran syColon syIdentifier
                                syIdentifier syLParen syIdentifier syRParen
 {
diff --git a/routine.c b/routine.c
index 94e2b4c..ddf5770 100644
--- a/routine.c
+++ b/routine.c
@@ -540,6 +540,7 @@ rtAugmentArgKind(argument_t *arg)
      *  6) This is a dealloc arg, being returned.  The name can't be
      *    stored directly into the msg_type, because the msg-type
      *    field is a bit-field.
+     *  7) There is a payload-aware translate-in function defined.
      */
 
     if (((it->itOutTrans != strNULL) &&
@@ -555,7 +556,8 @@ rtAugmentArgKind(argument_t *arg)
        ((akIdent(arg->argKind) == akePoly) &&
         akCheck(arg->argKind, akbReturnSnd)) ||
        ((akIdent(arg->argKind) == akeDealloc) &&
-        akCheck(arg->argKind, akbReturnSnd)))
+        akCheck(arg->argKind, akbReturnSnd)) ||
+       (it->itInTransPayload != strNULL))
     {
        arg->argKind = akRemFeature(arg->argKind, akbReplyCopy);
        arg->argKind = akAddFeature(arg->argKind, akbVarNeeded);
diff --git a/server.c b/server.c
index 8496da7..15fc128 100644
--- a/server.c
+++ b/server.c
@@ -133,6 +133,26 @@ WriteArrayEntries(FILE *file, const statement_t *stats)
        fprintf(file, "\t\t\t0,\n");
 }
 
+void
+WriteSubsystemServerRoutine(FILE *file, const char *typeModifier)
+{
+    fprintf(file, "%s mig_routine_t %s_routine\n", typeModifier,
+           ServerDemux);
+    fprintf(file, "\t(const mach_msg_header_t *InHeadP)\n");
+
+    fprintf(file, "{\n");
+    fprintf(file, "\tint msgh_id;\n");
+    fprintf(file, "\n");
+    fprintf(file, "\tmsgh_id = InHeadP->msgh_id - %d;\n", SubsystemBase);
+    fprintf(file, "\n");
+    fprintf(file, "\tif ((msgh_id > %d) || (msgh_id < 0))\n",
+           rtNumber - 1);
+    fprintf(file, "\t\treturn 0;\n");
+    fprintf(file, "\n");
+    fprintf(file, "\treturn %s_routines[msgh_id];\n", ServerDemux);
+    fprintf(file, "}\n");
+}
+
 static void
 WriteEpilog(FILE *file, const statement_t *stats)
 {
@@ -141,7 +161,7 @@ WriteEpilog(FILE *file, const statement_t *stats)
     /*
      * First, the symbol table
      */
-     fprintf(file, "static mig_routine_t %s_routines[] = {\n", ServerDemux);
+     fprintf(file, "mig_routine_t %s_routines[] = {\n", ServerDemux);
 
      WriteArrayEntries(file, stats);
 
@@ -199,20 +219,7 @@ WriteEpilog(FILE *file, const statement_t *stats)
     /*
      * Then, the <subsystem>_server_routine routine
      */
-    fprintf(file, "mig_external mig_routine_t %s_routine\n", ServerDemux);
-    fprintf(file, "\t(const mach_msg_header_t *InHeadP)\n");
-
-    fprintf(file, "{\n");
-    fprintf(file, "\tint msgh_id;\n");
-    fprintf(file, "\n");
-    fprintf(file, "\tmsgh_id = InHeadP->msgh_id - %d;\n", SubsystemBase);
-    fprintf(file, "\n");
-    fprintf(file, "\tif ((msgh_id > %d) || (msgh_id < 0))\n",
-           rtNumber - 1);
-    fprintf(file, "\t\treturn 0;\n");
-    fprintf(file, "\n");
-    fprintf(file, "\treturn %s_routines[msgh_id];\n", ServerDemux);
-    fprintf(file, "}\n");
+    WriteSubsystemServerRoutine(file, "mig_external");
     fprintf(file, "\n");
 
     /* symtab */
@@ -296,11 +303,11 @@ WriteVarDecls(FILE *file, const routine_t *rt)
     fprintf(file, "\n");
 
     if (!rt->rtSimpleFixedReply)
-       fprintf(file, "\tboolean_t msgh_simple;\n");
+       fprintf(file, "\tboolean_t msgh_simple = msgh_simple;\n");
     else if (!rt->rtSimpleCheckRequest)
     {
        fprintf(file, "#if\tTypeCheck\n");
-       fprintf(file, "\tboolean_t msgh_simple;\n");
+       fprintf(file, "\tboolean_t msgh_simple = msgh_simple;\n");
        fprintf(file, "#endif\t/* TypeCheck */\n");
        fprintf(file, "\n");
     }
@@ -395,16 +402,16 @@ WriteCheckHead(FILE *file, const routine_t *rt)
        fprintf(file, "\tmsgh_simple = !(In0P->Head.msgh_bits & 
MACH_MSGH_BITS_COMPLEX);\n");
 
     if (rt->rtNumRequestVar > 0)
-       fprintf(file, "\tif ((msgh_size < %d)",
+       fprintf(file, "\tif (mig_unlikely ((msgh_size < %d)",
                rt->rtRequestSize);
     else
-       fprintf(file, "\tif ((In0P->Head.msgh_size != %d)",
+       fprintf(file, "\tif (mig_unlikely ((In0P->Head.msgh_size != %d)",
                rt->rtRequestSize);
 
     if (rt->rtSimpleCheckRequest)
        fprintf(file, " ||\n\t    %s(In0P->Head.msgh_bits & 
MACH_MSGH_BITS_COMPLEX)",
                rt->rtSimpleReceiveRequest ? "" : "!");
-    fprintf(file, ")\n");
+    fprintf(file, "))\n");
     WriteMsgError(file, "MIG_BAD_ARGUMENTS");
     fprintf(file, "#endif\t/* TypeCheck */\n");
     fprintf(file, "\n");
@@ -422,7 +429,7 @@ WriteTypeCheck(FILE *file, const argument_t *arg)
                arg->argRequestPos, arg->argTTName, arg->argVarName);
     else
     {
-       fprintf(file, "\tif (");
+       fprintf(file, "\tif (mig_unlikely (");
        if (!it->itIndefinite) {
            fprintf(file, "(In%dP->%s%s.msgt_inline != %s) ||\n\t    ",
                arg->argRequestPos, arg->argTTName,
@@ -450,7 +457,7 @@ WriteTypeCheck(FILE *file, const argument_t *arg)
                    arg->argRequestPos, arg->argTTName,
                    arg->argLongForm ? "l" : "",
                    it->itNumber);
-       fprintf(file, "\t    (In%dP->%s.msgt%s_size != %d))\n",
+       fprintf(file, "\t    (In%dP->%s.msgt%s_size != %d)))\n",
                arg->argRequestPos, arg->argTTName,
                arg->argLongForm ? "l" : "",
                it->itSize);
@@ -508,9 +515,10 @@ WriteCheckMsgSize(FILE *file, const argument_t *arg)
     if (arg->argRequestPos == rt->rtMaxRequestPos)
     {
        fprintf(file, "#if\tTypeCheck\n");
-       fprintf(file, "\tif (msgh_size != %d + (", rt->rtRequestSize);
+       fprintf(file, "\tif (mig_unlikely (msgh_size != %d + (",
+               rt->rtRequestSize);
        WriteCheckArgSize(file, arg);
-       fprintf(file, "))\n");
+       fprintf(file, ")))\n");
 
        WriteMsgError(file, "MIG_BAD_ARGUMENTS");
        fprintf(file, "#endif\t/* TypeCheck */\n");
@@ -538,10 +546,12 @@ WriteCheckMsgSize(FILE *file, const argument_t *arg)
           it won't underflow. */
 
        if (LastVarArg)
-           fprintf(file, "\tif (msgh_size != %d + msgh_size_delta)\n",
+           fprintf(file,
+                   "\tif (mig_unlikely (msgh_size != %d + msgh_size_delta))\n",
                rt->rtRequestSize);
        else
-           fprintf(file, "\tif (msgh_size < %d + msgh_size_delta)\n",
+           fprintf(file,
+                   "\tif (mig_unlikely (msgh_size < %d + msgh_size_delta))\n",
                rt->rtRequestSize);
        WriteMsgError(file, "MIG_BAD_ARGUMENTS");
 
@@ -580,14 +590,45 @@ static void
 WriteExtractArgValue(FILE *file, const argument_t *arg)
 {
     const ipc_type_t *it = arg->argType;
+    boolean_t have_payload;
 
     if (arg->argMultiplier > 1)
        WriteCopyType(file, it, "%s", "/* %s */ %s / %d",
                      arg->argVarName, InArgMsgField(arg), arg->argMultiplier);
-    else if (it->itInTrans != strNULL)
-       WriteCopyType(file, it, "%s", "/* %s */ %s(%s)",
-                     arg->argVarName, it->itInTrans, InArgMsgField(arg));
-    else
+    else if ((have_payload = (it->itInTransPayload != strNULL &&
+              strcmp(arg->argMsgField, "Head.msgh_request_port") == 0)) ||
+            it->itInTrans != strNULL) {
+
+       if (have_payload) {
+           argument_t argPayload = *arg;
+           argPayload.argMsgField = "Head.msgh_bits";
+           fprintf(file,
+                   "\tif (MACH_MSGH_BITS_LOCAL (%s) == "
+                   "MACH_MSG_TYPE_PROTECTED_PAYLOAD)\n"
+                   "\t", InArgMsgField(&argPayload));
+
+           argPayload.argMsgField = "Head.msgh_protected_payload";
+           WriteCopyType(file, it, "%s", "/* %s */ %s(%s)",
+                         arg->argVarName, it->itInTransPayload,
+                         InArgMsgField(&argPayload));
+
+           fprintf(file,
+                   "\telse\n"
+                   "\t");
+
+           if (it->itInTrans == strNULL)
+               fprintf(file, "\t%s = %s;",
+                       arg->argVarName, InArgMsgField(arg));
+           else
+               WriteCopyType(file, it, "%s", "/* %s */ %s(%s)",
+                             arg->argVarName, it->itInTrans,
+                             InArgMsgField(arg));
+       } else {
+           WriteCopyType(file, it, "%s", "/* %s */ %s(%s)",
+                         arg->argVarName, it->itInTrans,
+                         InArgMsgField(arg));
+       }
+    } else
        WriteCopyType(file, it, "%s", "/* %s */ %s",
                      arg->argVarName, InArgMsgField(arg));
     fprintf(file, "\n");
@@ -736,9 +777,9 @@ WriteServerCallArg(FILE *file, const argument_t *arg)
                    arg->argTTName,
                    arg->argLongForm ? ".msgtl_header" : "");
            fprintf(file, "? %s ", InArgMsgField(arg));
-           fprintf(file, ": *((%s **)%s)",
-                       FetchServerType(arg->argType->itElement),
-                       InArgMsgField(arg));
+           fprintf(file, ": %s%s",
+                   InArgMsgField(arg),
+                   OOLPostfix);
        }
        else
            fprintf(file, "%s", InArgMsgField(arg));
@@ -775,8 +816,8 @@ WriteDestroyArg(FILE *file, const argument_t *arg)
                arg->argRequestPos,
                arg->argTTName,
                arg->argLongForm ? ".msgtl_header" : "");
-       fprintf(file, "\t\t\t%smig_deallocate(* (vm_offset_t *) %s, ",
-               SubrPrefix, InArgMsgField(arg));
+       fprintf(file, "\t\t\t%smig_deallocate((vm_offset_t) %s%s, ",
+               SubrPrefix, InArgMsgField(arg), OOLPostfix);
        if (multiplier > 1)
            fprintf(file, "%d * ", multiplier);
        fprintf(file, " %s);\n", InArgMsgField(count));
@@ -905,6 +946,11 @@ WritePackArgValue(FILE *file, const argument_t *arg)
                arg->argMsgField,
                arg->argVarName,
                it->itNumber);
+           fprintf(file,
+               "\tif (OutP->%s < %d) OutP->%s += 1;\n",
+               arg->argCount->argMsgField,
+               it->itNumber,
+               arg->argCount->argMsgField);
        }
        else {
            argument_t *count = arg->argCount;
@@ -932,9 +978,9 @@ WritePackArgValue(FILE *file, const argument_t *arg)
                            arg->argTTName,
                            arg->argLongForm ? ".msgtl_header" : "",
                            arg->argDealloc->argVarName);
-               fprintf(file, "\t\t*((%s **)OutP->%s) = %sP;\n",
-                       FetchServerType(btype),
+               fprintf(file, "\t\tOutP->%s%s = %sP;\n",
                        arg->argMsgField,
+                       OOLPostfix,
                        arg->argVarName);
                if (!arg->argRoutine->rtSimpleFixedReply)
                    fprintf(file, "\t\tmsgh_simple = FALSE;\n");
@@ -1157,9 +1203,9 @@ WritePackArg(FILE *file, const argument_t *arg)
                        arg->argTTName,
                        arg->argLongForm ? ".msgtl_header" : "",
                        arg->argDealloc->argVarName);
-           fprintf(file, "\t\t*((%s **)OutP->%s) = %sP;\n",
-                       FetchServerType(it->itElement),
+           fprintf(file, "\t\tOutP->%s%s = %sP;\n",
                        arg->argMsgField,
+                       OOLPostfix,
                        arg->argVarName);
            if (!arg->argRoutine->rtSimpleFixedReply)
                fprintf(file, "\t\tmsgh_simple = FALSE;\n");
@@ -1236,6 +1282,28 @@ WriteFieldDecl(FILE *file, const argument_t *arg)
 }
 
 static void
+WriteDefaultRoutine(FILE *file, const routine_t *rt)
+{
+    fprintf(file, "\n/* Default implementation of %s */\n",
+           rt->rtServerName);
+
+    fprintf(file, "#ifdef\tMIG_EOPNOTSUPP\n");
+
+    fprintf(file, "%s __attribute__ ((weak))\n%s\n",
+           ReturnTypeStr(rt), rt->rtServerName);
+    fprintf(file, "(\n");
+    WriteList(file, rt->rtArgs, WriteServerVarDecl,
+             akbServerArg, ",\n", "\n");
+
+    if (rt->rtReturn == argNULL)
+       fprintf(file, ") {}\n");
+    else
+       fprintf(file, ") { return MIG_EOPNOTSUPP; }\n");
+
+    fprintf(file, "#endif\t/* MIG_EOPNOTSUPP */\n");
+}
+
+static void
 WriteRoutine(FILE *file, const routine_t *rt)
 {
     fprintf(file, "\n");
@@ -1303,6 +1371,8 @@ WriteRoutine(FILE *file, const routine_t *rt)
     }
 
     fprintf(file, "}\n");
+
+    WriteDefaultRoutine(file, rt);
 }
 
 void
diff --git a/type.c b/type.c
index 3078dab..7565f34 100644
--- a/type.c
+++ b/type.c
@@ -118,6 +118,7 @@ itAlloc(void)
        strNULL,                /* identifier_t itServerType */
        strNULL,                /* identifier_t itTransType */
        strNULL,                /* identifier_t itInTrans */
+       strNULL,                /* identifier_t itInTransPayload */
        strNULL,                /* identifier_t itOutTrans */
        strNULL,                /* identifier_t itDestructor */
     };
@@ -376,7 +377,9 @@ itCheckDecl(identifier_t name, ipc_type_t *it)
        limitations in Mig */
 
     if (it->itVarArray) {
-       if ((it->itInTrans != strNULL) || (it->itOutTrans != strNULL))
+       if ((it->itInTrans != strNULL) ||
+           (it->itInTransPayload != strNULL) ||
+           (it->itOutTrans != strNULL))
            error("%s: can't translate variable-sized arrays", name);
 
        if (it->itDestructor != strNULL)
@@ -419,6 +422,10 @@ itPrintTrans(const ipc_type_t *it)
        printf("\tInTran:\t\t%s %s(%s)\n",
              it->itTransType, it->itInTrans, it->itServerType);
 
+    if (it->itInTransPayload != strNULL)
+       printf("\tInTranPayload:\t\t%s %s\n",
+             it->itTransType, it->itInTransPayload);
+
     if (it->itOutTrans != strNULL)
        printf("\tOutTran:\t%s %s(%s)\n",
              it->itServerType, it->itOutTrans, it->itTransType);
@@ -556,6 +563,7 @@ itResetType(ipc_type_t *old)
     /* reset all special translation/destruction/type info */
 
     old->itInTrans = strNULL;
+    old->itInTransPayload = strNULL;
     old->itOutTrans = strNULL;
     old->itDestructor = strNULL;
     old->itUserType = strNULL;
diff --git a/type.h b/type.h
index f199059..50de063 100644
--- a/type.h
+++ b/type.h
@@ -107,6 +107,7 @@ typedef enum dealloc {
  *             cusertype: itUserType
  *             cservertype: itServerType
  *             intran: itTransType itInTrans(itServerType)
+ *             intranpayload: itTransType itInTransPayload
  *             outtran: itServerType itOutTrans(itTransType)
  *             destructor: itDestructor(itTransType);
  *
@@ -165,6 +166,7 @@ typedef struct ipc_type
     identifier_t itTransType;
 
     identifier_t itInTrans;    /* may be NULL */
+    identifier_t itInTransPayload;     /* may be NULL */
     identifier_t itOutTrans;   /* may be NULL */
     identifier_t itDestructor; /* may be NULL */
 } ipc_type_t;
diff --git a/user.c b/user.c
index 37f53d2..1f3ba3d 100644
--- a/user.c
+++ b/user.c
@@ -411,6 +411,11 @@ WritePackArgValue(FILE *file, const argument_t *arg)
                arg->argMsgField,
                arg->argVarName,
                it->itNumber);
+           fprintf(file,
+               "\tif (InP->%s < %d) InP->%s += 1;\n",
+               arg->argCount->argMsgField,
+               it->itNumber,
+               arg->argCount->argMsgField);
        }
        else {
 
@@ -442,9 +447,9 @@ WritePackArgValue(FILE *file, const argument_t *arg)
                            arg->argLongForm ? ".msgtl_header" : "",
                            arg->argDealloc->argByReferenceUser ? "*" : "",
                            arg->argDealloc->argVarName);
-               fprintf(file, "\t\t*((%s **)InP->%s) = %s%s;\n",
-                       FetchUserType(btype),
+               fprintf(file, "\t\tInP->%s%s = %s%s;\n",
                        arg->argMsgField,
+                       OOLPostfix,
                        ref, arg->argVarName);
                if (!arg->argRoutine->rtSimpleFixedRequest)
                    fprintf(file, "\t\tmsgh_simple = FALSE;\n");
@@ -681,7 +686,7 @@ WriteRequestArgs(FILE *file, const routine_t *rt)
 static void
 WriteCheckIdentity(FILE *file, const routine_t *rt)
 {
-    fprintf(file, "\tif (OutP->Head.msgh_id != %d) {\n",
+    fprintf(file, "\tif (mig_unlikely (OutP->Head.msgh_id != %d)) {\n",
            rt->rtNumber + SubsystemBase + 100);
     fprintf(file, "\t\tif (OutP->Head.msgh_id == MACH_NOTIFY_SEND_ONCE)\n\t");
     WriteMsgError(file, rt, "MIG_SERVER_DIED");
@@ -703,16 +708,17 @@ WriteCheckIdentity(FILE *file, const routine_t *rt)
            fprintf(file, "\tmsgh_size = OutP->Head.msgh_size;\n\n");
 
        fprintf(file,
-           "\tif ((OutP->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||\n");
+           "\tif (mig_unlikely ("
+           "(OutP->Head.msgh_bits & MACH_MSGH_BITS_COMPLEX) ||\n");
        if (rt->rtNoReplyArgs)
-           fprintf(file, "\t    (OutP->Head.msgh_size != %d))\n",
+           fprintf(file, "\t    (OutP->Head.msgh_size != %d)))\n",
                        rt->rtReplySize);
        else {
            fprintf(file, "\t    ((msgh_size %s %d) &&\n",
                (rt->rtNumReplyVar > 0) ? "<" : "!=",
                rt->rtReplySize);
            fprintf(file, "\t     ((msgh_size != sizeof(mig_reply_header_t)) 
||\n");
-           fprintf(file, "\t      (OutP->RetCode == KERN_SUCCESS))))\n");
+           fprintf(file, "\t      (OutP->RetCode == KERN_SUCCESS)))))\n");
        }
     }
     else {
@@ -722,7 +728,7 @@ WriteCheckIdentity(FILE *file, const routine_t *rt)
        fprintf(file, "\tmsgh_simple = !(OutP->Head.msgh_bits & 
MACH_MSGH_BITS_COMPLEX);\n");
        fprintf(file, "\n");
 
-       fprintf(file, "\tif (((msgh_size %s %d)",
+       fprintf(file, "\tif (mig_unlikely (((msgh_size %s %d)",
                (rt->rtNumReplyVar > 0) ? "<" : "!=",
                rt->rtReplySize);
 
@@ -735,7 +741,7 @@ WriteCheckIdentity(FILE *file, const routine_t *rt)
 
        fprintf(file, "\t    ((msgh_size != sizeof(mig_reply_header_t)) ||\n");
        fprintf(file, "\t     !msgh_simple ||\n");
-       fprintf(file, "\t     (OutP->RetCode == KERN_SUCCESS)))\n");
+       fprintf(file, "\t     (OutP->RetCode == KERN_SUCCESS))))\n");
     }
     WriteMsgError(file, rt, "MIG_TYPE_ERROR");
     fprintf(file, "#endif\t/* TypeCheck */\n");
@@ -773,7 +779,7 @@ WriteTypeCheck(FILE *file, const argument_t *arg)
     }
     else
     {
-       fprintf(file, "\tif (");
+       fprintf(file, "\tif (mig_unlikely (");
        if (!it->itIndefinite) {
            fprintf(file, "(OutP->%s%s.msgt_inline != %s) ||\n\t    ",
                arg->argTTName,
@@ -801,7 +807,7 @@ WriteTypeCheck(FILE *file, const argument_t *arg)
                    arg->argTTName,
                    arg->argLongForm ? "l" : "",
                    it->itNumber);
-       fprintf(file, "\t    (OutP->%s.msgt%s_size != %d))\n",
+       fprintf(file, "\t    (OutP->%s.msgt%s_size != %d)))\n",
                arg->argTTName,
                arg->argLongForm ? "l" : "",
                it->itSize);
@@ -856,10 +862,10 @@ WriteCheckMsgSize(FILE *file, const argument_t *arg)
     if (arg->argReplyPos == rt->rtMaxReplyPos)
     {
        fprintf(file, "#if\tTypeCheck\n");
-       fprintf(file, "\tif (msgh_size != %d + (",
+       fprintf(file, "\tif (mig_unlikely (msgh_size != %d + (",
                rt->rtReplySize);
        WriteCheckArgSize(file, arg);
-       fprintf(file, "))\n");
+       fprintf(file, ")))\n");
 
        WriteMsgError(file, rt, "MIG_TYPE_ERROR");
        fprintf(file, "#endif\t/* TypeCheck */\n");
@@ -887,10 +893,12 @@ WriteCheckMsgSize(FILE *file, const argument_t *arg)
           it won't underflow. */
 
        if (LastVarArg)
-           fprintf(file, "\tif (msgh_size != %d + msgh_size_delta)\n",
+           fprintf(file,
+               "\tif (mig_unlikely (msgh_size != %d + msgh_size_delta))\n",
                rt->rtReplySize);
        else
-           fprintf(file, "\tif (msgh_size < %d + msgh_size_delta)\n",
+           fprintf(file,
+               "\tif (mig_unlikely (msgh_size < %d + msgh_size_delta))\n",
                rt->rtReplySize);
        WriteMsgError(file, rt, "MIG_TYPE_ERROR");
 
@@ -943,9 +951,10 @@ WriteExtractArgValue(FILE *file, const argument_t *arg)
            fprintf(file, "\tif (!OutP->%s%s.msgt_inline)\n",
                    arg->argTTName,
                    arg->argLongForm ? ".msgtl_header" : "");
-           fprintf(file, "\t    %s%s = *((%s **)OutP->%s);\n",
+           fprintf(file, "\t    %s%s = OutP->%s%s;\n",
                    ref, arg->argVarName,
-                   FetchUserType(btype), arg->argMsgField);
+                   arg->argMsgField,
+                   OOLPostfix);
            fprintf(file, "\telse if (OutP->%s", count->argMsgField);
            if (btype->itNumber > 1)
                fprintf(file, " / %d", btype->itNumber);
diff --git a/utils.c b/utils.c
index 6c42bc3..4c2a87b 100644
--- a/utils.c
+++ b/utils.c
@@ -60,6 +60,11 @@ WriteBogusDefines(FILE *file)
     fprintf(file, "#endif\n");
     fprintf(file, "\n");
 
+    fprintf(file, "#ifndef\tmig_unlikely\n");
+    fprintf(file, "#define\tmig_unlikely(X)\t__builtin_expect (!! (X), 0)\n");
+    fprintf(file, "#endif\n");
+    fprintf(file, "\n");
+
     fprintf(file, "#ifndef\tTypeCheck\n");
     fprintf(file, "#define\tTypeCheck 1\n");
     fprintf(file, "#endif\n");
@@ -70,11 +75,11 @@ WriteBogusDefines(FILE *file)
     fprintf(file, "#endif\n");
     fprintf(file, "\n");
 
-    fprintf(file, "#define BAD_TYPECHECK(type, check) ({\\\n");
+    fprintf(file, "#define BAD_TYPECHECK(type, check) mig_unlikely (({\\\n");
     fprintf(file,
            "  union { mach_msg_type_t t; unsigned32_t w; } _t, _c;\\\n");
     fprintf(file,
-           "  _t.t = *(type); _c.t = *(check); _t.w != _c.w; })\n");
+           "  _t.t = *(type); _c.t = *(check);_t.w != _c.w; }))\n");
 }
 
 void
@@ -234,10 +239,16 @@ WriteFieldDeclPrim(FILE *file, const argument_t *arg,
         *      use the element type and maximum size specified.
         *      Note arg->argCount->argMultiplier == btype->itNumber.
         */
-       fprintf(file, "\t\t%s %s[%d];",
+       fprintf(file, "\t\tunion {\n");
+       fprintf(file, "\t\t\t%s %s[%d];\n",
                        (*tfunc)(btype),
                        arg->argMsgField,
                        it->itNumber/btype->itNumber);
+       fprintf(file, "\t\t\t%s *%s%s;\n",
+                       (*tfunc)(btype),
+                       arg->argMsgField,
+                       OOLPostfix);
+       fprintf(file, "\t\t};");
     }
     else
        fprintf(file, "\t\t%s %s;", (*tfunc)(it), arg->argMsgField);
diff --git a/write.h b/write.h
index b5180df..4d24e63 100644
--- a/write.h
+++ b/write.h
@@ -38,5 +38,6 @@ extern void WriteUser(FILE *file, const statement_t *stats);
 extern void WriteUserIndividual(const statement_t *stats);
 extern void WriteServer(FILE *file, const statement_t *stats);
 extern void WriteRoutineList(FILE *file, const statement_t *stats);
+extern void WriteSubsystemServerRoutine(FILE *file, const char *typeModifier);
 
 #endif /* _WRITE_H */

-- 
Alioth's /usr/local/bin/git-commit-notice on 
/srv/git.debian.org/git/pkg-hurd/mig.git



reply via email to

[Prev in Thread] Current Thread [Next in Thread]