[gcc/devel/modula-2] Modula-2 bootstrap parameter passing type equivalence bugfix.

Gaius Mulley gaius@gcc.gnu.org
Sun Jan 23 15:49:23 GMT 2022


https://gcc.gnu.org/g:d08981bfd00da0b2fc738359986e7775b6bb0d1d

commit d08981bfd00da0b2fc738359986e7775b6bb0d1d
Author: Gaius Mulley <gaius.mulley@southwales.ac.uk>
Date:   Sun Jan 23 15:47:41 2022 +0000

    Modula-2 bootstrap parameter passing type equivalence bugfix.
    
    This patch removes the unnecesary casts when pointers are passed
    as parameters, when pointers are assigned and when constants are
    assigned to designators.
    
    gcc/m2/ChangeLog:
    
            * mc/decl.mod: (isZtypeEquivalent) New procedure function.
            (isEquivalentType) New procedure function.  (doExprCastC)
            Added header comment and check for type equivalence.
            (needsCast) Added header comment and skip types for
            the formal and actual parameters before comparison.
            Add check for actual = nil parameter. (checkSystemCast)
            check for actual = nil being passed to a pointer parameter.
            * mc-boot/GArgs.c: Rebuilt.
            * mc-boot/GCmdArgs.c: Rebuilt.
            * mc-boot/GDebug.c: Rebuilt.
            * mc-boot/GDynamicStrings.c: Rebuilt.
            * mc-boot/GEnvironment.c: Rebuilt.
            * mc-boot/GFIO.c: Rebuilt.
            * mc-boot/GFormatStrings.c: Rebuilt.
            * mc-boot/GIO.c: Rebuilt.
            * mc-boot/GIndexing.c: Rebuilt.
            * mc-boot/GM2RTS.c: Rebuilt.
            * mc-boot/GNumberIO.c: Rebuilt.
            * mc-boot/GPushBackInput.c: Rebuilt.
            * mc-boot/GRTExceptions.c: Rebuilt.
            * mc-boot/GRTint.c: Rebuilt.
            * mc-boot/GStdIO.c: Rebuilt.
            * mc-boot/GStrCase.c: Rebuilt.
            * mc-boot/GStrIO.c: Rebuilt.
            * mc-boot/GStrLib.c: Rebuilt.
            * mc-boot/GStringConvert.c: Rebuilt.
            * mc-boot/GSysStorage.c: Rebuilt.
            * mc-boot/GTimeString.c: Rebuilt.
            * mc-boot/Galists.c: Rebuilt.
            * mc-boot/Gdecl.c: Rebuilt.
            * mc-boot/Gkeyc.c: Rebuilt.
            * mc-boot/Glists.c: Rebuilt.
            * mc-boot/GmcComment.c: Rebuilt.
            * mc-boot/GmcError.c: Rebuilt.
            * mc-boot/GmcLexBuf.c: Rebuilt.
            * mc-boot/GmcMetaError.c: Rebuilt.
            * mc-boot/GmcOptions.c: Rebuilt.
            * mc-boot/GmcPretty.c: Rebuilt.
            * mc-boot/GmcPrintf.c: Rebuilt.
            * mc-boot/GmcSearch.c: Rebuilt.
            * mc-boot/GmcStack.c: Rebuilt.
            * mc-boot/Gmcp1.c: Rebuilt.
            * mc-boot/Gmcp2.c: Rebuilt.
            * mc-boot/Gmcp3.c: Rebuilt.
            * mc-boot/Gmcp4.c: Rebuilt.
            * mc-boot/Gmcp5.c: Rebuilt.
            * mc-boot/GnameKey.c: Rebuilt.
            * mc-boot/GsymbolKey.c: Rebuilt.
            * mc-boot/Gvarargs.c: Rebuilt.
            * mc-boot/Gwlists.c: Rebuilt.
    
    Signed-off-by: Gaius Mulley <gaius.mulley@southwales.ac.uk>

Diff:
---
 gcc/m2/mc-boot/GArgs.c           |   2 +-
 gcc/m2/mc-boot/GCmdArgs.c        |   8 +-
 gcc/m2/mc-boot/GDebug.c          |   2 +-
 gcc/m2/mc-boot/GDynamicStrings.c | 106 ++---
 gcc/m2/mc-boot/GEnvironment.c    |   2 +-
 gcc/m2/mc-boot/GFIO.c            | 224 +++++------
 gcc/m2/mc-boot/GFormatStrings.c  |  12 +-
 gcc/m2/mc-boot/GIO.c             |  64 ++--
 gcc/m2/mc-boot/GIndexing.c       |   8 +-
 gcc/m2/mc-boot/GM2RTS.c          |   8 +-
 gcc/m2/mc-boot/GNumberIO.c       |  56 +--
 gcc/m2/mc-boot/GPushBackInput.c  |  16 +-
 gcc/m2/mc-boot/GRTExceptions.c   |  18 +-
 gcc/m2/mc-boot/GRTint.c          |  34 +-
 gcc/m2/mc-boot/GStdIO.c          |   4 +-
 gcc/m2/mc-boot/GStrCase.c        |   4 +-
 gcc/m2/mc-boot/GStrIO.c          |   4 +-
 gcc/m2/mc-boot/GStrLib.c         |  18 +-
 gcc/m2/mc-boot/GStringConvert.c  |  62 +--
 gcc/m2/mc-boot/GSysStorage.c     |   2 +-
 gcc/m2/mc-boot/GTimeString.c     |   2 +-
 gcc/m2/mc-boot/Galists.c         |  22 +-
 gcc/m2/mc-boot/Gdecl.c           | 806 +++++++++++++++++++++------------------
 gcc/m2/mc-boot/Gkeyc.c           |   6 +-
 gcc/m2/mc-boot/Glists.c          |  22 +-
 gcc/m2/mc-boot/GmcComment.c      |   2 +-
 gcc/m2/mc-boot/GmcError.c        |  14 +-
 gcc/m2/mc-boot/GmcLexBuf.c       |  52 +--
 gcc/m2/mc-boot/GmcMetaError.c    |   4 +-
 gcc/m2/mc-boot/GmcOptions.c      |   2 +-
 gcc/m2/mc-boot/GmcPretty.c       |  20 +-
 gcc/m2/mc-boot/GmcPrintf.c       |   4 +-
 gcc/m2/mc-boot/GmcSearch.c       |   4 +-
 gcc/m2/mc-boot/GmcStack.c        |   4 +-
 gcc/m2/mc-boot/Gmcp1.c           | 582 ++++++++++++++--------------
 gcc/m2/mc-boot/Gmcp2.c           | 602 ++++++++++++++---------------
 gcc/m2/mc-boot/Gmcp3.c           | 516 ++++++++++++-------------
 gcc/m2/mc-boot/Gmcp4.c           | 544 +++++++++++++-------------
 gcc/m2/mc-boot/Gmcp5.c           | 534 +++++++++++++-------------
 gcc/m2/mc-boot/GnameKey.c        |  26 +-
 gcc/m2/mc-boot/GsymbolKey.c      |  10 +-
 gcc/m2/mc-boot/Gvarargs.c        |  20 +-
 gcc/m2/mc-boot/Gwlists.c         |  22 +-
 gcc/m2/mc/decl.mod               |  77 +++-
 44 files changed, 2339 insertions(+), 2212 deletions(-)

diff --git a/gcc/m2/mc-boot/GArgs.c b/gcc/m2/mc-boot/GArgs.c
index 60c535dc7b0..d517fac53a2 100644
--- a/gcc/m2/mc-boot/GArgs.c
+++ b/gcc/m2/mc-boot/GArgs.c
@@ -76,7 +76,7 @@ extern "C" unsigned int Args_GetArg (char *a, unsigned int _a_high, unsigned int
   unsigned int High;
   unsigned int j;
 
-  j = static_cast<unsigned int> (0);
+  j = 0;
   High = _a_high;
   if (i < UnixArgs_ArgC)
     {
diff --git a/gcc/m2/mc-boot/GCmdArgs.c b/gcc/m2/mc-boot/GCmdArgs.c
index fcda8f4a77a..3813aa63c2d 100644
--- a/gcc/m2/mc-boot/GCmdArgs.c
+++ b/gcc/m2/mc-boot/GCmdArgs.c
@@ -111,7 +111,7 @@ static unsigned int GetNextArg (const char *CmdLine_, unsigned int _CmdLine_high
 
   HighA = _Arg_high;  /* Index into Arg  */
   HighC = StrLib_StrLen ((const char *) CmdLine, _CmdLine_high);
-  ArgIndex = static_cast<unsigned int> (0);
+  ArgIndex = 0;
   /* Skip spaces  */
   while (((*CmdIndex) < HighC) && (Space (CmdLine[(*CmdIndex)])))
     {
@@ -267,9 +267,9 @@ extern "C" unsigned int CmdArgs_GetArg (const char *CmdLine_, unsigned int _CmdL
   /* make a local copy of each unbounded array.  */
   memcpy (CmdLine, CmdLine_, _CmdLine_high+1);
 
-  Index = static_cast<unsigned int> (0);
+  Index = 0;
   /* Continually retrieve an argument until we get the n th argument.  */
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     Another = GetNextArg ((const char *) CmdLine, _CmdLine_high, &Index, (char *) Argi, _Argi_high);
     i += 1;
@@ -297,7 +297,7 @@ extern "C" unsigned int CmdArgs_Narg (const char *CmdLine_, unsigned int _CmdLin
   /* make a local copy of each unbounded array.  */
   memcpy (CmdLine, CmdLine_, _CmdLine_high+1);
 
-  ArgNo = static_cast<unsigned int> (0);
+  ArgNo = 0;
   while (CmdArgs_GetArg ((const char *) CmdLine, _CmdLine_high, ArgNo, (char *) &a.array[0], 1000))
     {
       ArgNo += 1;
diff --git a/gcc/m2/mc-boot/GDebug.c b/gcc/m2/mc-boot/GDebug.c
index ab77526cf76..8a74e1c4cdb 100644
--- a/gcc/m2/mc-boot/GDebug.c
+++ b/gcc/m2/mc-boot/GDebug.c
@@ -129,7 +129,7 @@ extern "C" void Debug_DebugString (const char *a_, unsigned int _a_high)
   memcpy (a, a_, _a_high+1);
 
   high = _a_high;
-  n = static_cast<unsigned int> (0);
+  n = 0;
   while ((n <= high) && (a[n] != ASCII_nul))
     {
       if (a[n] == '\\')
diff --git a/gcc/m2/mc-boot/GDynamicStrings.c b/gcc/m2/mc-boot/GDynamicStrings.c
index 1a2546be491..3c4946e33b9 100644
--- a/gcc/m2/mc-boot/GDynamicStrings.c
+++ b/gcc/m2/mc-boot/GDynamicStrings.c
@@ -769,7 +769,7 @@ static unsigned int Capture (DynamicStrings_String s)
  *   #endif
   */
   captured = s;
-  return static_cast<unsigned int> (1);
+  return 1;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -978,7 +978,7 @@ static void AddTo (DynamicStrings_String *list, DynamicStrings_String s)
   if ((*list) == NULL)
     {
       (*list) = s;
-      s->debug.next = static_cast<DynamicStrings_String> (NULL);
+      s->debug.next = NULL;
     }
   else
     {
@@ -1017,7 +1017,7 @@ static void SubFrom (DynamicStrings_String *list, DynamicStrings_String s)
           return ;
         }
     }
-  s->debug.next = static_cast<DynamicStrings_String> (NULL);
+  s->debug.next = NULL;
 }
 
 
@@ -1174,9 +1174,9 @@ static void SubDebugInfo (DynamicStrings_String s)
 
 static void AddDebugInfo (DynamicStrings_String s)
 {
-  s->debug.next = static_cast<DynamicStrings_String> (NULL);
+  s->debug.next = NULL;
   s->debug.file = NULL;
-  s->debug.line = static_cast<unsigned int> (0);
+  s->debug.line = 0;
   s->debug.proc = NULL;
   if (CheckOn)
     {
@@ -1207,11 +1207,11 @@ static void ConcatContents (Contents *c, const char *a_, unsigned int _a_high, u
     }
   if (o < h)
     {
-      (*c).len = static_cast<unsigned int> (MaxBuf);
+      (*c).len = MaxBuf;
       Storage_ALLOCATE ((void **) &(*c).next, sizeof (stringRecord));
-      (*c).next->head = static_cast<Descriptor> (NULL);
-      (*c).next->contents.len = static_cast<unsigned int> (0);
-      (*c).next->contents.next = static_cast<DynamicStrings_String> (NULL);
+      (*c).next->head = NULL;
+      (*c).next->contents.len = 0;
+      (*c).next->contents.next = NULL;
       ConcatContents (&(*c).next->contents, (const char *) a, _a_high, h, o);
       AddDebugInfo ((*c).next);
       (*c).next = AssignDebug ((*c).next, (const char *) "/home/gaius/GM2/graft-combine/gcc-git-devel-modula2/gcc/m2/gm2-libs/DynamicStrings.mod", 86, 722, (const char *) "ConcatContents", 14);
@@ -1237,7 +1237,7 @@ static void DeallocateCharStar (DynamicStrings_String s)
         }
       s->head->charStarUsed = FALSE;
       s->head->charStar = NULL;
-      s->head->charStarSize = static_cast<unsigned int> (0);
+      s->head->charStarSize = 0;
       s->head->charStarValid = FALSE;
     }
 }
@@ -1290,7 +1290,7 @@ static void ConcatContentsAddress (Contents *c, void * a, unsigned int h)
   unsigned int i;
   unsigned int j;
 
-  j = static_cast<unsigned int> (0);
+  j = 0;
   i = (*c).len;
   p = static_cast<_T1> (a);
   while ((j < h) && (i < MaxBuf))
@@ -1303,11 +1303,11 @@ static void ConcatContentsAddress (Contents *c, void * a, unsigned int h)
   if (j < h)
     {
       /* avoid dangling else.  */
-      (*c).len = static_cast<unsigned int> (MaxBuf);
+      (*c).len = MaxBuf;
       Storage_ALLOCATE ((void **) &(*c).next, sizeof (stringRecord));
-      (*c).next->head = static_cast<Descriptor> (NULL);
-      (*c).next->contents.len = static_cast<unsigned int> (0);
-      (*c).next->contents.next = static_cast<DynamicStrings_String> (NULL);
+      (*c).next->head = NULL;
+      (*c).next->contents.len = 0;
+      (*c).next->contents.next = NULL;
       ConcatContentsAddress (&(*c).next->contents, reinterpret_cast<void *> (p), h-j);
       AddDebugInfo ((*c).next);
       if (TraceOn)
@@ -1318,7 +1318,7 @@ static void ConcatContentsAddress (Contents *c, void * a, unsigned int h)
   else
     {
       (*c).len = i;
-      (*c).next = static_cast<DynamicStrings_String> (NULL);
+      (*c).next = NULL;
     }
 }
 
@@ -1504,7 +1504,7 @@ static void Init (void)
   if (! Initialized)
     {
       Initialized = TRUE;
-      frameHead = static_cast<frame> (NULL);
+      frameHead = NULL;
       DynamicStrings_PushAllocation ();
     }
 }
@@ -1524,15 +1524,15 @@ extern "C" DynamicStrings_String DynamicStrings_InitString (const char *a_, unsi
   memcpy (a, a_, _a_high+1);
 
   Storage_ALLOCATE ((void **) &s, sizeof (stringRecord));
-  s->contents.len = static_cast<unsigned int> (0);
-  s->contents.next = static_cast<DynamicStrings_String> (NULL);
+  s->contents.len = 0;
+  s->contents.next = NULL;
   ConcatContents (&s->contents, (const char *) a, _a_high, StrLib_StrLen ((const char *) a, _a_high), 0);
   Storage_ALLOCATE ((void **) &s->head, sizeof (descriptor));
   s->head->charStarUsed = FALSE;
   s->head->charStar = NULL;
-  s->head->charStarSize = static_cast<unsigned int> (0);
+  s->head->charStarSize = 0;
   s->head->charStarValid = FALSE;
-  s->head->garbage = static_cast<DynamicStrings_String> (NULL);
+  s->head->garbage = NULL;
   s->head->state = inuse;
   AddDebugInfo (s);
   if (TraceOn)
@@ -1584,7 +1584,7 @@ extern "C" DynamicStrings_String DynamicStrings_KillString (DynamicStrings_Strin
           if (! PoisonOn)
             {
               Storage_DEALLOCATE ((void **) &s->head, sizeof (descriptor));
-              s->head = static_cast<Descriptor> (NULL);
+              s->head = NULL;
             }
         }
       t = DynamicStrings_KillString (s->contents.next);
@@ -1593,7 +1593,7 @@ extern "C" DynamicStrings_String DynamicStrings_KillString (DynamicStrings_Strin
           Storage_DEALLOCATE ((void **) &s, sizeof (stringRecord));
         }
     }
-  return static_cast<DynamicStrings_String> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -1624,8 +1624,8 @@ extern "C" DynamicStrings_String DynamicStrings_InitStringCharStar (void * a)
   DynamicStrings_String s;
 
   Storage_ALLOCATE ((void **) &s, sizeof (stringRecord));
-  s->contents.len = static_cast<unsigned int> (0);
-  s->contents.next = static_cast<DynamicStrings_String> (NULL);
+  s->contents.len = 0;
+  s->contents.next = NULL;
   if (a != NULL)
     {
       ConcatContentsAddress (&s->contents, a, static_cast<unsigned int> (libc_strlen (a)));
@@ -1633,9 +1633,9 @@ extern "C" DynamicStrings_String DynamicStrings_InitStringCharStar (void * a)
   Storage_ALLOCATE ((void **) &s->head, sizeof (descriptor));
   s->head->charStarUsed = FALSE;
   s->head->charStar = NULL;
-  s->head->charStarSize = static_cast<unsigned int> (0);
+  s->head->charStarSize = 0;
   s->head->charStarValid = FALSE;
-  s->head->garbage = static_cast<DynamicStrings_String> (NULL);
+  s->head->garbage = NULL;
   s->head->state = inuse;
   AddDebugInfo (s);
   if (TraceOn)
@@ -1701,7 +1701,7 @@ extern "C" unsigned int DynamicStrings_Length (DynamicStrings_String s)
 {
   if (s == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1802,7 +1802,7 @@ extern "C" DynamicStrings_String DynamicStrings_Assign (DynamicStrings_String a,
   if ((a != NULL) && (b != NULL))
     {
       a->contents.next = DynamicStrings_KillString (a->contents.next);
-      a->contents.len = static_cast<unsigned int> (0);
+      a->contents.len = 0;
     }
   return DynamicStrings_ConCat (a, b);
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -1870,7 +1870,7 @@ extern "C" unsigned int DynamicStrings_Equal (DynamicStrings_String a, DynamicSt
     {
       while ((a != NULL) && (b != NULL))
         {
-          i = static_cast<unsigned int> (0);
+          i = 0;
           Assertion_Assert (a->contents.len == b->contents.len);
           while (i < a->contents.len)
             {
@@ -2039,11 +2039,11 @@ extern "C" DynamicStrings_String DynamicStrings_Slice (DynamicStrings_String s,
   else
     {
       /* make sure high is <= Length (s)  */
-      high = static_cast<int> (Min (DynamicStrings_Length (s), static_cast<unsigned int> (high)));
+      high = Min (DynamicStrings_Length (s), static_cast<unsigned int> (high));
     }
   d = DynamicStrings_InitString ((const char *) "", 0);
   d = AddToGarbage (d, s);
-  o = static_cast<int> (0);
+  o = 0;
   t = d;
   while (s != NULL)
     {
@@ -2051,27 +2051,27 @@ extern "C" DynamicStrings_String DynamicStrings_Slice (DynamicStrings_String s,
         {
           if (o > high)
             {
-              s = static_cast<DynamicStrings_String> (NULL);
+              s = NULL;
             }
           else
             {
               /* found sliceable unit  */
               if (low < o)
                 {
-                  start = static_cast<int> (0);
+                  start = 0;
                 }
               else
                 {
                   start = low-o;
                 }
-              end = static_cast<int> (Max (Min (MaxBuf, static_cast<unsigned int> (high-o)), 0));
+              end = Max (Min (MaxBuf, static_cast<unsigned int> (high-o)), 0);
               while (t->contents.len == MaxBuf)
                 {
                   if (t->contents.next == NULL)
                     {
                       Storage_ALLOCATE ((void **) &t->contents.next, sizeof (stringRecord));
-                      t->contents.next->head = static_cast<Descriptor> (NULL);
-                      t->contents.next->contents.len = static_cast<unsigned int> (0);
+                      t->contents.next->head = NULL;
+                      t->contents.next->contents.len = 0;
                       AddDebugInfo (t->contents.next);
                       if (TraceOn)
                         {
@@ -2116,7 +2116,7 @@ extern "C" int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned
     {
       s = CheckPoisoned (s);
     }
-  k = static_cast<unsigned int> (0);
+  k = 0;
   while (s != NULL)
     {
       if ((k+s->contents.len) < o)
@@ -2130,7 +2130,7 @@ extern "C" int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned
             {
               if (s->contents.buf.array[i] == ch)
                 {
-                  return static_cast<int> (k+i);
+                  return k+i;
                 }
               i += 1;
             }
@@ -2139,7 +2139,7 @@ extern "C" int DynamicStrings_Index (DynamicStrings_String s, char ch, unsigned
         }
       s = s->contents.next;
     }
-  return static_cast<int> (-1);
+  return -1;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -2161,8 +2161,8 @@ extern "C" int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned
     {
       s = CheckPoisoned (s);
     }
-  j = static_cast<int> (-1);
-  k = static_cast<unsigned int> (0);
+  j = -1;
+  k = 0;
   while (s != NULL)
     {
       if ((k+s->contents.len) < o)
@@ -2173,7 +2173,7 @@ extern "C" int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned
         {
           if (o < k)
             {
-              i = static_cast<unsigned int> (0);
+              i = 0;
             }
           else
             {
@@ -2183,7 +2183,7 @@ extern "C" int DynamicStrings_RIndex (DynamicStrings_String s, char ch, unsigned
             {
               if (s->contents.buf.array[i] == ch)
                 {
-                  j = static_cast<int> (k);
+                  j = k;
                 }
               k += 1;
               i += 1;
@@ -2238,7 +2238,7 @@ extern "C" DynamicStrings_String DynamicStrings_RemoveWhitePrefix (DynamicString
 {
   unsigned int i;
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while (IsWhite (DynamicStrings_char (s, static_cast<int> (i))))
     {
       i += 1;
@@ -2297,7 +2297,7 @@ extern "C" DynamicStrings_String DynamicStrings_ToUpper (DynamicStrings_String s
       t = s;
       while (t != NULL)
         {
-          i = static_cast<unsigned int> (0);
+          i = 0;
           while (i < t->contents.len)
             {
               ch = t->contents.buf.array[i];
@@ -2334,7 +2334,7 @@ extern "C" DynamicStrings_String DynamicStrings_ToLower (DynamicStrings_String s
       t = s;
       while (t != NULL)
         {
-          i = static_cast<unsigned int> (0);
+          i = 0;
           while (i < t->contents.len)
             {
               ch = t->contents.buf.array[i];
@@ -2363,7 +2363,7 @@ extern "C" void DynamicStrings_CopyOut (char *a, unsigned int _a_high, DynamicSt
   unsigned int l;
 
   l = Min (_a_high+1, DynamicStrings_Length (s));
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while (i < l)
     {
       a[i] = DynamicStrings_char (s, static_cast<int> (i));
@@ -2394,7 +2394,7 @@ extern "C" char DynamicStrings_char (DynamicStrings_String s, int i)
     }
   else
     {
-      c = static_cast<unsigned int> (i);
+      c = i;
     }
   while ((s != NULL) && (c >= s->contents.len))
     {
@@ -2451,7 +2451,7 @@ extern "C" void * DynamicStrings_string (DynamicStrings_String s)
           a = s;
           while (a != NULL)
             {
-              i = static_cast<unsigned int> (0);
+              i = 0;
               while (i < a->contents.len)
                 {
                   (*p) = a->contents.buf.array[i];
@@ -2590,8 +2590,8 @@ extern "C" void DynamicStrings_PushAllocation (void)
       Init ();
       Storage_ALLOCATE ((void **) &f, sizeof (frameRec));
       f->next = frameHead;
-      f->alloc = static_cast<DynamicStrings_String> (NULL);
-      f->dealloc = static_cast<DynamicStrings_String> (NULL);
+      f->alloc = NULL;
+      f->dealloc = NULL;
       frameHead = f;
     }
 }
@@ -2610,7 +2610,7 @@ extern "C" void DynamicStrings_PopAllocation (unsigned int halt)
 {
   if (CheckOn)
     {
-      if ((DynamicStrings_PopAllocationExemption (halt, reinterpret_cast<DynamicStrings_String> (NULL))) == NULL)
+      if ((DynamicStrings_PopAllocationExemption (halt, NULL)) == NULL)
         {}  /* empty.  */
     }
 }
diff --git a/gcc/m2/mc-boot/GEnvironment.c b/gcc/m2/mc-boot/GEnvironment.c
index ade68ad2f05..d79022e3cb9 100644
--- a/gcc/m2/mc-boot/GEnvironment.c
+++ b/gcc/m2/mc-boot/GEnvironment.c
@@ -71,7 +71,7 @@ extern "C" unsigned int Environment_GetEnvironment (const char *Env_, unsigned i
   /* make a local copy of each unbounded array.  */
   memcpy (Env, Env_, _Env_high+1);
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   High = _a_high;
   Addr = static_cast<_T1> (libc_getenv (&Env));
   while (((i < High) && (Addr != NULL)) && ((*Addr) != ASCII_nul))
diff --git a/gcc/m2/mc-boot/GFIO.c b/gcc/m2/mc-boot/GFIO.c
index e88fa16796c..b59b6bb0a74 100644
--- a/gcc/m2/mc-boot/GFIO.c
+++ b/gcc/m2/mc-boot/GFIO.c
@@ -540,7 +540,7 @@ static FIO_File GetNextFreeDescriptor (void)
   {
     if (f <= h)
       {
-        fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+        fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
         if (fd == NULL)
           {
             return f;
@@ -549,7 +549,7 @@ static FIO_File GetNextFreeDescriptor (void)
     f += 1;
     if (f > h)
       {
-        Indexing_PutIndice (FileInfo, static_cast<unsigned int> (f), NULL);  /* create new slot  */
+        Indexing_PutIndice (FileInfo, f, NULL);  /* create new slot  */
         return f;  /* create new slot  */
       }
   }
@@ -566,7 +566,7 @@ static void SetState (FIO_File f, FileStatus s)
 {
   FileDescriptor fd;
 
-  fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+  fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
   fd->state = s;
 }
 
@@ -583,12 +583,12 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength,
   Storage_ALLOCATE ((void **) &fd, sizeof (fds));
   if (fd == NULL)
     {
-      SetState (Error, static_cast<FileStatus> (outofmemory));
+      SetState (Error, outofmemory);
       return Error;
     }
   else
     {
-      Indexing_PutIndice (FileInfo, static_cast<unsigned int> (f), reinterpret_cast<void *> (fd));
+      Indexing_PutIndice (FileInfo, f, reinterpret_cast<void *> (fd));
       fd->name.size = flength+1;  /* need to guarantee the nul for C  */
       fd->usage = use;  /* need to guarantee the nul for C  */
       fd->output = towrite;
@@ -603,21 +603,21 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength,
       p = static_cast<PtrToChar> (fd->name.address);
       p += flength;
       (*p) = ASCII_nul;
-      fd->abspos = static_cast<long int> (0);
+      fd->abspos = 0;
       /* now for the buffer  */
       Storage_ALLOCATE ((void **) &fd->buffer, sizeof (buf));
       if (fd->buffer == NULL)
         {
-          SetState (Error, static_cast<FileStatus> (outofmemory));
+          SetState (Error, outofmemory);
           return Error;
         }
       else
         {
           fd->buffer->valid = FALSE;
-          fd->buffer->bufstart = static_cast<long int> (0);
+          fd->buffer->bufstart = 0;
           fd->buffer->size = buflength;
-          fd->buffer->position = static_cast<unsigned int> (0);
-          fd->buffer->filled = static_cast<unsigned int> (0);
+          fd->buffer->position = 0;
+          fd->buffer->filled = 0;
           if (fd->buffer->size == 0)
             {
               fd->buffer->address = NULL;
@@ -637,7 +637,7 @@ static FIO_File InitializeFile (FIO_File f, void * fname, unsigned int flength,
             }
           else
             {
-              fd->buffer->left = static_cast<unsigned int> (0);
+              fd->buffer->left = 0;
             }
           fd->buffer->contents = reinterpret_cast<_T7 *> (fd->buffer->address);  /* provides easy access for reading characters  */
           fd->state = fstate;  /* provides easy access for reading characters  */
@@ -659,7 +659,7 @@ static void ConnectToUnix (FIO_File f, unsigned int towrite, unsigned int newfil
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           if (towrite)
@@ -709,8 +709,8 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
 
   if (f != Error)
     {
-      total = static_cast<unsigned int> (0);  /* how many bytes have we read  */
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));  /* how many bytes have we read  */
+      total = 0;  /* how many bytes have we read  */
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));  /* how many bytes have we read  */
       /* extract from the buffer first  */
       if ((fd->buffer != NULL) && fd->buffer->valid)
         {
@@ -724,9 +724,9 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
                   (*p) = static_cast<unsigned char> ((*fd->buffer->contents).array[fd->buffer->position]);
                   fd->buffer->left -= 1;  /* remove consumed bytes  */
                   fd->buffer->position += 1;  /* move onwards n bytes  */
-                  nBytes = static_cast<unsigned int> (0);  /* reduce the amount for future direct  */
+                  nBytes = 0;  /* reduce the amount for future direct  */
                   /* read  */
-                  return static_cast<int> (1);
+                  return 1;
                 }
               else
                 {
@@ -741,7 +741,7 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
                   nBytes -= n;  /* reduce the amount for future direct  */
                   /* read  */
                   total += n;
-                  return static_cast<int> (total);  /* much cleaner to return now,  */
+                  return total;  /* much cleaner to return now,  */
                 }
                /* difficult to record an error if  */
             }
@@ -777,21 +777,21 @@ static int ReadFromBuffer (FIO_File f, void * a, unsigned int nBytes)
               if (fd->buffer != NULL)
                 {
                   fd->buffer->valid = FALSE;
-                  fd->buffer->left = static_cast<unsigned int> (0);
-                  fd->buffer->position = static_cast<unsigned int> (0);
+                  fd->buffer->left = 0;
+                  fd->buffer->position = 0;
                   if (fd->buffer->address != NULL)
                     {
                       (*fd->buffer->contents).array[fd->buffer->position] = ASCII_nul;
                     }
                 }
-              return static_cast<int> (-1);
+              return -1;
             }
         }
-      return static_cast<int> (total);
+      return total;
     }
   else
     {
-      return static_cast<int> (-1);
+      return -1;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -820,8 +820,8 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a)
   if (f != Error)
     {
       /* avoid dangling else.  */
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
-      total = static_cast<int> (0);  /* how many bytes have we read  */
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
+      total = 0;  /* how many bytes have we read  */
       if (fd != NULL)  /* how many bytes have we read  */
         {
           /* extract from the buffer first  */
@@ -843,7 +843,7 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a)
                         }
                       else
                         {
-                          n = static_cast<int> (Min (fd->buffer->left, nBytes));
+                          n = Min (fd->buffer->left, nBytes);
                           t = fd->buffer->address;
                           t = reinterpret_cast<void *> (reinterpret_cast<char *> (t)+fd->buffer->position);
                           p = static_cast<_T3> (libc_memcpy (a, t, static_cast<size_t> (n)));
@@ -864,24 +864,24 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a)
                         {
                           /* avoid dangling else.  */
                           fd->buffer->valid = TRUE;
-                          fd->buffer->position = static_cast<unsigned int> (0);
-                          fd->buffer->left = static_cast<unsigned int> (n);
-                          fd->buffer->filled = static_cast<unsigned int> (n);
+                          fd->buffer->position = 0;
+                          fd->buffer->left = n;
+                          fd->buffer->filled = n;
                           fd->buffer->bufstart = fd->abspos;
                           fd->abspos += n;
                           if (n == 0)
                             {
                               /* eof reached  */
                               fd->state = endoffile;
-                              return static_cast<int> (-1);
+                              return -1;
                             }
                         }
                       else
                         {
                           fd->buffer->valid = FALSE;
-                          fd->buffer->position = static_cast<unsigned int> (0);
-                          fd->buffer->left = static_cast<unsigned int> (0);
-                          fd->buffer->filled = static_cast<unsigned int> (0);
+                          fd->buffer->position = 0;
+                          fd->buffer->left = 0;
+                          fd->buffer->filled = 0;
                           fd->state = failed;
                           return total;
                         }
@@ -891,13 +891,13 @@ static int BufferedRead (FIO_File f, unsigned int nBytes, void * a)
             }
           else
             {
-              return static_cast<int> (-1);
+              return -1;
             }
         }
     }
   else
     {
-      return static_cast<int> (-1);
+      return -1;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -1001,8 +1001,8 @@ static void StringFormat1 (char *dest, unsigned int _dest_high, const char *src_
 
   HighSrc = StrLib_StrLen ((const char *) src, _src_high);
   HighDest = _dest_high;
-  i = static_cast<unsigned int> (0);
-  j = static_cast<unsigned int> (0);
+  i = 0;
+  j = 0;
   while ((((i < HighSrc) && (src[i] != ASCII_nul)) && (j < HighDest)) && (src[i] != '%'))
     {
       if (src[i] == '\\')
@@ -1147,7 +1147,7 @@ static void CheckAccess (FIO_File f, FileUsage use, unsigned int towrite)
   if (f != Error)
     {
       /* avoid dangling else.  */
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd == NULL)
         {
           if (f != FIO_StdErr)
@@ -1214,10 +1214,10 @@ static void SetEndOfLine (FIO_File f, char ch)
 {
   FileDescriptor fd;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (ch == ASCII_nl)
         {
           fd->state = endofline;
@@ -1251,10 +1251,10 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
-          total = static_cast<int> (0);  /* how many bytes have we read  */
+          total = 0;  /* how many bytes have we read  */
           if (fd->buffer != NULL)  /* how many bytes have we read  */
             {
               /* place into the buffer first  */
@@ -1274,7 +1274,7 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a)
                         }
                       else
                         {
-                          n = static_cast<int> (Min (fd->buffer->left, nBytes));
+                          n = Min (fd->buffer->left, nBytes);
                           t = fd->buffer->address;
                           t = reinterpret_cast<void *> (reinterpret_cast<char *> (t)+fd->buffer->position);
                           p = static_cast<_T5> (libc_memcpy (a, t, static_cast<size_t> ((unsigned int ) (n))));
@@ -1291,7 +1291,7 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a)
                       FIO_FlushBuffer (f);
                       if ((fd->state != successful) && (fd->state != endofline))
                         {
-                          nBytes = static_cast<unsigned int> (0);
+                          nBytes = 0;
                         }
                     }
                 }
@@ -1299,7 +1299,7 @@ static int BufferedWrite (FIO_File f, unsigned int nBytes, void * a)
             }
         }
     }
-  return static_cast<int> (-1);
+  return -1;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -1320,10 +1320,10 @@ static void PreInitialize (FIO_File f, const char *fname_, unsigned int _fname_h
 
   if ((InitializeFile (f, &fname, StrLib_StrLen ((const char *) fname, _fname_high), state, use, towrite, bufsize)) == f)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (f == Error)
         {
-          fe = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (FIO_StdErr)));
+          fe = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, FIO_StdErr));
           if (fe == NULL)
             {
               M2RTS_HALT (-1);
@@ -1354,14 +1354,14 @@ static void PreInitialize (FIO_File f, const char *fname_, unsigned int _fname_h
 static void Init (void)
 {
   FileInfo = Indexing_InitIndex (0);
-  Error = static_cast<FIO_File> (0);
-  PreInitialize (Error, (const char *) "error", 5, static_cast<FileStatus> (toomanyfilesopen), static_cast<FileUsage> (unused), FALSE, -1, 0);
-  FIO_StdIn = static_cast<FIO_File> (1);
-  PreInitialize (FIO_StdIn, (const char *) "<stdin>", 7, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforread), FALSE, 0, MaxBufferLength);
-  FIO_StdOut = static_cast<FIO_File> (2);
-  PreInitialize (FIO_StdOut, (const char *) "<stdout>", 8, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforwrite), TRUE, 1, MaxBufferLength);
-  FIO_StdErr = static_cast<FIO_File> (3);
-  PreInitialize (FIO_StdErr, (const char *) "<stderr>", 8, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforwrite), TRUE, 2, MaxBufferLength);
+  Error = 0;
+  PreInitialize (Error, (const char *) "error", 5, toomanyfilesopen, unused, FALSE, -1, 0);
+  FIO_StdIn = 1;
+  PreInitialize (FIO_StdIn, (const char *) "<stdin>", 7, successful, openedforread, FALSE, 0, MaxBufferLength);
+  FIO_StdOut = 2;
+  PreInitialize (FIO_StdOut, (const char *) "<stdout>", 8, successful, openedforwrite, TRUE, 1, MaxBufferLength);
+  FIO_StdErr = 3;
+  PreInitialize (FIO_StdErr, (const char *) "<stderr>", 8, successful, openedforwrite, TRUE, 2, MaxBufferLength);
   if (! (M2RTS_InstallTerminationProcedure ((PROC ) {(PROC_t) FIO_FlushOutErr})))
     {
       M2RTS_HALT (-1);
@@ -1384,7 +1384,7 @@ extern "C" unsigned int FIO_IsNoError (FIO_File f)
     }
   else
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       return (fd != NULL) && (((fd->state == successful) || (fd->state == endoffile)) || (fd->state == endofline));
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -1404,7 +1404,7 @@ extern "C" unsigned int FIO_IsActive (FIO_File f)
     }
   else
     {
-      return (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f))) != NULL;
+      return (Indexing_GetIndice (FileInfo, f)) != NULL;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -1474,7 +1474,7 @@ extern "C" void FIO_Close (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       /* 
          we allow users to close files which have an error status
   */
@@ -1500,10 +1500,10 @@ extern "C" void FIO_Close (FIO_File f)
                   Storage_DEALLOCATE (&fd->buffer->address, fd->buffer->size);
                 }
               Storage_DEALLOCATE ((void **) &fd->buffer, sizeof (buf));
-              fd->buffer = static_cast<Buffer> (NULL);
+              fd->buffer = NULL;
             }
           Storage_DEALLOCATE ((void **) &fd, sizeof (fds));
-          Indexing_PutIndice (FileInfo, static_cast<unsigned int> (f), NULL);
+          Indexing_PutIndice (FileInfo, f, NULL);
         }
     }
 }
@@ -1547,11 +1547,11 @@ extern "C" FIO_File FIO_openToRead (void * fname, unsigned int flength)
   f = GetNextFreeDescriptor ();
   if (f == Error)
     {
-      SetState (f, static_cast<FileStatus> (toomanyfilesopen));
+      SetState (f, toomanyfilesopen);
     }
   else
     {
-      f = InitializeFile (f, fname, flength, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforread), FALSE, MaxBufferLength);
+      f = InitializeFile (f, fname, flength, successful, openedforread, FALSE, MaxBufferLength);
       ConnectToUnix (f, FALSE, FALSE);
     }
   return f;
@@ -1574,11 +1574,11 @@ extern "C" FIO_File FIO_openToWrite (void * fname, unsigned int flength)
   f = GetNextFreeDescriptor ();
   if (f == Error)
     {
-      SetState (f, static_cast<FileStatus> (toomanyfilesopen));
+      SetState (f, toomanyfilesopen);
     }
   else
     {
-      f = InitializeFile (f, fname, flength, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforwrite), TRUE, MaxBufferLength);
+      f = InitializeFile (f, fname, flength, successful, openedforwrite, TRUE, MaxBufferLength);
       ConnectToUnix (f, TRUE, TRUE);
     }
   return f;
@@ -1603,11 +1603,11 @@ extern "C" FIO_File FIO_openForRandom (void * fname, unsigned int flength, unsig
   f = GetNextFreeDescriptor ();
   if (f == Error)
     {
-      SetState (f, static_cast<FileStatus> (toomanyfilesopen));
+      SetState (f, toomanyfilesopen);
     }
   else
     {
-      f = InitializeFile (f, fname, flength, static_cast<FileStatus> (successful), static_cast<FileUsage> (openedforrandom), towrite, MaxBufferLength);
+      f = InitializeFile (f, fname, flength, successful, openedforrandom, towrite, MaxBufferLength);
       ConnectToUnix (f, towrite, newfile);
     }
   return f;
@@ -1626,7 +1626,7 @@ extern "C" void FIO_FlushBuffer (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           if (fd->output && (fd->buffer != NULL))
@@ -1635,8 +1635,8 @@ extern "C" void FIO_FlushBuffer (FIO_File f)
                 {
                   fd->abspos += fd->buffer->position;
                   fd->buffer->bufstart = fd->abspos;
-                  fd->buffer->position = static_cast<unsigned int> (0);
-                  fd->buffer->filled = static_cast<unsigned int> (0);
+                  fd->buffer->position = 0;
+                  fd->buffer->filled = 0;
                   fd->buffer->left = fd->buffer->size;
                 }
               else
@@ -1665,23 +1665,23 @@ extern "C" unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void *
 
   if (f != Error)
     {
-      CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+      CheckAccess (f, openedforread, FALSE);
       n = ReadFromBuffer (f, a, nBytes);
       if (n <= 0)
         {
-          return static_cast<unsigned int> (0);
+          return 0;
         }
       else
         {
           p = static_cast<_T2> (a);
           p += n-1;
           SetEndOfLine (f, (*p));
-          return static_cast<unsigned int> (n);
+          return n;
         }
     }
   else
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -1696,7 +1696,7 @@ extern "C" unsigned int FIO_ReadNBytes (FIO_File f, unsigned int nBytes, void *
 
 extern "C" void FIO_ReadAny (FIO_File f, unsigned char *a, unsigned int _a_high)
 {
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if ((BufferedRead (f, _a_high, a)) == _a_high)
     {
       SetEndOfLine (f, static_cast<char> (a[_a_high]));
@@ -1717,18 +1717,18 @@ extern "C" unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void *
   int total;
   FileDescriptor fd;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforwrite), TRUE);
+  CheckAccess (f, openedforwrite, TRUE);
   FIO_FlushBuffer (f);
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           total = static_cast<int> (libc_write (fd->unixfd, a, static_cast<size_t> ((int ) (nBytes))));
           if (total < 0)
             {
               fd->state = failed;
-              return static_cast<unsigned int> (0);
+              return 0;
             }
           else
             {
@@ -1741,7 +1741,7 @@ extern "C" unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void *
             }
         }
     }
-  return static_cast<unsigned int> (0);
+  return 0;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -1755,7 +1755,7 @@ extern "C" unsigned int FIO_WriteNBytes (FIO_File f, unsigned int nBytes, void *
 
 extern "C" void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high)
 {
-  CheckAccess (f, static_cast<FileUsage> (openedforwrite), TRUE);
+  CheckAccess (f, openedforwrite, TRUE);
   if ((BufferedWrite (f, _a_high, a)) == _a_high)
     {}  /* empty.  */
 }
@@ -1767,7 +1767,7 @@ extern "C" void FIO_WriteAny (FIO_File f, unsigned char *a, unsigned int _a_high
 
 extern "C" void FIO_WriteChar (FIO_File f, char ch)
 {
-  CheckAccess (f, static_cast<FileUsage> (openedforwrite), TRUE);
+  CheckAccess (f, openedforwrite, TRUE);
   if ((BufferedWrite (f, sizeof (ch), &ch)) == sizeof (ch))
     {}  /* empty.  */
 }
@@ -1781,10 +1781,10 @@ extern "C" unsigned int FIO_EOF (FIO_File f)
 {
   FileDescriptor fd;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           return fd->state == endoffile;
@@ -1806,14 +1806,14 @@ extern "C" unsigned int FIO_EOLN (FIO_File f)
   char ch;
   FileDescriptor fd;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   /* 
       we will read a character and then push it back onto the input stream,
       having noted the file status, we also reset the status.
   */
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           if ((fd->state == successful) || (fd->state == endofline))
@@ -1841,14 +1841,14 @@ extern "C" unsigned int FIO_WasEOLN (FIO_File f)
 {
   FileDescriptor fd;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if (f == Error)
     {
       return FALSE;
     }
   else
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       return (fd != NULL) && (fd->state == endofline);
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -1866,7 +1866,7 @@ extern "C" char FIO_ReadChar (FIO_File f)
 {
   char ch;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if ((BufferedRead (f, sizeof (ch), &ch)) == sizeof (ch))
     {
       SetEndOfLine (f, ch);
@@ -1899,10 +1899,10 @@ extern "C" void FIO_UnReadChar (FIO_File f, char ch)
   void * a;
   void * b;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (((fd->state == successful) || (fd->state == endoffile)) || (fd->state == endofline))
         {
           /* avoid dangling else.  */
@@ -1911,9 +1911,9 @@ extern "C" void FIO_UnReadChar (FIO_File f, char ch)
               /* we assume that a ReadChar has occurred, we will check just in case.  */
               if (fd->state == endoffile)
                 {
-                  fd->buffer->position = static_cast<unsigned int> (MaxBufferLength);
-                  fd->buffer->left = static_cast<unsigned int> (0);
-                  fd->buffer->filled = static_cast<unsigned int> (0);
+                  fd->buffer->position = MaxBufferLength;
+                  fd->buffer->left = 0;
+                  fd->buffer->filled = 0;
                   fd->state = successful;
                 }
               if (fd->buffer->position > 0)
@@ -1989,9 +1989,9 @@ extern "C" void FIO_ReadString (FIO_File f, char *a, unsigned int _a_high)
   unsigned int i;
   char ch;
 
-  CheckAccess (f, static_cast<FileUsage> (openedforread), FALSE);
+  CheckAccess (f, openedforread, FALSE);
   high = _a_high;
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     ch = FIO_ReadChar (f);
     if (i <= high)
@@ -2051,14 +2051,14 @@ extern "C" int FIO_GetUnixFileDescriptor (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           return fd->unixfd;
         }
     }
   FormatError1 ((const char *) "file %d has not been opened or is out of range\\n", 48, (const unsigned char *) &f, (sizeof (f)-1));
-  return static_cast<int> (-1);
+  return -1;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -2075,7 +2075,7 @@ extern "C" void FIO_SetPositionFromBeginning (FIO_File f, long int pos)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           /* always force the lseek, until we are confident that abspos is always correct,
@@ -2091,10 +2091,10 @@ extern "C" void FIO_SetPositionFromBeginning (FIO_File f, long int pos)
                     }
                   else
                     {
-                      fd->buffer->left = static_cast<unsigned int> (0);
+                      fd->buffer->left = 0;
                     }
-                  fd->buffer->position = static_cast<unsigned int> (0);
-                  fd->buffer->filled = static_cast<unsigned int> (0);
+                  fd->buffer->position = 0;
+                  fd->buffer->filled = 0;
                 }
               offset = libc_lseek (fd->unixfd, pos, SEEK_SET);
               if ((offset >= 0) && (pos == offset))
@@ -2104,7 +2104,7 @@ extern "C" void FIO_SetPositionFromBeginning (FIO_File f, long int pos)
               else
                 {
                   fd->state = failed;
-                  fd->abspos = static_cast<long int> (0);
+                  fd->abspos = 0;
                 }
               if (fd->buffer != NULL)
                 {
@@ -2128,7 +2128,7 @@ extern "C" void FIO_SetPositionFromEnd (FIO_File f, long int pos)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           FIO_FlushBuffer (f);
@@ -2140,10 +2140,10 @@ extern "C" void FIO_SetPositionFromEnd (FIO_File f, long int pos)
                 }
               else
                 {
-                  fd->buffer->left = static_cast<unsigned int> (0);
+                  fd->buffer->left = 0;
                 }
-              fd->buffer->position = static_cast<unsigned int> (0);
-              fd->buffer->filled = static_cast<unsigned int> (0);
+              fd->buffer->position = 0;
+              fd->buffer->filled = 0;
             }
           offset = libc_lseek (fd->unixfd, pos, SEEK_END);
           if (offset >= 0)
@@ -2153,8 +2153,8 @@ extern "C" void FIO_SetPositionFromEnd (FIO_File f, long int pos)
           else
             {
               fd->state = failed;
-              fd->abspos = static_cast<long int> (0);
-              offset = static_cast<long int> (0);
+              fd->abspos = 0;
+              offset = 0;
             }
           if (fd->buffer != NULL)
             {
@@ -2176,7 +2176,7 @@ extern "C" long int FIO_FindPosition (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd != NULL)
         {
           if ((fd->buffer == NULL) || ! fd->buffer->valid)
@@ -2189,7 +2189,7 @@ extern "C" long int FIO_FindPosition (FIO_File f)
             }
         }
     }
-  return static_cast<long int> (0);
+  return 0;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -2209,7 +2209,7 @@ extern "C" void FIO_GetFileName (FIO_File f, char *a, unsigned int _a_high)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd == NULL)
         {
           FormatError ((const char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96);
@@ -2225,7 +2225,7 @@ extern "C" void FIO_GetFileName (FIO_File f, char *a, unsigned int _a_high)
           else
             {
               p = static_cast<_T6> (fd->name.address);
-              i = static_cast<unsigned int> (0);
+              i = 0;
               while (((*p) != ASCII_nul) && (i <= _a_high))
                 {
                   a[i] = (*p);
@@ -2248,7 +2248,7 @@ extern "C" void * FIO_getFileName (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd == NULL)
         {
           FormatError ((const char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96);
@@ -2275,7 +2275,7 @@ extern "C" unsigned int FIO_getFileNameLength (FIO_File f)
 
   if (f != Error)
     {
-      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, static_cast<unsigned int> (f)));
+      fd = static_cast<FileDescriptor> (Indexing_GetIndice (FileInfo, f));
       if (fd == NULL)
         {
           FormatError ((const char *) "this file has probably been closed and not reopened successfully or alternatively never opened\\n", 96);
diff --git a/gcc/m2/mc-boot/GFormatStrings.c b/gcc/m2/mc-boot/GFormatStrings.c
index 6ce63a1381d..9811ba5d535 100644
--- a/gcc/m2/mc-boot/GFormatStrings.c
+++ b/gcc/m2/mc-boot/GFormatStrings.c
@@ -404,7 +404,7 @@ static DynamicStrings_String PerformFormatString (DynamicStrings_String fmt, int
             {
               leader = ' ';
             }
-          width = static_cast<int> (0);
+          width = 0;
           while (IsDigit (ch))
             {
               width = (width*10)+((int ) ( ((unsigned int) (ch))- ((unsigned int) ('0'))));
@@ -616,7 +616,7 @@ extern "C" DynamicStrings_String FormatStrings_Sprintf1 (DynamicStrings_String f
 
   DSdbEnter ();
   fmt = FormatStrings_HandleEscape (fmt);
-  i = static_cast<int> (0);
+  i = 0;
   s = FormatString (fmt, &i, DynamicStrings_InitString ((const char *) "", 0), (const unsigned char *) w, _w_high);
   s = HandlePercent (fmt, s, i);
   DSdbExit (s);
@@ -643,7 +643,7 @@ extern "C" DynamicStrings_String FormatStrings_Sprintf2 (DynamicStrings_String f
 
   DSdbEnter ();
   fmt = FormatStrings_HandleEscape (fmt);
-  i = static_cast<int> (0);
+  i = 0;
   s = FormatString (fmt, &i, DynamicStrings_InitString ((const char *) "", 0), (const unsigned char *) w1, _w1_high);
   s = FormatString (fmt, &i, s, (const unsigned char *) w2, _w2_high);
   s = HandlePercent (fmt, s, i);
@@ -673,7 +673,7 @@ extern "C" DynamicStrings_String FormatStrings_Sprintf3 (DynamicStrings_String f
 
   DSdbEnter ();
   fmt = FormatStrings_HandleEscape (fmt);
-  i = static_cast<int> (0);
+  i = 0;
   s = FormatString (fmt, &i, DynamicStrings_InitString ((const char *) "", 0), (const unsigned char *) w1, _w1_high);
   s = FormatString (fmt, &i, s, (const unsigned char *) w2, _w2_high);
   s = FormatString (fmt, &i, s, (const unsigned char *) w3, _w3_high);
@@ -706,7 +706,7 @@ extern "C" DynamicStrings_String FormatStrings_Sprintf4 (DynamicStrings_String f
 
   DSdbEnter ();
   fmt = FormatStrings_HandleEscape (fmt);
-  i = static_cast<int> (0);
+  i = 0;
   s = FormatString (fmt, &i, DynamicStrings_InitString ((const char *) "", 0), (const unsigned char *) w1, _w1_high);
   s = FormatString (fmt, &i, s, (const unsigned char *) w2, _w2_high);
   s = FormatString (fmt, &i, s, (const unsigned char *) w3, _w3_high);
@@ -737,7 +737,7 @@ extern "C" DynamicStrings_String FormatStrings_HandleEscape (DynamicStrings_Stri
   DSdbEnter ();
   d = DynamicStrings_InitString ((const char *) "", 0);
   i = DynamicStrings_Index (s, '\\', 0);
-  j = static_cast<int> (0);
+  j = 0;
   while (i >= 0)
     {
       if (i > 0)
diff --git a/gcc/m2/mc-boot/GIO.c b/gcc/m2/mc-boot/GIO.c
index f9fe71c703e..ea4c2d8c5d5 100644
--- a/gcc/m2/mc-boot/GIO.c
+++ b/gcc/m2/mc-boot/GIO.c
@@ -225,22 +225,22 @@ static void doraw (termios_TERMIOS term)
     *           termios_p->c_cflag &= ~(CSIZE | PARENB);
     *           termios_p->c_cflag |= CS8;
   */
-  setFlag (term, static_cast<termios_Flag> (termios_ignbrk), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_ibrkint), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_iparmrk), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_istrip), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_inlcr), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_igncr), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_icrnl), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_ixon), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_opost), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_lecho), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_lechonl), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_licanon), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_lisig), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_liexten), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_parenb), FALSE);
-  setFlag (term, static_cast<termios_Flag> (termios_cs8), TRUE);
+  setFlag (term, termios_ignbrk, FALSE);
+  setFlag (term, termios_ibrkint, FALSE);
+  setFlag (term, termios_iparmrk, FALSE);
+  setFlag (term, termios_istrip, FALSE);
+  setFlag (term, termios_inlcr, FALSE);
+  setFlag (term, termios_igncr, FALSE);
+  setFlag (term, termios_icrnl, FALSE);
+  setFlag (term, termios_ixon, FALSE);
+  setFlag (term, termios_opost, FALSE);
+  setFlag (term, termios_lecho, FALSE);
+  setFlag (term, termios_lechonl, FALSE);
+  setFlag (term, termios_licanon, FALSE);
+  setFlag (term, termios_lisig, FALSE);
+  setFlag (term, termios_liexten, FALSE);
+  setFlag (term, termios_parenb, FALSE);
+  setFlag (term, termios_cs8, TRUE);
 }
 
 
@@ -262,20 +262,20 @@ static void dononraw (termios_TERMIOS term)
     *           termios_p->c_cflag &= ~(CSIZE | PARENB);
     *           termios_p->c_cflag |= CS8;
   */
-  setFlag (term, static_cast<termios_Flag> (termios_ignbrk), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_ibrkint), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_iparmrk), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_istrip), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_inlcr), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_igncr), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_icrnl), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_ixon), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_opost), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_lecho), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_lechonl), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_licanon), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_lisig), TRUE);
-  setFlag (term, static_cast<termios_Flag> (termios_liexten), TRUE);
+  setFlag (term, termios_ignbrk, TRUE);
+  setFlag (term, termios_ibrkint, TRUE);
+  setFlag (term, termios_iparmrk, TRUE);
+  setFlag (term, termios_istrip, TRUE);
+  setFlag (term, termios_inlcr, TRUE);
+  setFlag (term, termios_igncr, TRUE);
+  setFlag (term, termios_icrnl, TRUE);
+  setFlag (term, termios_ixon, TRUE);
+  setFlag (term, termios_opost, TRUE);
+  setFlag (term, termios_lecho, TRUE);
+  setFlag (term, termios_lechonl, TRUE);
+  setFlag (term, termios_licanon, TRUE);
+  setFlag (term, termios_lisig, TRUE);
+  setFlag (term, termios_liexten, TRUE);
 }
 
 
@@ -427,7 +427,7 @@ extern "C" void IO_EchoOn (int fd, unsigned int input)
   term = termios_InitTermios ();
   if ((termios_tcgetattr (fd, term)) == 0)
     {
-      setFlag (term, static_cast<termios_Flag> (termios_lecho), TRUE);
+      setFlag (term, termios_lecho, TRUE);
       if (input)
         {
           result = termios_tcsetattr (fd, termios_tcsflush (), term);
@@ -456,7 +456,7 @@ extern "C" void IO_EchoOff (int fd, unsigned int input)
   term = termios_InitTermios ();
   if ((termios_tcgetattr (fd, term)) == 0)
     {
-      setFlag (term, static_cast<termios_Flag> (termios_lecho), FALSE);
+      setFlag (term, termios_lecho, FALSE);
       if (input)
         {
           result = termios_tcsetattr (fd, termios_tcsflush (), term);
diff --git a/gcc/m2/mc-boot/GIndexing.c b/gcc/m2/mc-boot/GIndexing.c
index e0f3f384457..5fd740cb11d 100644
--- a/gcc/m2/mc-boot/GIndexing.c
+++ b/gcc/m2/mc-boot/GIndexing.c
@@ -166,12 +166,12 @@ extern "C" Indexing_Index Indexing_InitIndex (unsigned int low)
 
   Storage_ALLOCATE ((void **) &i, sizeof (_T2));
   i->Low = low;
-  i->High = static_cast<unsigned int> (0);
-  i->ArraySize = static_cast<unsigned int> (MinSize);
+  i->High = 0;
+  i->ArraySize = MinSize;
   Storage_ALLOCATE (&i->ArrayStart, MinSize);
   i->ArrayStart = libc_memset (i->ArrayStart, 0, static_cast<size_t> (i->ArraySize));
   i->Debug = FALSE;
-  i->Used = static_cast<unsigned int> (0);
+  i->Used = 0;
   i->Map = (unsigned int) 0;
   return i;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -187,7 +187,7 @@ extern "C" Indexing_Index Indexing_KillIndex (Indexing_Index i)
 {
   Storage_DEALLOCATE (&i->ArrayStart, i->ArraySize);
   Storage_DEALLOCATE ((void **) &i, sizeof (_T2));
-  return static_cast<Indexing_Index> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
diff --git a/gcc/m2/mc-boot/GM2RTS.c b/gcc/m2/mc-boot/GM2RTS.c
index 8e9f6b8e5e6..a21dc6a30c0 100644
--- a/gcc/m2/mc-boot/GM2RTS.c
+++ b/gcc/m2/mc-boot/GM2RTS.c
@@ -412,7 +412,7 @@ extern "C" unsigned int M2RTS_Length (const char *a_, unsigned int _a_high)
   /* make a local copy of each unbounded array.  */
   memcpy (a, a_, _a_high+1);
 
-  l = static_cast<unsigned int> (0);
+  l = 0;
   h = _a_high;
   while ((l <= h) && (a[l] != ASCII_nul))
     {
@@ -548,9 +548,9 @@ extern "C" void M2RTS_NoException (void * filename, unsigned int line, unsigned
 
 extern "C" void _M2_M2RTS_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
 {
-  iPtr = static_cast<unsigned int> (0);
-  tPtr = static_cast<unsigned int> (0);
-  ExitValue = static_cast<int> (0);
+  iPtr = 0;
+  tPtr = 0;
+  ExitValue = 0;
   isHalting = FALSE;
   CallExit = FALSE;  /* default by calling abort  */
 }
diff --git a/gcc/m2/mc-boot/GNumberIO.c b/gcc/m2/mc-boot/GNumberIO.c
index e0be3a1ddf2..0fd21573a86 100644
--- a/gcc/m2/mc-boot/GNumberIO.c
+++ b/gcc/m2/mc-boot/GNumberIO.c
@@ -154,7 +154,7 @@ extern "C" void NumberIO_CardToStr (unsigned int x, unsigned int n, char *a, uns
   unsigned int Higha;
   _T7 buf;
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     i += 1;
     if (i > MaxDigits)
@@ -167,7 +167,7 @@ extern "C" void NumberIO_CardToStr (unsigned int x, unsigned int n, char *a, uns
     buf.array[i-1] = x % 10;
     x = x / 10;
   } while (! (x == 0));
-  j = static_cast<unsigned int> (0);
+  j = 0;
   Higha = _a_high;
   while ((n > i) && (j <= Higha))
     {
@@ -199,7 +199,7 @@ extern "C" void NumberIO_StrToCard (const char *a_, unsigned int _a_high, unsign
 
   StrLib_StrRemoveWhitePrefix ((const char *) a, _a_high, (char *) a, _a_high);
   higha = StrLib_StrLen ((const char *) a, _a_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   ok = TRUE;
   while (ok)
     {
@@ -219,12 +219,12 @@ extern "C" void NumberIO_StrToCard (const char *a_, unsigned int _a_high, unsign
           ok = FALSE;
         }
     }
-  (*x) = static_cast<unsigned int> (0);
+  (*x) = 0;
   if (i < higha)
     {
       ok = TRUE;
       do {
-        (*x) = static_cast<unsigned int> ((10*(*x))+( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
+        (*x) = (10*(*x))+( ((unsigned int) (a[i]))- ((unsigned int) ('0')));
         if (i < higha)
           {
             /* avoid dangling else.  */
@@ -252,7 +252,7 @@ extern "C" void NumberIO_HexToStr (unsigned int x, unsigned int n, char *a, unsi
   unsigned int Higha;
   _T8 buf;
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     i += 1;
     if (i > MaxHexDigits)
@@ -265,7 +265,7 @@ extern "C" void NumberIO_HexToStr (unsigned int x, unsigned int n, char *a, unsi
     buf.array[i-1] = x % 0x010;
     x = x / 0x010;
   } while (! (x == 0));
-  j = static_cast<unsigned int> (0);
+  j = 0;
   Higha = _a_high;
   while ((n > i) && (j <= Higha))
     {
@@ -328,10 +328,10 @@ extern "C" void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int
     }
   else
     {
-      c = static_cast<unsigned int> (x);
+      c = x;
       Negative = FALSE;
     }
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     i += 1;
     if (i > MaxDigits)
@@ -344,7 +344,7 @@ extern "C" void NumberIO_IntToStr (int x, unsigned int n, char *a, unsigned int
     buf.array[i-1] = c % 10;
     c = c / 10;
   } while (! (c == 0));
-  j = static_cast<unsigned int> (0);
+  j = 0;
   Higha = _a_high;
   while ((n > i) && (j <= Higha))
     {
@@ -382,7 +382,7 @@ extern "C" void NumberIO_StrToInt (const char *a_, unsigned int _a_high, int *x)
 
   StrLib_StrRemoveWhitePrefix ((const char *) a, _a_high, (char *) a, _a_high);
   higha = StrLib_StrLen ((const char *) a, _a_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   Negative = FALSE;
   ok = TRUE;
   while (ok)
@@ -410,18 +410,18 @@ extern "C" void NumberIO_StrToInt (const char *a_, unsigned int _a_high, int *x)
           ok = FALSE;
         }
     }
-  (*x) = static_cast<int> (0);
+  (*x) = 0;
   if (i < higha)
     {
       ok = TRUE;
       do {
         if (Negative)
           {
-            (*x) = static_cast<int> ((10*(*x))-((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))));
+            (*x) = (10*(*x))-((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
           }
         else
           {
-            (*x) = static_cast<int> ((10*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))));
+            (*x) = (10*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
           }
         if (i < higha)
           {
@@ -472,7 +472,7 @@ extern "C" void NumberIO_OctToStr (unsigned int x, unsigned int n, char *a, unsi
   unsigned int Higha;
   _T12 buf;
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     i += 1;
     if (i > MaxOctDigits)
@@ -485,7 +485,7 @@ extern "C" void NumberIO_OctToStr (unsigned int x, unsigned int n, char *a, unsi
     buf.array[i-1] = x % 8;
     x = x / 8;
   } while (! (x == 0));
-  j = static_cast<unsigned int> (0);
+  j = 0;
   Higha = _a_high;
   while ((n > i) && (j <= Higha))
     {
@@ -549,7 +549,7 @@ extern "C" void NumberIO_BinToStr (unsigned int x, unsigned int n, char *a, unsi
   unsigned int Higha;
   _T15 buf;
 
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     i += 1;
     if (i > MaxBits)
@@ -562,7 +562,7 @@ extern "C" void NumberIO_BinToStr (unsigned int x, unsigned int n, char *a, unsi
     buf.array[i-1] = x % 2;
     x = x / 2;
   } while (! (x == 0));
-  j = static_cast<unsigned int> (0);
+  j = 0;
   Higha = _a_high;
   while ((n > i) && (j <= Higha))
     {
@@ -606,7 +606,7 @@ extern "C" void NumberIO_StrToBinInt (const char *a_, unsigned int _a_high, int
 
   StrLib_StrRemoveWhitePrefix ((const char *) a, _a_high, (char *) a, _a_high);
   higha = StrLib_StrLen ((const char *) a, _a_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   ok = TRUE;
   while (ok)
     {
@@ -626,12 +626,12 @@ extern "C" void NumberIO_StrToBinInt (const char *a_, unsigned int _a_high, int
           ok = FALSE;
         }
     }
-  (*x) = static_cast<int> (0);
+  (*x) = 0;
   if (i < higha)
     {
       ok = TRUE;
       do {
-        (*x) = static_cast<int> ((2*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))));
+        (*x) = (2*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
         if (i < higha)
           {
             /* avoid dangling else.  */
@@ -661,7 +661,7 @@ extern "C" void NumberIO_StrToHexInt (const char *a_, unsigned int _a_high, int
 
   StrLib_StrRemoveWhitePrefix ((const char *) a, _a_high, (char *) a, _a_high);
   higha = StrLib_StrLen ((const char *) a, _a_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   ok = TRUE;
   while (ok)
     {
@@ -681,19 +681,19 @@ extern "C" void NumberIO_StrToHexInt (const char *a_, unsigned int _a_high, int
           ok = FALSE;
         }
     }
-  (*x) = static_cast<int> (0);
+  (*x) = 0;
   if (i < higha)
     {
       ok = TRUE;
       do {
         if ((a[i] >= '0') && (a[i] <= '9'))
           {
-            (*x) = static_cast<int> ((0x010*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))));
+            (*x) = (0x010*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
           }
         else if ((a[i] >= 'A') && (a[i] <= 'F'))
           {
             /* avoid dangling else.  */
-            (*x) = static_cast<int> ((0x010*(*x))+((int ) (( ((unsigned int) (a[i]))- ((unsigned int) ('A')))+10)));
+            (*x) = (0x010*(*x))+((int ) (( ((unsigned int) (a[i]))- ((unsigned int) ('A')))+10));
           }
         if (i < higha)
           {
@@ -724,7 +724,7 @@ extern "C" void NumberIO_StrToOctInt (const char *a_, unsigned int _a_high, int
 
   StrLib_StrRemoveWhitePrefix ((const char *) a, _a_high, (char *) a, _a_high);
   higha = StrLib_StrLen ((const char *) a, _a_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   ok = TRUE;
   while (ok)
     {
@@ -744,12 +744,12 @@ extern "C" void NumberIO_StrToOctInt (const char *a_, unsigned int _a_high, int
           ok = FALSE;
         }
     }
-  (*x) = static_cast<int> (0);
+  (*x) = 0;
   if (i < higha)
     {
       ok = TRUE;
       do {
-        (*x) = static_cast<int> ((8*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0')))));
+        (*x) = (8*(*x))+((int ) ( ((unsigned int) (a[i]))- ((unsigned int) ('0'))));
         if (i < higha)
           {
             /* avoid dangling else.  */
diff --git a/gcc/m2/mc-boot/GPushBackInput.c b/gcc/m2/mc-boot/GPushBackInput.c
index c1168e08d35..f5e348b3867 100644
--- a/gcc/m2/mc-boot/GPushBackInput.c
+++ b/gcc/m2/mc-boot/GPushBackInput.c
@@ -184,10 +184,10 @@ static void ErrChar (char ch)
 
 static void Init (void)
 {
-  ExitStatus = static_cast<unsigned int> (0);
-  StackPtr = static_cast<unsigned int> (0);
-  LineNo = static_cast<unsigned int> (1);
-  Column = static_cast<unsigned int> (0);
+  ExitStatus = 0;
+  StackPtr = 0;
+  LineNo = 1;
+  Column = 0;
 }
 
 
@@ -241,7 +241,7 @@ extern "C" char PushBackInput_GetCh (FIO_File f)
           } while (! (((ch != ASCII_cr) || (FIO_EOF (f))) || (! (FIO_IsNoError (f)))));
           if (ch == ASCII_lf)
             {
-              Column = static_cast<unsigned int> (0);
+              Column = 0;
               LineNo += 1;
             }
           else
@@ -372,7 +372,7 @@ extern "C" void PushBackInput_WarnError (const char *a_, unsigned int _a_high)
   StrIO_WriteString ((const char *) a, _a_high);
   StrIO_WriteLn ();
   StdIO_PopOutput ();
-  ExitStatus = static_cast<unsigned int> (1);
+  ExitStatus = 1;
 }
 
 
@@ -411,7 +411,7 @@ extern "C" void PushBackInput_WarnString (DynamicStrings_String s)
         p += 1;
       }
   } while (! ((p == NULL) || ((*p) == ASCII_nul)));
-  ExitStatus = static_cast<unsigned int> (1);
+  ExitStatus = 1;
 }
 
 
@@ -455,7 +455,7 @@ extern "C" unsigned int PushBackInput_GetColumnPosition (void)
 {
   if (StackPtr > Column)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
diff --git a/gcc/m2/mc-boot/GRTExceptions.c b/gcc/m2/mc-boot/GRTExceptions.c
index eb776ac5a33..f64a6707a5c 100644
--- a/gcc/m2/mc-boot/GRTExceptions.c
+++ b/gcc/m2/mc-boot/GRTExceptions.c
@@ -457,7 +457,7 @@ static Handler findHandler (RTExceptions_EHBlock e, unsigned int number)
     }
   if (h == e->handlers)
     {
-      return static_cast<Handler> (NULL);
+      return NULL;
     }
   else
     {
@@ -652,7 +652,7 @@ static Handler KillHandler (Handler h)
 {
   h->right = freeHandler;
   freeHandler = h;
-  return static_cast<Handler> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -666,7 +666,7 @@ static Handler KillHandlers (Handler h)
 {
   h->left->right = freeHandler;
   freeHandler = h;
-  return static_cast<Handler> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -870,8 +870,8 @@ static void exception (void * a)
 static void Init (void)
 {
   inException = FALSE;
-  freeHandler = static_cast<Handler> (NULL);
-  freeEHB = static_cast<RTExceptions_EHBlock> (NULL);
+  freeHandler = NULL;
+  freeEHB = NULL;
   currentEHB = RTExceptions_InitExceptionBlock ();
   currentSource = NULL;
   RTExceptions_BaseExceptionsThrow ();
@@ -918,7 +918,7 @@ extern "C" void RTExceptions_Raise (unsigned int number, void * file, unsigned i
   unsigned int i;
 
   currentEHB->number = number;
-  i = static_cast<unsigned int> (0);
+  i = 0;
   addFile (file, &i);
   addChar (':', &i);
   addNum (line, &i);
@@ -1032,7 +1032,7 @@ extern "C" RTExceptions_EHBlock RTExceptions_KillExceptionBlock (RTExceptions_EH
   e->handlers = KillHandlers (e->handlers);
   e->right = freeEHB;
   freeEHB = e;
-  return static_cast<RTExceptions_EHBlock> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -1050,14 +1050,14 @@ extern "C" void RTExceptions_PushHandler (RTExceptions_EHBlock e, unsigned int n
   h = findHandler (e, number);
   if (h == NULL)
     {
-      i = InitHandler (NewHandler (), reinterpret_cast<Handler> (NULL), reinterpret_cast<Handler> (NULL), reinterpret_cast<Handler> (NULL), number, p);
+      i = InitHandler (NewHandler (), NULL, NULL, NULL, number, p);
     }
   else
     {
       /* remove, h,  */
       SubHandler (h);
       /* stack it onto a new handler  */
-      i = InitHandler (NewHandler (), reinterpret_cast<Handler> (NULL), reinterpret_cast<Handler> (NULL), h, number, p);
+      i = InitHandler (NewHandler (), NULL, NULL, h, number, p);
     }
   /* add new handler  */
   AddHandler (e, i);
diff --git a/gcc/m2/mc-boot/GRTint.c b/gcc/m2/mc-boot/GRTint.c
index 55246faf725..8f1920c5a00 100644
--- a/gcc/m2/mc-boot/GRTint.c
+++ b/gcc/m2/mc-boot/GRTint.c
@@ -299,7 +299,7 @@ static Vector FindVector (int fd, VectorType t)
         }
       v = v->exists;
     }
-  return static_cast<Vector> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -345,7 +345,7 @@ static Vector FindPendingVector (unsigned int vec)
           return v;
         }
     }
-  return static_cast<Vector> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -487,14 +487,14 @@ static void SubTime (unsigned int *s, unsigned int *m, Selective_Timeval a, Sele
         {
           Assertion_Assert ((*s) > 0);
           (*s) -= 1;
-          (*m) = static_cast<unsigned int> ((Microseconds+am)-bm);
+          (*m) = (Microseconds+am)-bm;
           Assertion_Assert ((*m) < Microseconds);
         }
     }
   else
     {
-      (*s) = static_cast<unsigned int> (0);
-      (*m) = static_cast<unsigned int> (0);
+      (*s) = 0;
+      (*m) = 0;
     }
 }
 
@@ -619,10 +619,10 @@ static void init (void)
 
   lock = RTco_initSemaphore (1);
   RTco_wait (lock);
-  Exists = static_cast<Vector> (NULL);
+  Exists = NULL;
   for (p=COROUTINES_UnassignedPriority; p<=7; p++)
     {
-      Pending.array[p-(COROUTINES_UnassignedPriority)] = reinterpret_cast<_T1 *> (NULL);
+      Pending.array[p-(COROUTINES_UnassignedPriority)] = NULL;
     }
   initialized = TRUE;
   RTco_signal (lock);
@@ -643,7 +643,7 @@ extern "C" unsigned int RTint_InitInputVector (int fd, unsigned int pri)
       libc_printf ((const char *) "InitInputVector fd = %d priority = %d\\n", 39, fd, pri);
     }
   RTco_wait (lock);
-  v = FindVector (fd, static_cast<VectorType> (input));
+  v = FindVector (fd, input);
   if (v == NULL)
     {
       Storage_ALLOCATE ((void **) &v, sizeof (_T1));
@@ -651,7 +651,7 @@ extern "C" unsigned int RTint_InitInputVector (int fd, unsigned int pri)
       v->type = input;
       v->priority = pri;
       v->arg = NULL;
-      v->pending = static_cast<Vector> (NULL);
+      v->pending = NULL;
       v->exists = Exists;
       v->no = VecNo;
       v->File = fd;
@@ -679,7 +679,7 @@ extern "C" unsigned int RTint_InitOutputVector (int fd, unsigned int pri)
   Vector v;
 
   RTco_wait (lock);
-  v = FindVector (fd, static_cast<VectorType> (output));
+  v = FindVector (fd, output);
   if (v == NULL)
     {
       Storage_ALLOCATE ((void **) &v, sizeof (_T1));
@@ -694,7 +694,7 @@ extern "C" unsigned int RTint_InitOutputVector (int fd, unsigned int pri)
           v->type = output;
           v->priority = pri;
           v->arg = NULL;
-          v->pending = static_cast<Vector> (NULL);
+          v->pending = NULL;
           v->exists = Exists;
           v->no = VecNo;
           v->File = fd;
@@ -736,7 +736,7 @@ extern "C" unsigned int RTint_InitTimeVector (unsigned int micro, unsigned int s
       v->type = time_;
       v->priority = pri;
       v->arg = NULL;
-      v->pending = static_cast<Vector> (NULL);
+      v->pending = NULL;
       v->exists = Exists;
       v->no = VecNo;
       v->rel = Selective_InitTime (secs+DebugTime, micro);
@@ -965,7 +965,7 @@ extern "C" void RTint_Listen (unsigned int untilInterrupt, RTint_DispatchVector
         {
           DumpPendingQueue ();
         }
-      maxFd = static_cast<int> (-1);
+      maxFd = -1;
       t = NULL;
       i = NULL;
       o = NULL;
@@ -1047,21 +1047,21 @@ extern "C" void RTint_Listen (unsigned int untilInterrupt, RTint_DispatchVector
               {
                 libc_printf ((const char *) "select (.., .., .., %u.%06u)\\n", 30, s, m);
               }
-            r = RTco_select (maxFd+1, reinterpret_cast<void *> (i), reinterpret_cast<void *> (o), NULL, reinterpret_cast<void *> (t));
+            r = RTco_select (maxFd+1, i, o, NULL, t);
             if (r == -1)
               {
                 libc_perror ((const char *) "select", 6);
-                r = RTco_select (maxFd+1, reinterpret_cast<void *> (i), reinterpret_cast<void *> (o), NULL, NULL);
+                r = RTco_select (maxFd+1, i, o, NULL, NULL);
                 if (r == -1)
                   {
                     libc_perror ((const char *) "select timeout argument is faulty", 33);
                   }
-                r = RTco_select (maxFd+1, reinterpret_cast<void *> (i), NULL, NULL, reinterpret_cast<void *> (t));
+                r = RTco_select (maxFd+1, i, NULL, NULL, t);
                 if (r == -1)
                   {
                     libc_perror ((const char *) "select output fd argument is faulty", 35);
                   }
-                r = RTco_select (maxFd+1, NULL, reinterpret_cast<void *> (o), NULL, reinterpret_cast<void *> (t));
+                r = RTco_select (maxFd+1, NULL, o, NULL, t);
                 if (r == -1)
                   {
                     libc_perror ((const char *) "select input fd argument is faulty", 34);
diff --git a/gcc/m2/mc-boot/GStdIO.c b/gcc/m2/mc-boot/GStdIO.c
index 50e00023a19..f8ed55323d7 100644
--- a/gcc/m2/mc-boot/GStdIO.c
+++ b/gcc/m2/mc-boot/GStdIO.c
@@ -258,8 +258,8 @@ extern "C" StdIO_ProcRead StdIO_GetCurrentInput (void)
 
 extern "C" void _M2_StdIO_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
 {
-  StackWPtr = static_cast<unsigned int> (0);
-  StackRPtr = static_cast<unsigned int> (0);
+  StackWPtr = 0;
+  StackRPtr = 0;
   StdIO_PushOutput ((StdIO_ProcWrite) {(StdIO_ProcWrite_t) IO_Write});
   StdIO_PushInput ((StdIO_ProcRead) {(StdIO_ProcRead_t) IO_Read});
 }
diff --git a/gcc/m2/mc-boot/GStrCase.c b/gcc/m2/mc-boot/GStrCase.c
index b709c892ec0..6917e1799d1 100644
--- a/gcc/m2/mc-boot/GStrCase.c
+++ b/gcc/m2/mc-boot/GStrCase.c
@@ -88,7 +88,7 @@ extern "C" void StrCase_StrToUpperCase (const char *a_, unsigned int _a_high, ch
 
   higha = StrLib_StrLen ((const char *) a, _a_high);
   highb = _b_high;
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while (((i < higha) && (a[i] != ASCII_nul)) && (i < highb))
     {
       b[i] = StrCase_Cap (a[i]);
@@ -118,7 +118,7 @@ extern "C" void StrCase_StrToLowerCase (const char *a_, unsigned int _a_high, ch
 
   higha = StrLib_StrLen ((const char *) a, _a_high);
   highb = _b_high;
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while (((i < higha) && (a[i] != ASCII_nul)) && (i < highb))
     {
       b[i] = StrCase_Lower (a[i]);
diff --git a/gcc/m2/mc-boot/GStrIO.c b/gcc/m2/mc-boot/GStrIO.c
index ee1e6acd2ed..9f194a767c9 100644
--- a/gcc/m2/mc-boot/GStrIO.c
+++ b/gcc/m2/mc-boot/GStrIO.c
@@ -152,7 +152,7 @@ extern "C" void StrIO_ReadString (char *a, unsigned int _a_high)
   char ch;
 
   high = _a_high;
-  n = static_cast<unsigned int> (0);
+  n = 0;
   do {
     StdIO_Read (&ch);
     if ((ch == ASCII_del) || (ch == ASCII_bs))
@@ -258,7 +258,7 @@ extern "C" void StrIO_WriteString (const char *a_, unsigned int _a_high)
   memcpy (a, a_, _a_high+1);
 
   high = _a_high;
-  n = static_cast<unsigned int> (0);
+  n = 0;
   while ((n <= high) && (a[n] != ASCII_nul))
     {
       StdIO_Write (a[n]);
diff --git a/gcc/m2/mc-boot/GStrLib.c b/gcc/m2/mc-boot/GStrLib.c
index a7e9b2c34e6..da7d2bcdaf0 100644
--- a/gcc/m2/mc-boot/GStrLib.c
+++ b/gcc/m2/mc-boot/GStrLib.c
@@ -123,7 +123,7 @@ extern "C" void StrLib_StrConCat (const char *a_, unsigned int _a_high, const ch
   Highc = _c_high;
   StrLib_StrCopy ((const char *) a, _a_high, (char *) c, _c_high);
   i = StrLib_StrLen ((const char *) c, _c_high);
-  j = static_cast<unsigned int> (0);
+  j = 0;
   while ((j < Highb) && (i <= Highc))
     {
       c[i] = b[j];
@@ -156,7 +156,7 @@ extern "C" unsigned int StrLib_StrLess (const char *a_, unsigned int _a_high, co
 
   Higha = StrLib_StrLen ((const char *) a, _a_high);
   Highb = StrLib_StrLen ((const char *) b, _b_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while ((i < Higha) && (i < Highb))
     {
       if (a[i] < b[i])
@@ -190,7 +190,7 @@ extern "C" unsigned int StrLib_StrEqual (const char *a_, unsigned int _a_high, c
 
   higha = _a_high;
   highb = _b_high;
-  i = static_cast<unsigned int> (0);
+  i = 0;
   while ((((i <= higha) && (i <= highb)) && (a[i] != ASCII_nul)) && (b[i] != ASCII_nul))
     {
       if (a[i] != b[i])
@@ -213,7 +213,7 @@ extern "C" unsigned int StrLib_StrLen (const char *a_, unsigned int _a_high)
   /* make a local copy of each unbounded array.  */
   memcpy (a, a_, _a_high+1);
 
-  Len = static_cast<unsigned int> (0);
+  Len = 0;
   High = _a_high;
   while ((Len <= High) && (a[Len] != ASCII_nul))
     {
@@ -241,7 +241,7 @@ extern "C" void StrLib_StrCopy (const char *src_, unsigned int _src_high, char *
   /* make a local copy of each unbounded array.  */
   memcpy (src, src_, _src_high+1);
 
-  n = static_cast<unsigned int> (0);
+  n = 0;
   HighSrc = StrLib_StrLen ((const char *) src, _src_high);
   HighDest = _dest_high;
   while ((n < HighSrc) && (n <= HighDest))
@@ -275,12 +275,12 @@ extern "C" unsigned int StrLib_IsSubString (const char *a_, unsigned int _a_high
 
   LengthA = StrLib_StrLen ((const char *) a, _a_high);
   LengthB = StrLib_StrLen ((const char *) b, _b_high);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   if (LengthA > LengthB)
     {
       while (i <= (LengthA-LengthB))
         {
-          j = static_cast<unsigned int> (0);
+          j = 0;
           while ((j < LengthB) && (a[i+j] == b[j]))
             {
               j += 1;
@@ -317,8 +317,8 @@ extern "C" void StrLib_StrRemoveWhitePrefix (const char *a_, unsigned int _a_hig
   /* make a local copy of each unbounded array.  */
   memcpy (a, a_, _a_high+1);
 
-  i = static_cast<unsigned int> (0);
-  j = static_cast<unsigned int> (0);
+  i = 0;
+  j = 0;
   higha = StrLib_StrLen ((const char *) a, _a_high);
   highb = _b_high;
   while ((i < higha) && (IsWhite (a[i])))
diff --git a/gcc/m2/mc-boot/GStringConvert.c b/gcc/m2/mc-boot/GStringConvert.c
index 80f0b06e927..e5d7c963db3 100644
--- a/gcc/m2/mc-boot/GStringConvert.c
+++ b/gcc/m2/mc-boot/GStringConvert.c
@@ -681,7 +681,7 @@ static long double ToThePower10 (long double v, int power)
 {
   int i;
 
-  i = static_cast<int> (0);
+  i = 0;
   if (power > 0)
     {
       while (i < power)
@@ -717,7 +717,7 @@ static unsigned int DetermineSafeTruncation (void)
   unsigned int LogPower;
 
   MaxPowerOfTen = static_cast<double> (1.0);
-  LogPower = static_cast<unsigned int> (0);
+  LogPower = 0;
   while ((MaxPowerOfTen*10.0) < ((double) ((INT_MAX) / 10)))
     {
       MaxPowerOfTen = MaxPowerOfTen*10.0;
@@ -774,8 +774,8 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
   DynamicStrings_String tenths;
   DynamicStrings_String hundreths;
 
-  l = static_cast<int> (DynamicStrings_Length (s));
-  i = static_cast<int> (0);
+  l = DynamicStrings_Length (s);
+  i = 0;
   /* remove '.'  */
   point = DynamicStrings_Index (s, '.', 0);
   if (point == 0)
@@ -792,8 +792,8 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
       /* avoid dangling else.  */
       s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, point);
     }
-  l = static_cast<int> (DynamicStrings_Length (s));
-  i = static_cast<int> (0);
+  l = DynamicStrings_Length (s);
+  i = 0;
   if (l > 0)
     {
       /* skip over leading zeros  */
@@ -812,7 +812,7 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
   /* insert leading zero  */
   s = DynamicStrings_ConCat (DynamicStrings_InitStringChar ('0'), DynamicStrings_Mark (s));
   point += 1;  /* and move point position to correct place  */
-  l = static_cast<int> (DynamicStrings_Length (s));  /* update new length  */
+  l = DynamicStrings_Length (s);  /* update new length  */
   i = point;  /* update new length  */
   while ((n > 1) && (i < l))
     {
@@ -852,7 +852,7 @@ static DynamicStrings_String doDecimalPlaces (DynamicStrings_String s, unsigned
   if (i < l)
     {
       s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i);
-      l = static_cast<int> (DynamicStrings_Length (s));
+      l = DynamicStrings_Length (s);
       if (l < point)
         {
           s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), static_cast<unsigned int> (point-l)));
@@ -893,8 +893,8 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
   DynamicStrings_String tenths;
   DynamicStrings_String hundreths;
 
-  l = static_cast<int> (DynamicStrings_Length (s));
-  i = static_cast<int> (0);
+  l = DynamicStrings_Length (s);
+  i = 0;
   /* remove '.'  */
   point = DynamicStrings_Index (s, '.', 0);
   if (point >= 0)
@@ -918,8 +918,8 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
     {
       s = DynamicStrings_Dup (DynamicStrings_Mark (s));
     }
-  l = static_cast<int> (DynamicStrings_Length (s));
-  i = static_cast<int> (0);
+  l = DynamicStrings_Length (s);
+  i = 0;
   if (l > 0)
     {
       /* skip over leading zeros  */
@@ -932,7 +932,7 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
         {
           /* truncate string  */
           s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, static_cast<int> (n));
-          i = static_cast<int> (n);
+          i = n;
         }
     }
   /* add a leading zero in case we need to overflow the carry  */
@@ -946,7 +946,7 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
       s = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i), '0'), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), i, 0)));
     }
   n += 1;  /* and increase the number of sig figs needed  */
-  l = static_cast<int> (DynamicStrings_Length (s));  /* and increase the number of sig figs needed  */
+  l = DynamicStrings_Length (s);  /* and increase the number of sig figs needed  */
   while ((n > 1) && (i < l))
     {
       n -= 1;
@@ -986,7 +986,7 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
         {
           s = DynamicStrings_ConCat (DynamicStrings_Slice (DynamicStrings_Mark (s), 0, z), DynamicStrings_Mark (DynamicStrings_Slice (DynamicStrings_Mark (s), z+1, 0)));
         }
-      l = static_cast<int> (DynamicStrings_Length (s));
+      l = DynamicStrings_Length (s);
     }
   else
     {
@@ -995,7 +995,7 @@ static DynamicStrings_String doSigFig (DynamicStrings_String s, unsigned int n)
   if (i < l)
     {
       s = DynamicStrings_Slice (DynamicStrings_Mark (s), 0, i);
-      l = static_cast<int> (DynamicStrings_Length (s));
+      l = DynamicStrings_Length (s);
       if (l < point)
         {
           s = DynamicStrings_ConCat (s, DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), static_cast<unsigned int> (point-l)));
@@ -1205,8 +1205,8 @@ extern "C" int StringConvert_StringToInteger (DynamicStrings_String s, unsigned
 
   s = DynamicStrings_RemoveWhitePrefix (s);  /* returns a new string, s  */
   l = DynamicStrings_Length (s);  /* returns a new string, s  */
-  c = static_cast<unsigned int> (0);
-  n = static_cast<unsigned int> (0);
+  c = 0;
+  n = 0;
   negative = FALSE;
   if (n < l)
     {
@@ -1255,8 +1255,8 @@ extern "C" unsigned int StringConvert_StringToCardinal (DynamicStrings_String s,
 
   s = DynamicStrings_RemoveWhitePrefix (s);  /* returns a new string, s  */
   l = DynamicStrings_Length (s);  /* returns a new string, s  */
-  c = static_cast<unsigned int> (0);
-  n = static_cast<unsigned int> (0);
+  c = 0;
+  n = 0;
   if (n < l)
     {
       /* parse leading +  */
@@ -1376,8 +1376,8 @@ extern "C" long int StringConvert_StringToLongInteger (DynamicStrings_String s,
 
   s = DynamicStrings_RemoveWhitePrefix (s);  /* returns a new string, s  */
   l = DynamicStrings_Length (s);  /* returns a new string, s  */
-  c = static_cast<long unsigned int> (0);
-  n = static_cast<unsigned int> (0);
+  c = 0;
+  n = 0;
   negative = FALSE;
   if (n < l)
     {
@@ -1474,8 +1474,8 @@ extern "C" long unsigned int StringConvert_StringToLongCardinal (DynamicStrings_
 
   s = DynamicStrings_RemoveWhitePrefix (s);  /* returns a new string, s  */
   l = DynamicStrings_Length (s);  /* returns a new string, s  */
-  c = static_cast<long unsigned int> (0);
-  n = static_cast<unsigned int> (0);
+  c = 0;
+  n = 0;
   if (n < l)
     {
       /* parse leading +  */
@@ -1560,8 +1560,8 @@ extern "C" short unsigned int StringConvert_StringToShortCardinal (DynamicString
 
   s = DynamicStrings_RemoveWhitePrefix (s);  /* returns a new string, s  */
   l = DynamicStrings_Length (s);  /* returns a new string, s  */
-  c = static_cast<short unsigned int> (0);
-  n = static_cast<unsigned int> (0);
+  c = 0;
+  n = 0;
   if (n < l)
     {
       /* parse leading +  */
@@ -1773,15 +1773,15 @@ extern "C" DynamicStrings_String StringConvert_LongrealToString (long double x,
   if (TotalWidth == 0)
     {
       maxprecision = TRUE;
-      r = ldtoa_ldtoa (x, static_cast<ldtoa_Mode> (ldtoa_decimaldigits), 100, &point, &sign);
+      r = ldtoa_ldtoa (x, ldtoa_decimaldigits, 100, &point, &sign);
     }
   else
     {
-      r = ldtoa_ldtoa (x, static_cast<ldtoa_Mode> (ldtoa_decimaldigits), 100, &point, &sign);
+      r = ldtoa_ldtoa (x, ldtoa_decimaldigits, 100, &point, &sign);
     }
   s = DynamicStrings_InitStringCharStar (r);
   libc_free (r);
-  l = static_cast<int> (DynamicStrings_Length (s));
+  l = DynamicStrings_Length (s);
   if (point > l)
     {
       /* avoid dangling else.  */
@@ -1800,7 +1800,7 @@ extern "C" DynamicStrings_String StringConvert_LongrealToString (long double x,
     {
       /* avoid dangling else.  */
       s = DynamicStrings_ConCat (DynamicStrings_Mult (DynamicStrings_Mark (DynamicStrings_InitStringChar ('0')), static_cast<unsigned int> (-point)), DynamicStrings_Mark (s));
-      l = static_cast<int> (DynamicStrings_Length (s));
+      l = DynamicStrings_Length (s);
       s = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) "0.", 2), DynamicStrings_Mark (s));
       if (! maxprecision && (l < ((int ) (FractionWidth))))
         {
@@ -1924,7 +1924,7 @@ extern "C" DynamicStrings_String StringConvert_ToSigFig (DynamicStrings_String s
     }
   else
     {
-      poTen = static_cast<unsigned int> (point);
+      poTen = point;
     }
   s = doSigFig (s, n);
   /* if the last character is '.' remove it  */
diff --git a/gcc/m2/mc-boot/GSysStorage.c b/gcc/m2/mc-boot/GSysStorage.c
index 4f1f023da9e..cfca91b61d8 100644
--- a/gcc/m2/mc-boot/GSysStorage.c
+++ b/gcc/m2/mc-boot/GSysStorage.c
@@ -225,7 +225,7 @@ extern "C" void SysStorage_Init (void)
 
 extern "C" void _M2_SysStorage_init (__attribute__((unused)) int argc, __attribute__((unused)) char *argv[])
 {
-  callno = static_cast<unsigned int> (0);
+  callno = 0;
   if (enableTrace)
     {
       trace = (libc_getenv (const_cast<void*> (reinterpret_cast<const void*>("M2DEBUG_SYSSTORAGE_trace")))) != NULL;
diff --git a/gcc/m2/mc-boot/GTimeString.c b/gcc/m2/mc-boot/GTimeString.c
index cb843b4b748..bd22f16769c 100644
--- a/gcc/m2/mc-boot/GTimeString.c
+++ b/gcc/m2/mc-boot/GTimeString.c
@@ -66,7 +66,7 @@ extern "C" void TimeString_GetTimeString (char *a, unsigned int _a_high)
   unsigned int i;
 
   Addr = static_cast<_T1> (wrapc_strtime ());
-  i = static_cast<unsigned int> (0);
+  i = 0;
   if (Addr != NULL)
     {
       while ((i < _a_high) && ((*Addr) != ASCII_nul))
diff --git a/gcc/m2/mc-boot/Galists.c b/gcc/m2/mc-boot/Galists.c
index f4ea4a4cab0..0fd66a72045 100644
--- a/gcc/m2/mc-boot/Galists.c
+++ b/gcc/m2/mc-boot/Galists.c
@@ -172,8 +172,8 @@ extern "C" alists_alist alists_initList (void)
   alists_alist l;
 
   Storage_ALLOCATE ((void **) &l, sizeof (_T1));
-  l->noOfelements = static_cast<unsigned int> (0);
-  l->next = static_cast<alists_alist> (NULL);
+  l->noOfelements = 0;
+  l->next = NULL;
   return l;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -258,11 +258,11 @@ extern "C" unsigned int alists_getIndexOfList (alists_alist l, void * c)
 
   if (l == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
-      i = static_cast<unsigned int> (1);
+      i = 1;
       while (i <= l->noOfelements)
         {
           if (l->elements.array[i-1] == c)
@@ -291,11 +291,11 @@ extern "C" unsigned int alists_noOfItemsInList (alists_alist l)
 
   if (l == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
-      t = static_cast<unsigned int> (0);
+      t = 0;
       do {
         t += l->noOfelements;
         l = l->next;
@@ -335,9 +335,9 @@ extern "C" void alists_removeItemFromList (alists_alist l, void * c)
   if (l != NULL)
     {
       found = FALSE;
-      p = static_cast<alists_alist> (NULL);
+      p = NULL;
       do {
-        i = static_cast<unsigned int> (1);
+        i = 1;
         while ((i <= l->noOfelements) && (l->elements.array[i-1] != c))
           {
             i += 1;
@@ -369,7 +369,7 @@ extern "C" unsigned int alists_isItemInList (alists_alist l, void * c)
   unsigned int i;
 
   do {
-    i = static_cast<unsigned int> (1);
+    i = 1;
     while (i <= l->noOfelements)
       {
         if (l->elements.array[i-1] == c)
@@ -399,7 +399,7 @@ extern "C" void alists_foreachItemInListDo (alists_alist l, alists_performOperat
   unsigned int n;
 
   n = alists_noOfItemsInList (l);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= n)
     {
       (*p.proc) (alists_getItemFromList (l, i));
@@ -420,7 +420,7 @@ extern "C" alists_alist alists_duplicateList (alists_alist l)
 
   m = alists_initList ();
   n = alists_noOfItemsInList (l);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= n)
     {
       alists_putItemIntoList (m, alists_getItemFromList (l, i));
diff --git a/gcc/m2/mc-boot/Gdecl.c b/gcc/m2/mc-boot/Gdecl.c
index fd63295c032..3c7296364c0 100644
--- a/gcc/m2/mc-boot/Gdecl.c
+++ b/gcc/m2/mc-boot/Gdecl.c
@@ -3947,7 +3947,7 @@ static decl_node doGetFuncType (decl_node n);
 static decl_node doGetExprType (decl_node n);
 
 /*
-   getExprType -
+   getExprType - return the expression type.
 */
 
 static decl_node getExprType (decl_node n);
@@ -4906,7 +4906,19 @@ static void doAfterCommentC (mcPretty_pretty p, decl_node c);
 static void doReturnC (mcPretty_pretty p, decl_node s);
 
 /*
-   doExprCastC -
+   isZtypeEquivalent -
+*/
+
+static unsigned int isZtypeEquivalent (decl_node type);
+
+/*
+   isEquivalentType - returns TRUE if type1 and type2 are equivalent.
+*/
+
+static unsigned int isEquivalentType (decl_node type1, decl_node type2);
+
+/*
+   doExprCastC - build a cast if necessary.
 */
 
 static void doExprCastC (mcPretty_pretty p, decl_node e, decl_node type);
@@ -5061,7 +5073,8 @@ static void doAdrExprC (mcPretty_pretty p, decl_node n);
 static unsigned int typePair (decl_node a, decl_node b, decl_node x, decl_node y);
 
 /*
-   needsCast -
+   needsCast - return TRUE if the actual type parameter needs to be cast to
+               the formal type.
 */
 
 static unsigned int needsCast (decl_node at, decl_node ft);
@@ -5069,7 +5082,8 @@ static unsigned int needsCast (decl_node at, decl_node ft);
 /*
    checkSystemCast - checks to see if we are passing to/from
                      a system generic type (WORD, BYTE, ADDRESS)
-                     and if so emit a cast.
+                     and if so emit a cast.  It returns the number of
+                     open parenthesis.
 */
 
 static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_node formal);
@@ -6600,9 +6614,9 @@ static decl_node newNode (nodeT k)
   else
     {
       d->kind = k;
-      d->at.defDeclared = static_cast<unsigned int> (0);
-      d->at.modDeclared = static_cast<unsigned int> (0);
-      d->at.firstUsed = static_cast<unsigned int> (0);
+      d->at.defDeclared = 0;
+      d->at.modDeclared = 0;
+      d->at.firstUsed = 0;
       return d;
     }
   ReturnException ("/home/gaius/GM2/graft-combine/gcc-git-devel-modula2/gcc/m2/mc/decl.def", 20, 1);
@@ -6617,7 +6631,7 @@ static decl_node newNode (nodeT k)
 static void disposeNode (decl_node *n)
 {
   Storage_DEALLOCATE ((void **) &(*n), sizeof (_T5));
-  (*n) = static_cast<decl_node> (NULL);
+  (*n) = NULL;
 }
 
 
@@ -6728,7 +6742,7 @@ static fixupInfo initFixupInfo (void)
 {
   fixupInfo f;
 
-  f.count = static_cast<unsigned int> (0);
+  f.count = 0;
   f.info = Indexing_InitIndex (1);
   return f;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -6744,9 +6758,9 @@ static decl_node makeDef (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (def));
+  d = newNode (def);
   d->defF.name = n;
-  d->defF.source = static_cast<nameKey_Name> (nameKey_NulName);
+  d->defF.source = nameKey_NulName;
   d->defF.hasHidden = FALSE;
   d->defF.forC = FALSE;
   d->defF.exported = Indexing_InitIndex (1);
@@ -6772,16 +6786,16 @@ static decl_node makeImp (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (imp));
+  d = newNode (imp);
   d->impF.name = n;
-  d->impF.source = static_cast<nameKey_Name> (nameKey_NulName);
+  d->impF.source = nameKey_NulName;
   d->impF.importedModules = Indexing_InitIndex (1);
   d->impF.constFixup = initFixupInfo ();
   d->impF.enumFixup = initFixupInfo ();
   initDecls (&d->impF.decls);
-  d->impF.beginStatements = static_cast<decl_node> (NULL);
-  d->impF.finallyStatements = static_cast<decl_node> (NULL);
-  d->impF.definitionModule = static_cast<decl_node> (NULL);
+  d->impF.beginStatements = NULL;
+  d->impF.finallyStatements = NULL;
+  d->impF.definitionModule = NULL;
   d->impF.enumsComplete = FALSE;
   d->impF.constsComplete = FALSE;
   d->impF.visited = FALSE;
@@ -6800,15 +6814,15 @@ static decl_node makeModule (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (module));
+  d = newNode (module);
   d->moduleF.name = n;
-  d->moduleF.source = static_cast<nameKey_Name> (nameKey_NulName);
+  d->moduleF.source = nameKey_NulName;
   d->moduleF.importedModules = Indexing_InitIndex (1);
   d->moduleF.constFixup = initFixupInfo ();
   d->moduleF.enumFixup = initFixupInfo ();
   initDecls (&d->moduleF.decls);
-  d->moduleF.beginStatements = static_cast<decl_node> (NULL);
-  d->moduleF.finallyStatements = static_cast<decl_node> (NULL);
+  d->moduleF.beginStatements = NULL;
+  d->moduleF.finallyStatements = NULL;
   d->moduleF.enumsComplete = FALSE;
   d->moduleF.constsComplete = FALSE;
   d->moduleF.visited = FALSE;
@@ -7115,13 +7129,13 @@ static void makeVariablesFromParameters (decl_node proc, decl_node id, decl_node
 
   mcDebug_assert (decl_isProcedure (proc));
   mcDebug_assert (isIdentList (id));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   n = wlists_noOfItemsInList (id->identlistF.names);
   while (i <= n)
     {
       m = static_cast<nameKey_Name> (wlists_getItemFromList (id->identlistF.names, i));
       v = decl_makeVar (m);
-      decl_putVar (v, type, reinterpret_cast<decl_node> (NULL));
+      decl_putVar (v, type, NULL);
       putVarBool (v, TRUE, TRUE, isvar);
       if (debugScopes)
         {
@@ -7191,11 +7205,11 @@ static decl_node makeOptParameter (decl_node l, decl_node type, decl_node init)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (optarg_));
+  n = newNode (optarg_);
   n->optargF.namelist = l;
   n->optargF.type = type;
   n->optargF.init = init;
-  n->optargF.scope = static_cast<decl_node> (NULL);
+  n->optargF.scope = NULL;
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -7247,7 +7261,7 @@ static unsigned int identListLen (decl_node n)
 {
   if (n == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -7294,8 +7308,8 @@ static decl_node makeVarientField (decl_node v, decl_node p)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (varientfield));
-  n->varientfieldF.name = static_cast<nameKey_Name> (nameKey_NulName);
+  n = newNode (varientfield);
+  n->varientfieldF.name = nameKey_NulName;
   n->varientfieldF.parent = p;
   n->varientfieldF.varient = v;
   n->varientfieldF.simple = FALSE;
@@ -7354,7 +7368,7 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type,
   decl_node n;
   decl_node p;
 
-  n = newNode (static_cast<nodeT> (recordfield));
+  n = newNode (recordfield);
   switch (r->kind)
     {
       case record:
@@ -7396,7 +7410,7 @@ static decl_node putFieldRecord (decl_node r, nameKey_Name tag, decl_node type,
   n->recordfieldF.parent = r;
   n->recordfieldF.varient = v;
   n->recordfieldF.tag = FALSE;
-  n->recordfieldF.scope = static_cast<decl_node> (NULL);
+  n->recordfieldF.scope = NULL;
   initCname (&n->recordfieldF.cname);
   /* 
    IF r^.kind=record
@@ -7565,13 +7579,13 @@ static decl_node doMakeEnum (void)
 {
   decl_node e;
 
-  e = newNode (static_cast<nodeT> (enumeration));
-  e->enumerationF.noOfElements = static_cast<unsigned int> (0);
+  e = newNode (enumeration);
+  e->enumerationF.noOfElements = 0;
   e->enumerationF.localSymbols = symbolKey_initTree ();
   e->enumerationF.scope = decl_getDeclScope ();
   e->enumerationF.listOfSons = Indexing_InitIndex (1);
-  e->enumerationF.low = static_cast<decl_node> (NULL);
-  e->enumerationF.high = static_cast<decl_node> (NULL);
+  e->enumerationF.low = NULL;
+  e->enumerationF.high = NULL;
   addEnumToModule (currentModule, e);
   return e;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -7592,7 +7606,7 @@ static decl_node doMakeEnumField (decl_node e, nameKey_Name n)
   f = decl_lookupSym (n);
   if (f == NULL)
     {
-      f = newNode (static_cast<nodeT> (enumerationfield));
+      f = newNode (enumerationfield);
       symbolKey_putSymKey (e->enumerationF.localSymbols, n, reinterpret_cast<void *> (f));
       Indexing_IncludeIndiceIntoIndex (e->enumerationF.listOfSons, reinterpret_cast<void *> (f));
       f->enumerationfieldF.name = n;
@@ -7643,7 +7657,7 @@ static unsigned int expListLen (decl_node p)
 {
   if (p == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -7718,7 +7732,7 @@ static decl_node doMakeConstExp (void)
 {
   decl_node c;
 
-  c = makeUnary (static_cast<nodeT> (constexp), reinterpret_cast<decl_node> (NULL), reinterpret_cast<decl_node> (NULL));
+  c = makeUnary (constexp, NULL, NULL);
   addConstToModule (currentModule, c);
   return c;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -7775,7 +7789,7 @@ static decl_node makeVal (decl_node params)
   mcDebug_assert (decl_isExpList (params));
   if ((expListLen (params)) == 2)
     {
-      return makeBinary (static_cast<nodeT> (val), getExpList (params, 1), getExpList (params, 2), getExpList (params, 1));
+      return makeBinary (val, getExpList (params, 1), getExpList (params, 2), getExpList (params, 1));
     }
   else
     {
@@ -7796,7 +7810,7 @@ static decl_node makeCast (decl_node c, decl_node p)
   mcDebug_assert (decl_isExpList (p));
   if ((expListLen (p)) == 1)
     {
-      return makeBinary (static_cast<nodeT> (cast), c, getExpList (p, 1), c);
+      return makeBinary (cast, c, getExpList (p, 1), c);
     }
   else
     {
@@ -7817,7 +7831,7 @@ static decl_node makeIntrinsicProc (nodeT k, unsigned int noArgs, decl_node p)
   f = newNode (k);
   f->intrinsicF.args = p;
   f->intrinsicF.noArgs = noArgs;
-  f->intrinsicF.type = static_cast<decl_node> (NULL);
+  f->intrinsicF.type = NULL;
   f->intrinsicF.postUnreachable = k == halt;
   initPair (&f->intrinsicF.intrinsicComment);
   return f;
@@ -7866,17 +7880,17 @@ static decl_node checkIntrinsic (decl_node c, decl_node n)
   else if (c == maxN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (max), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicUnaryType (max, n, NULL);
     }
   else if (c == minN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (min), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicUnaryType (min, n, NULL);
     }
   else if (c == haltN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (halt), expListLen (n), n);
+      return makeIntrinsicProc (halt, expListLen (n), n);
     }
   else if (c == valN)
     {
@@ -7886,110 +7900,110 @@ static decl_node checkIntrinsic (decl_node c, decl_node n)
   else if (c == adrN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (adr), n, addressN);
+      return makeIntrinsicUnaryType (adr, n, addressN);
     }
   else if (c == sizeN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (size), n, cardinalN);
+      return makeIntrinsicUnaryType (size, n, cardinalN);
     }
   else if (c == tsizeN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (tsize), n, cardinalN);
+      return makeIntrinsicUnaryType (tsize, n, cardinalN);
     }
   else if (c == floatN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (float_), n, realN);
+      return makeIntrinsicUnaryType (float_, n, realN);
     }
   else if (c == truncN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (trunc), n, integerN);
+      return makeIntrinsicUnaryType (trunc, n, integerN);
     }
   else if (c == ordN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (ord), n, cardinalN);
+      return makeIntrinsicUnaryType (ord, n, cardinalN);
     }
   else if (c == chrN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (chr), n, charN);
+      return makeIntrinsicUnaryType (chr, n, charN);
     }
   else if (c == capN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (cap), n, charN);
+      return makeIntrinsicUnaryType (cap, n, charN);
     }
   else if (c == absN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (abs_), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicUnaryType (abs_, n, NULL);
     }
   else if (c == imN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (im), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicUnaryType (im, n, NULL);
     }
   else if (c == reN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (re), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicUnaryType (re, n, NULL);
     }
   else if (c == cmplxN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicBinaryType (static_cast<nodeT> (cmplx), n, reinterpret_cast<decl_node> (NULL));
+      return makeIntrinsicBinaryType (cmplx, n, NULL);
     }
   else if (c == highN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (high), n, cardinalN);
+      return makeIntrinsicUnaryType (high, n, cardinalN);
     }
   else if (c == incN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (inc), expListLen (n), n);
+      return makeIntrinsicProc (inc, expListLen (n), n);
     }
   else if (c == decN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (dec), expListLen (n), n);
+      return makeIntrinsicProc (dec, expListLen (n), n);
     }
   else if (c == inclN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (incl), expListLen (n), n);
+      return makeIntrinsicProc (incl, expListLen (n), n);
     }
   else if (c == exclN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (excl), expListLen (n), n);
+      return makeIntrinsicProc (excl, expListLen (n), n);
     }
   else if (c == newN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (new_), 1, n);
+      return makeIntrinsicProc (new_, 1, n);
     }
   else if (c == disposeN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicProc (static_cast<nodeT> (dispose), 1, n);
+      return makeIntrinsicProc (dispose, 1, n);
     }
   else if (c == lengthN)
     {
       /* avoid dangling else.  */
-      return makeIntrinsicUnaryType (static_cast<nodeT> (length), n, cardinalN);
+      return makeIntrinsicUnaryType (length, n, cardinalN);
     }
   else if (c == throwN)
     {
       /* avoid dangling else.  */
       keyc_useThrow ();
-      return makeIntrinsicProc (static_cast<nodeT> (throw_), 1, n);
+      return makeIntrinsicProc (throw_, 1, n);
     }
-  return static_cast<decl_node> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -8348,7 +8362,7 @@ static DynamicStrings_String getLiteralStringContents (decl_node n)
 
   mcDebug_assert (n->kind == literal);
   s = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n->literalF.name));
-  content = static_cast<DynamicStrings_String> (NULL);
+  content = NULL;
   if (n->literalF.type == charN)
     {
       if ((DynamicStrings_char (s, -1)) == 'C')
@@ -8472,7 +8486,7 @@ static decl_node foldBinary (nodeT k, decl_node l, decl_node r, decl_node res)
   DynamicStrings_String ls;
   DynamicStrings_String rs;
 
-  n = static_cast<decl_node> (NULL);
+  n = NULL;
   if (((k == plus) && (isLeafString (l))) && (isLeafString (r)))
     {
       ls = getStringContents (l);
@@ -8562,7 +8576,7 @@ static decl_node doMakeComponentRef (decl_node rec, decl_node field)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (componentref));
+  n = newNode (componentref);
   n->componentrefF.rec = rec;
   n->componentrefF.field = field;
   n->componentrefF.resultType = decl_getType (field);
@@ -8824,14 +8838,14 @@ static decl_node doGetExprType (decl_node n)
       case halt:
       case new_:
       case dispose:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case inc:
       case dec:
       case incl:
       case excl:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case nil:
@@ -9027,11 +9041,11 @@ static decl_node doGetExprType (decl_node n)
         break;
 
       case throw_:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case unreachable:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case def:
@@ -9157,7 +9171,7 @@ static decl_node doGetExprType (decl_node n)
 
 
 /*
-   getExprType -
+   getExprType - return the expression type.
 */
 
 static decl_node getExprType (decl_node n)
@@ -10102,7 +10116,7 @@ static void doArrayRef (mcPretty_pretty p, decl_node n)
       outText (p, (const char *) ".array", 6);
     }
   outText (p, (const char *) "[", 1);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   c = expListLen (n->arrayrefF.index);
   while (i <= c)
     {
@@ -10508,11 +10522,11 @@ static void doExprC (mcPretty_pretty p, decl_node n)
         break;
 
       case plus:
-        doPolyBinary (p, static_cast<nodeT> (plus), n->binaryF.left, n->binaryF.right, FALSE, FALSE);
+        doPolyBinary (p, plus, n->binaryF.left, n->binaryF.right, FALSE, FALSE);
         break;
 
       case sub:
-        doPolyBinary (p, static_cast<nodeT> (sub), n->binaryF.left, n->binaryF.right, FALSE, FALSE);
+        doPolyBinary (p, sub, n->binaryF.left, n->binaryF.right, FALSE, FALSE);
         break;
 
       case div_:
@@ -10524,11 +10538,11 @@ static void doExprC (mcPretty_pretty p, decl_node n)
         break;
 
       case mult:
-        doPolyBinary (p, static_cast<nodeT> (mult), n->binaryF.left, n->binaryF.right, FALSE, FALSE);
+        doPolyBinary (p, mult, n->binaryF.left, n->binaryF.right, FALSE, FALSE);
         break;
 
       case divide:
-        doPolyBinary (p, static_cast<nodeT> (divide), n->binaryF.left, n->binaryF.right, FALSE, FALSE);
+        doPolyBinary (p, divide, n->binaryF.left, n->binaryF.right, FALSE, FALSE);
         break;
 
       case in:
@@ -10977,14 +10991,14 @@ static DynamicStrings_String replaceChar (DynamicStrings_String s, char ch, cons
   /* make a local copy of each unbounded array.  */
   memcpy (a, a_, _a_high+1);
 
-  i = static_cast<int> (0);
+  i = 0;
   for (;;)
   {
     i = DynamicStrings_Index (s, ch, static_cast<unsigned int> (i));
     if (i == 0)
       {
         s = DynamicStrings_ConCat (DynamicStrings_InitString ((const char *) a, _a_high), DynamicStrings_Slice (s, 1, 0));
-        i = static_cast<int> (StrLib_StrLen ((const char *) a, _a_high));
+        i = StrLib_StrLen ((const char *) a, _a_high);
       }
     else if (i > 0)
       {
@@ -11043,8 +11057,8 @@ static unsigned int countChar (DynamicStrings_String s, char ch)
   int i;
   unsigned int c;
 
-  c = static_cast<unsigned int> (0);
-  i = static_cast<int> (0);
+  c = 0;
+  i = 0;
   for (;;)
   {
     i = DynamicStrings_Index (s, ch, static_cast<unsigned int> (i));
@@ -11253,7 +11267,7 @@ static mcPretty_pretty outKc (mcPretty_pretty p, const char *a_, unsigned int _a
   i = DynamicStrings_Index (s, '\\', 0);
   if (i == -1)
     {
-      t = static_cast<DynamicStrings_String> (NULL);
+      t = NULL;
     }
   else
     {
@@ -11667,7 +11681,7 @@ static void doParamC (mcPretty_pretty p, decl_node n)
       else
         {
           t = wlists_noOfItemsInList (l);
-          c = static_cast<unsigned int> (1);
+          c = 1;
           while (c <= t)
             {
               doParamConstCast (p, n);
@@ -11750,7 +11764,7 @@ static void doVarParamC (mcPretty_pretty p, decl_node n)
       else
         {
           t = wlists_noOfItemsInList (l);
-          c = static_cast<unsigned int> (1);
+          c = 1;
           while (c <= t)
             {
               doParamTypeEmit (p, n, ptype);
@@ -11993,7 +12007,7 @@ static void doCompletePartialArray (mcPretty_pretty p, decl_node t, decl_node r)
 
   mcDebug_assert (decl_isArray (r));
   type = r->arrayF.type;
-  s = static_cast<decl_node> (NULL);
+  s = NULL;
   outText (p, (const char *) "struct", 6);
   mcPretty_setNeedSpace (p);
   doFQNameC (p, t);
@@ -12169,7 +12183,7 @@ static decl_node doMax (decl_node n)
     {
       /* avoid dangling else.  */
       mcMetaError_metaError1 ((const char *) "trying to obtain MAX ({%1ad}) is illegal", 40, (const unsigned char *) &n, (sizeof (n)-1));
-      return static_cast<decl_node> (NULL);
+      return NULL;
     }
   else
     {
@@ -12307,7 +12321,7 @@ static void doCompletePartialProcType (mcPretty_pretty p, decl_node t, decl_node
   decl_node u;
 
   mcDebug_assert (decl_isProcType (n));
-  u = static_cast<decl_node> (NULL);
+  u = NULL;
   outText (p, (const char *) "typedef", 7);
   mcPretty_setNeedSpace (p);
   doTypeC (p, n->proctypeF.returnType, &u);
@@ -12575,7 +12589,7 @@ static void doArrayC (mcPretty_pretty p, decl_node n)
   mcDebug_assert (decl_isArray (n));
   t = n->arrayF.type;
   s = n->arrayF.subr;
-  u = static_cast<decl_node> (NULL);
+  u = NULL;
   if (s == NULL)
     {
       doTypeC (p, t, &u);
@@ -12618,7 +12632,7 @@ static void doPointerC (mcPretty_pretty p, decl_node n, decl_node *m)
   decl_node s;
 
   t = n->pointerF.type;
-  s = static_cast<decl_node> (NULL);
+  s = NULL;
   doTypeC (p, t, &s);
   mcPretty_setNeedSpace (p);
   outText (p, (const char *) "*", 1);
@@ -12633,7 +12647,7 @@ static void doRecordFieldC (mcPretty_pretty p, decl_node f)
 {
   decl_node m;
 
-  m = static_cast<decl_node> (NULL);
+  m = NULL;
   mcPretty_setNeedSpace (p);
   doTypeC (p, f->recordfieldF.type, &m);
   doDNameC (p, f, FALSE);
@@ -13095,7 +13109,7 @@ static void doVarC (decl_node n)
           mcPretty_setNeedSpace (doP);
         }
     }
-  s = static_cast<decl_node> (NULL);
+  s = NULL;
   doTypeC (doP, decl_getType (n), &s);
   mcPretty_setNeedSpace (doP);
   doFQDNameC (doP, n, FALSE);
@@ -13180,7 +13194,7 @@ static void doProcedureHeadingC (decl_node n, unsigned int prototype)
       outText (doP, (const char *) "static", 6);
       mcPretty_setNeedSpace (doP);
     }
-  q = static_cast<decl_node> (NULL);
+  q = NULL;
   doTypeC (doP, n->procedureF.returnType, &q);
   mcPretty_setNeedSpace (doP);
   doFQDNameC (doP, n, FALSE);
@@ -13232,14 +13246,14 @@ static unsigned int checkDeclareUnboundedParamCopyC (mcPretty_pretty p, decl_nod
     {
       t = decl_getType (t);
       c = wlists_noOfItemsInList (l);
-      i = static_cast<unsigned int> (1);
+      i = 1;
       while (i <= c)
         {
           doTypeNameC (p, t);
           mcPretty_setNeedSpace (p);
-          doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+          doNamesC (p, wlists_getItemFromList (l, i));
           outText (p, (const char *) "[_", 2);
-          doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+          doNamesC (p, wlists_getItemFromList (l, i));
           outText (p, (const char *) "_high+1];\\n", 11);
           seen = TRUE;
           i += 1;
@@ -13268,28 +13282,28 @@ static void checkUnboundedParamCopyC (mcPretty_pretty p, decl_node n)
   if (((decl_isArray (t)) && (decl_isUnbounded (t))) && (l != NULL))
     {
       c = wlists_noOfItemsInList (l);
-      i = static_cast<unsigned int> (1);
+      i = 1;
       t = decl_getType (t);
       s = decl_skipType (t);
       while (i <= c)
         {
           keyc_useMemcpy ();
           outText (p, (const char *) "memcpy (", 8);
-          doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+          doNamesC (p, wlists_getItemFromList (l, i));
           outText (p, (const char *) ",", 1);
           mcPretty_setNeedSpace (p);
-          doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+          doNamesC (p, wlists_getItemFromList (l, i));
           outText (p, (const char *) "_, ", 3);
           if (((s == charN) || (s == byteN)) || (s == locN))
             {
               outText (p, (const char *) "_", 1);
-              doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+              doNamesC (p, wlists_getItemFromList (l, i));
               outText (p, (const char *) "_high+1);\\n", 11);
             }
           else
             {
               outText (p, (const char *) "(_", 2);
-              doNamesC (p, static_cast<nameKey_Name> (wlists_getItemFromList (l, i)));
+              doNamesC (p, wlists_getItemFromList (l, i));
               outText (p, (const char *) "_high+1)", 8);
               mcPretty_setNeedSpace (p);
               doMultiplyBySize (p, t);
@@ -13490,10 +13504,10 @@ static void simplifyVar (alists_alist l, decl_node n)
       d = n->varF.decl;
       mcDebug_assert (isVarDecl (d));
       t = wlists_noOfItemsInList (d->vardeclF.names);
-      i = static_cast<unsigned int> (1);
+      i = 1;
       while (i <= t)
         {
-          v = decl_lookupInScope (n->varF.scope, static_cast<nameKey_Name> (wlists_getItemFromList (d->vardeclF.names, i)));
+          v = decl_lookupInScope (n->varF.scope, wlists_getItemFromList (d->vardeclF.names, i));
           mcDebug_assert (decl_isVar (v));
           v->varF.type = n->varF.type;
           i += 1;
@@ -13822,7 +13836,7 @@ static void joinProcedures (decl_node i, decl_node d)
 
   mcDebug_assert (decl_isDef (d));
   mcDebug_assert (decl_isImp (i));
-  j = static_cast<unsigned int> (1);
+  j = 1;
   h = Indexing_HighIndice (d->defF.decls.procedures);
   while (j <= h)
     {
@@ -13900,7 +13914,7 @@ static void doStatementSequenceC (mcPretty_pretty p, decl_node s)
 
   mcDebug_assert (decl_isStatementSequence (s));
   h = Indexing_HighIndice (s->stmtF.statements);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= h)
     {
       doStatementsC (p, reinterpret_cast<decl_node> (Indexing_GetIndice (s->stmtF.statements, i)));
@@ -14019,13 +14033,57 @@ static void doReturnC (mcPretty_pretty p, decl_node s)
 
 
 /*
-   doExprCastC -
+   isZtypeEquivalent -
+*/
+
+static unsigned int isZtypeEquivalent (decl_node type)
+{
+  switch (type->kind)
+    {
+      case cardinal:
+      case longcard:
+      case shortcard:
+      case integer:
+      case longint:
+      case shortint:
+      case ztype:
+        return TRUE;
+        break;
+
+
+      default:
+        return FALSE;
+        break;
+    }
+  /* static analysis guarentees a RETURN statement will be used before here.  */
+  __builtin_unreachable ();
+}
+
+
+/*
+   isEquivalentType - returns TRUE if type1 and type2 are equivalent.
+*/
+
+static unsigned int isEquivalentType (decl_node type1, decl_node type2)
+{
+  type1 = decl_skipType (type1);
+  type2 = decl_skipType (type2);
+  return (type1 == type2) || ((isZtypeEquivalent (type1)) && (isZtypeEquivalent (type2)));
+  /* static analysis guarentees a RETURN statement will be used before here.  */
+  __builtin_unreachable ();
+}
+
+
+/*
+   doExprCastC - build a cast if necessary.
 */
 
 static void doExprCastC (mcPretty_pretty p, decl_node e, decl_node type)
 {
-  /* IF skipType (type) # skipType (getType (e))  */
-  if ((decl_skipType (type)) != (decl_skipType (getExprType (e))))
+  decl_node stype;
+
+  stype = decl_skipType (type);
+  if ((! (isEquivalentType (type, getExprType (e)))) && (! ((e->kind == nil) && ((decl_isPointer (stype)) || (stype->kind == address)))))
     {
       if (lang == ansiCP)
         {
@@ -14842,12 +14900,15 @@ static unsigned int typePair (decl_node a, decl_node b, decl_node x, decl_node y
 
 
 /*
-   needsCast -
+   needsCast - return TRUE if the actual type parameter needs to be cast to
+               the formal type.
 */
 
 static unsigned int needsCast (decl_node at, decl_node ft)
 {
-  if ((((((((((((at == nilN) || (at == ft)) || (typePair (at, ft, cardinalN, wordN))) || (typePair (at, ft, cardinalN, ztypeN))) || (typePair (at, ft, integerN, ztypeN))) || (typePair (at, ft, longcardN, ztypeN))) || (typePair (at, ft, shortcardN, ztypeN))) || (typePair (at, ft, longintN, ztypeN))) || (typePair (at, ft, shortintN, ztypeN))) || (typePair (at, ft, realN, rtypeN))) || (typePair (at, ft, longrealN, rtypeN))) || (typePair (at, ft, shortrealN, rtypeN)))
+  at = decl_skipType (at);
+  ft = decl_skipType (ft);
+  if (((((((((((((at == nilN) || (at->kind == nil)) || (at == ft)) || (typePair (at, ft, cardinalN, wordN))) || (typePair (at, ft, cardinalN, ztypeN))) || (typePair (at, ft, integerN, ztypeN))) || (typePair (at, ft, longcardN, ztypeN))) || (typePair (at, ft, shortcardN, ztypeN))) || (typePair (at, ft, longintN, ztypeN))) || (typePair (at, ft, shortintN, ztypeN))) || (typePair (at, ft, realN, rtypeN))) || (typePair (at, ft, longrealN, rtypeN))) || (typePair (at, ft, shortrealN, rtypeN)))
     {
       return FALSE;
     }
@@ -14863,7 +14924,8 @@ static unsigned int needsCast (decl_node at, decl_node ft)
 /*
    checkSystemCast - checks to see if we are passing to/from
                      a system generic type (WORD, BYTE, ADDRESS)
-                     and if so emit a cast.
+                     and if so emit a cast.  It returns the number of
+                     open parenthesis.
 */
 
 static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_node formal)
@@ -14881,19 +14943,31 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n
           if ((isString (actual)) && ((decl_skipType (ft)) == addressN))
             {
               outText (p, (const char *) "const_cast<void*> (reinterpret_cast<const void*> (", 50);
-              return static_cast<unsigned int> (2);
+              return 2;
             }
           else if ((decl_isPointer (decl_skipType (ft))) || ((decl_skipType (ft)) == addressN))
             {
               /* avoid dangling else.  */
-              outText (p, (const char *) "reinterpret_cast<", 17);
-              doTypeNameC (p, ft);
-              if (decl_isVarParam (formal))
+              if (actual == nilN)
                 {
-                  outText (p, (const char *) "*", 1);
+                  if (decl_isVarParam (formal))
+                    {
+                      mcMetaError_metaError1 ((const char *) "NIL is being passed to a VAR parameter {%1DMad}", 47, (const unsigned char *) &formal, (sizeof (formal)-1));
+                    }
+                  /* NULL is compatible with pointers/address.  */
+                  return 0;
+                }
+              else
+                {
+                  outText (p, (const char *) "reinterpret_cast<", 17);
+                  doTypeNameC (p, ft);
+                  if (decl_isVarParam (formal))
+                    {
+                      outText (p, (const char *) "*", 1);
+                    }
+                  mcPretty_noSpace (p);
+                  outText (p, (const char *) "> (", 3);
                 }
-              mcPretty_noSpace (p);
-              outText (p, (const char *) "> (", 3);
             }
           else
             {
@@ -14907,7 +14981,7 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n
               mcPretty_noSpace (p);
               outText (p, (const char *) "> (", 3);
             }
-          return static_cast<unsigned int> (1);
+          return 1;
         }
       else
         {
@@ -14922,7 +14996,7 @@ static unsigned int checkSystemCast (mcPretty_pretty p, decl_node actual, decl_n
           mcPretty_setNeedSpace (p);
         }
     }
-  return static_cast<unsigned int> (0);
+  return 0;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -15094,7 +15168,7 @@ static decl_node getNthParamType (Indexing_Index l, unsigned int i)
     {
       return decl_getType (p);
     }
-  return static_cast<decl_node> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -15132,7 +15206,7 @@ static decl_node getNthParam (Indexing_Index l, unsigned int i)
             {
               /* avoid dangling else.  */
               mcDebug_assert (decl_isVarargs (p));
-              return static_cast<decl_node> (NULL);
+              return NULL;
             }
           if (i <= k)
             {
@@ -15145,7 +15219,7 @@ static decl_node getNthParam (Indexing_Index l, unsigned int i)
             }
         }
     }
-  return static_cast<decl_node> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -15168,7 +15242,7 @@ static void doFuncArgsC (mcPretty_pretty p, decl_node s, Indexing_Index l, unsig
     }
   if (s->funccallF.args != NULL)
     {
-      i = static_cast<unsigned int> (1);
+      i = 1;
       n = expListLen (s->funccallF.args);
       while (i <= n)
         {
@@ -15208,7 +15282,7 @@ static void doProcTypeArgsC (mcPretty_pretty p, decl_node s, Indexing_Index args
     }
   if (s->funccallF.args != NULL)
     {
-      i = static_cast<unsigned int> (1);
+      i = 1;
       n = expListLen (s->funccallF.args);
       while (i <= n)
         {
@@ -16136,7 +16210,7 @@ static void doFuncExprC (mcPretty_pretty p, decl_node n)
       mcPretty_setNeedSpace (p);
       if (t == procN)
         {
-          doProcTypeArgsC (p, n, reinterpret_cast<Indexing_Index> (NULL), TRUE);
+          doProcTypeArgsC (p, n, NULL, TRUE);
         }
       else
         {
@@ -16267,7 +16341,7 @@ static void doRangeListC (mcPretty_pretty p, decl_node c)
   unsigned int h;
 
   mcDebug_assert (decl_isCaseList (c));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (c->caselistF.rangePairs);
   while (i <= h)
     {
@@ -16293,7 +16367,7 @@ static void doRangeIfListC (mcPretty_pretty p, decl_node e, decl_node c)
   unsigned int h;
 
   mcDebug_assert (decl_isCaseList (c));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (c->caselistF.rangePairs);
   while (i <= h)
     {
@@ -16372,7 +16446,7 @@ static void doCaseLabelListC (mcPretty_pretty p, decl_node n, unsigned int haveE
   decl_node c;
 
   mcDebug_assert (decl_isCase (n));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (n->caseF.caseLabelList);
   while (i <= h)
     {
@@ -16424,7 +16498,7 @@ static void doCaseIfLabelListC (mcPretty_pretty p, decl_node n)
   decl_node c;
 
   mcDebug_assert (decl_isCase (n));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (n->caseF.caseLabelList);
   while (i <= h)
     {
@@ -16507,7 +16581,7 @@ static unsigned int canUseSwitchCaseLabels (decl_node n)
 
   mcDebug_assert (decl_isCaseLabelList (n));
   l = n->caselabellistF.caseList;
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (l->caselistF.rangePairs);
   while (i <= h)
     {
@@ -16537,7 +16611,7 @@ static unsigned int canUseSwitch (decl_node n)
   decl_node c;
 
   mcDebug_assert (decl_isCase (n));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (n->caseF.caseLabelList);
   while (i <= h)
     {
@@ -16884,7 +16958,7 @@ static unsigned int isLastStatementCase (decl_node n, decl_isNodeF q)
 
   ret = TRUE;
   mcDebug_assert (decl_isCase (n));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = Indexing_HighIndice (n->caseF.caseLabelList);
   while (i <= h)
     {
@@ -17245,7 +17319,7 @@ static dependentState walkRecord (alists_alist l, decl_node n)
               dbs (s, q);
               addTodo (n);
               dbq (n);
-              db ((const char *) "\\n", 2, reinterpret_cast<decl_node> (NULL));
+              db ((const char *) "\\n", 2, NULL);
               mcPretty_setindent (doP, o);
               return s;
             }
@@ -17278,7 +17352,7 @@ static dependentState walkVarient (alists_alist l, decl_node n)
     {
       dbs (s, n->varientF.tag);
       dbq (n->varientF.tag);
-      db ((const char *) "\\n", 2, reinterpret_cast<decl_node> (NULL));
+      db ((const char *) "\\n", 2, NULL);
       return s;
     }
   i = Indexing_LowIndice (n->varientF.listOfSons);
@@ -17291,7 +17365,7 @@ static dependentState walkVarient (alists_alist l, decl_node n)
       if (s != completed)
         {
           dbs (s, q);
-          db ((const char *) "\\n", 2, reinterpret_cast<decl_node> (NULL));
+          db ((const char *) "\\n", 2, NULL);
           return s;
         }
       i += 1;
@@ -17570,20 +17644,20 @@ static dependentState walkRecordField (alists_alist l, decl_node n)
   t = decl_getType (n);
   if (alists_isItemInList (partialQ, reinterpret_cast<void *> (t)))
     {
-      dbs (static_cast<dependentState> (partial), n);
+      dbs (partial, n);
       return partial;
     }
   else if (alists_isItemInList (doneQ, reinterpret_cast<void *> (t)))
     {
       /* avoid dangling else.  */
-      dbs (static_cast<dependentState> (completed), n);
+      dbs (completed, n);
       return completed;
     }
   else
     {
       /* avoid dangling else.  */
       addTodo (t);
-      dbs (static_cast<dependentState> (blocked), n);
+      dbs (blocked, n);
       dbq (n);
       dbq (t);
       /* s := walkDependants (l, t)  */
@@ -18207,7 +18281,7 @@ static void visitIndex (alists_alist v, Indexing_Index i, nodeProcedure p)
   unsigned int j;
   unsigned int h;
 
-  j = static_cast<unsigned int> (1);
+  j = 1;
   h = Indexing_HighIndice (i);
   while (j <= h)
     {
@@ -19189,7 +19263,7 @@ static DynamicStrings_String genKind (decl_node n)
       case longcomplex:
       case shortcomplex:
         /* types, no need to generate a kind string as it it contained in the name.  */
-        return static_cast<DynamicStrings_String> (NULL);
+        return NULL;
         break;
 
       case type:
@@ -19531,7 +19605,7 @@ static void dumpQ (const char *q_, unsigned int _q_high, alists_alist l)
   m = DynamicStrings_KillString (SFIO_WriteS (FIO_StdOut, m));
   m = FormatStrings_Sprintf0 (DynamicStrings_InitString ((const char *) "\\n", 2));
   m = DynamicStrings_KillString (SFIO_WriteS (FIO_StdOut, m));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   h = alists_noOfItemsInList (l);
   while (i <= h)
     {
@@ -19692,7 +19766,7 @@ static void outputPartial (decl_node n)
   unsigned int indirection;
 
   q = decl_getType (n);
-  indirection = static_cast<unsigned int> (0);
+  indirection = 0;
   while (decl_isPointer (q))
     {
       q = decl_getType (q);
@@ -19712,7 +19786,7 @@ static void tryOutputTodo (nodeProcedure c, nodeProcedure t, nodeProcedure v, no
   unsigned int n;
   decl_node d;
 
-  i = static_cast<unsigned int> (1);
+  i = 1;
   n = alists_noOfItemsInList (todoQ);
   while (i <= n)
     {
@@ -19721,14 +19795,14 @@ static void tryOutputTodo (nodeProcedure c, nodeProcedure t, nodeProcedure v, no
         {
           alists_removeItemFromList (todoQ, reinterpret_cast<void *> (d));
           alists_includeItemIntoList (doneQ, reinterpret_cast<void *> (d));
-          i = static_cast<unsigned int> (1);
+          i = 1;
         }
       else if (tryPartial (d, pt))
         {
           /* avoid dangling else.  */
           alists_removeItemFromList (todoQ, reinterpret_cast<void *> (d));
           alists_includeItemIntoList (partialQ, reinterpret_cast<void *> (d));
-          i = static_cast<unsigned int> (1);
+          i = 1;
         }
       else
         {
@@ -19750,7 +19824,7 @@ static void tryOutputPartial (nodeProcedure t)
   unsigned int n;
   decl_node d;
 
-  i = static_cast<unsigned int> (1);
+  i = 1;
   n = alists_noOfItemsInList (partialQ);
   while (i <= n)
     {
@@ -19759,7 +19833,7 @@ static void tryOutputPartial (nodeProcedure t)
         {
           alists_removeItemFromList (partialQ, reinterpret_cast<void *> (d));
           alists_includeItemIntoList (doneQ, reinterpret_cast<void *> (d));
-          i = static_cast<unsigned int> (1);
+          i = 1;
           n -= 1;
         }
       else
@@ -19789,7 +19863,7 @@ static void debugList (const char *a_, unsigned int _a_high, alists_alist l)
     {
       outText (doP, (const char *) a, _a_high);
       outText (doP, (const char *) " still contains node(s)\\n", 25);
-      i = static_cast<unsigned int> (1);
+      i = 1;
       do {
         n = static_cast<decl_node> (alists_getItemFromList (l, i));
         dbg (n);
@@ -19840,7 +19914,7 @@ static void populateTodo (nodeProcedure p)
   alists_alist l;
 
   h = alists_noOfItemsInList (todoQ);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= h)
     {
       n = static_cast<decl_node> (alists_getItemFromList (todoQ, i));
@@ -19865,8 +19939,8 @@ static void topologicallyOut (nodeProcedure c, nodeProcedure t, nodeProcedure v,
   unsigned int pa;
 
   populateTodo ((nodeProcedure) {(nodeProcedure_t) addEnumConst});
-  tol = static_cast<unsigned int> (0);
-  pal = static_cast<unsigned int> (0);
+  tol = 0;
+  pal = 0;
   to = alists_noOfItemsInList (todoQ);
   pa = alists_noOfItemsInList (partialQ);
   while ((tol != to) || (pal != pa))
@@ -20673,7 +20747,7 @@ static void doParamM2 (mcPretty_pretty p, decl_node n)
       else
         {
           t = wlists_noOfItemsInList (l);
-          c = static_cast<unsigned int> (1);
+          c = 1;
           while (c <= t)
             {
               i = static_cast<nameKey_Name> (wlists_getItemFromList (l, c));
@@ -20725,7 +20799,7 @@ static void doVarParamM2 (mcPretty_pretty p, decl_node n)
       else
         {
           t = wlists_noOfItemsInList (l);
-          c = static_cast<unsigned int> (1);
+          c = 1;
           while (c <= t)
             {
               i = static_cast<nameKey_Name> (wlists_getItemFromList (l, c));
@@ -21296,7 +21370,7 @@ static void dbg (decl_node n)
   doP = mcPretty_initPretty ((mcPretty_writeProc) {(mcPretty_writeProc_t) write_}, (mcPretty_writeLnProc) {(mcPretty_writeLnProc_t) writeln});
   l = alists_initList ();
   alists_includeItemIntoList (l, reinterpret_cast<void *> (n));
-  i = static_cast<unsigned int> (1);
+  i = 1;
   out1 ((const char *) "dbg (%s)\\n", 10, n);
   do {
     n = static_cast<decl_node> (alists_getItemFromList (l, i));
@@ -21443,8 +21517,8 @@ static unsigned int isComment (decl_node n)
 
 static void initPair (commentPair *c)
 {
-  (*c).after = static_cast<decl_node> (NULL);
-  (*c).body = static_cast<decl_node> (NULL);
+  (*c).after = NULL;
+  (*c).body = NULL;
 }
 
 
@@ -21562,7 +21636,7 @@ static decl_node dupSetValue (decl_node n)
   decl_node m;
   unsigned int i;
 
-  m = newNode (static_cast<nodeT> (setvalue));
+  m = newNode (setvalue);
   m->setvalueF.type = n->setvalueF.type;
   i = Indexing_LowIndice (n->setvalueF.values);
   while (i <= (Indexing_HighIndice (n->setvalueF.values)))
@@ -21769,15 +21843,15 @@ static decl_node doDupExpr (decl_node n)
 static void makeSystem (void)
 {
   systemN = decl_lookupDef (nameKey_makeKey ((const char *) "SYSTEM", 6));
-  addressN = makeBase (static_cast<nodeT> (address));
-  locN = makeBase (static_cast<nodeT> (loc));
-  byteN = makeBase (static_cast<nodeT> (byte));
-  wordN = makeBase (static_cast<nodeT> (word));
-  csizetN = makeBase (static_cast<nodeT> (csizet));
-  cssizetN = makeBase (static_cast<nodeT> (cssizet));
-  adrN = makeBase (static_cast<nodeT> (adr));
-  tsizeN = makeBase (static_cast<nodeT> (tsize));
-  throwN = makeBase (static_cast<nodeT> (throw_));
+  addressN = makeBase (address);
+  locN = makeBase (loc);
+  byteN = makeBase (byte);
+  wordN = makeBase (word);
+  csizetN = makeBase (csizet);
+  cssizetN = makeBase (cssizet);
+  adrN = makeBase (adr);
+  tsizeN = makeBase (tsize);
+  throwN = makeBase (throw_);
   decl_enterScope (systemN);
   addressN = addToScope (addressN);
   locN = addToScope (locN);
@@ -21818,9 +21892,9 @@ static decl_node makeBitnum (void)
 {
   decl_node b;
 
-  b = newNode (static_cast<nodeT> (subrange));
-  b->subrangeF.type = static_cast<decl_node> (NULL);
-  b->subrangeF.scope = static_cast<decl_node> (NULL);
+  b = newNode (subrange);
+  b->subrangeF.type = NULL;
+  b->subrangeF.scope = NULL;
   b->subrangeF.low = lookupConst (b, nameKey_makeKey ((const char *) "0", 1));
   b->subrangeF.high = lookupConst (b, nameKey_makeKey ((const char *) "31", 2));
   return b;
@@ -21836,49 +21910,49 @@ static decl_node makeBitnum (void)
 static void makeBaseSymbols (void)
 {
   baseSymbols = symbolKey_initTree ();
-  booleanN = makeBase (static_cast<nodeT> (boolean));
-  charN = makeBase (static_cast<nodeT> (char_));
-  procN = makeBase (static_cast<nodeT> (proc));
-  cardinalN = makeBase (static_cast<nodeT> (cardinal));
-  longcardN = makeBase (static_cast<nodeT> (longcard));
-  shortcardN = makeBase (static_cast<nodeT> (shortcard));
-  integerN = makeBase (static_cast<nodeT> (integer));
-  longintN = makeBase (static_cast<nodeT> (longint));
-  shortintN = makeBase (static_cast<nodeT> (shortint));
-  bitsetN = makeBase (static_cast<nodeT> (bitset));
+  booleanN = makeBase (boolean);
+  charN = makeBase (char_);
+  procN = makeBase (proc);
+  cardinalN = makeBase (cardinal);
+  longcardN = makeBase (longcard);
+  shortcardN = makeBase (shortcard);
+  integerN = makeBase (integer);
+  longintN = makeBase (longint);
+  shortintN = makeBase (shortint);
+  bitsetN = makeBase (bitset);
   bitnumN = makeBitnum ();
-  ztypeN = makeBase (static_cast<nodeT> (ztype));
-  rtypeN = makeBase (static_cast<nodeT> (rtype));
-  complexN = makeBase (static_cast<nodeT> (complex_));
-  longcomplexN = makeBase (static_cast<nodeT> (longcomplex));
-  shortcomplexN = makeBase (static_cast<nodeT> (shortcomplex));
-  realN = makeBase (static_cast<nodeT> (real));
-  longrealN = makeBase (static_cast<nodeT> (longreal));
-  shortrealN = makeBase (static_cast<nodeT> (shortreal));
-  nilN = makeBase (static_cast<nodeT> (nil));
-  trueN = makeBase (static_cast<nodeT> (true_));
-  falseN = makeBase (static_cast<nodeT> (false_));
-  sizeN = makeBase (static_cast<nodeT> (size));
-  minN = makeBase (static_cast<nodeT> (min));
-  maxN = makeBase (static_cast<nodeT> (max));
-  floatN = makeBase (static_cast<nodeT> (float_));
-  truncN = makeBase (static_cast<nodeT> (trunc));
-  ordN = makeBase (static_cast<nodeT> (ord));
-  valN = makeBase (static_cast<nodeT> (val));
-  chrN = makeBase (static_cast<nodeT> (chr));
-  capN = makeBase (static_cast<nodeT> (cap));
-  absN = makeBase (static_cast<nodeT> (abs_));
-  newN = makeBase (static_cast<nodeT> (new_));
-  disposeN = makeBase (static_cast<nodeT> (dispose));
-  lengthN = makeBase (static_cast<nodeT> (length));
-  incN = makeBase (static_cast<nodeT> (inc));
-  decN = makeBase (static_cast<nodeT> (dec));
-  inclN = makeBase (static_cast<nodeT> (incl));
-  exclN = makeBase (static_cast<nodeT> (excl));
-  highN = makeBase (static_cast<nodeT> (high));
-  imN = makeBase (static_cast<nodeT> (im));
-  reN = makeBase (static_cast<nodeT> (re));
-  cmplxN = makeBase (static_cast<nodeT> (cmplx));
+  ztypeN = makeBase (ztype);
+  rtypeN = makeBase (rtype);
+  complexN = makeBase (complex_);
+  longcomplexN = makeBase (longcomplex);
+  shortcomplexN = makeBase (shortcomplex);
+  realN = makeBase (real);
+  longrealN = makeBase (longreal);
+  shortrealN = makeBase (shortreal);
+  nilN = makeBase (nil);
+  trueN = makeBase (true_);
+  falseN = makeBase (false_);
+  sizeN = makeBase (size);
+  minN = makeBase (min);
+  maxN = makeBase (max);
+  floatN = makeBase (float_);
+  truncN = makeBase (trunc);
+  ordN = makeBase (ord);
+  valN = makeBase (val);
+  chrN = makeBase (chr);
+  capN = makeBase (cap);
+  absN = makeBase (abs_);
+  newN = makeBase (new_);
+  disposeN = makeBase (dispose);
+  lengthN = makeBase (length);
+  incN = makeBase (inc);
+  decN = makeBase (dec);
+  inclN = makeBase (incl);
+  exclN = makeBase (excl);
+  highN = makeBase (high);
+  imN = makeBase (im);
+  reN = makeBase (re);
+  cmplxN = makeBase (cmplx);
   symbolKey_putSymKey (baseSymbols, nameKey_makeKey ((const char *) "BOOLEAN", 7), reinterpret_cast<void *> (booleanN));
   symbolKey_putSymKey (baseSymbols, nameKey_makeKey ((const char *) "PROC", 4), reinterpret_cast<void *> (procN));
   symbolKey_putSymKey (baseSymbols, nameKey_makeKey ((const char *) "CHAR", 4), reinterpret_cast<void *> (charN));
@@ -21983,7 +22057,7 @@ static void init (void)
   makeBuiltins ();
   makeM2rts ();
   outputState = punct;
-  tempCount = static_cast<unsigned int> (0);
+  tempCount = 0;
   mustVisitScope = FALSE;
 }
 
@@ -22219,17 +22293,17 @@ extern "C" void decl_resetEnumPos (decl_node n)
   mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n)));
   if (decl_isDef (n))
     {
-      n->defF.enumFixup.count = static_cast<unsigned int> (0);
+      n->defF.enumFixup.count = 0;
     }
   else if (decl_isImp (n))
     {
       /* avoid dangling else.  */
-      n->impF.enumFixup.count = static_cast<unsigned int> (0);
+      n->impF.enumFixup.count = 0;
     }
   else if (decl_isModule (n))
     {
       /* avoid dangling else.  */
-      n->moduleF.enumFixup.count = static_cast<unsigned int> (0);
+      n->moduleF.enumFixup.count = 0;
     }
 }
 
@@ -22242,7 +22316,7 @@ extern "C" decl_node decl_getNextEnum (void)
 {
   decl_node n;
 
-  n = static_cast<decl_node> (NULL);
+  n = NULL;
   mcDebug_assert (((decl_isDef (currentModule)) || (decl_isImp (currentModule))) || (decl_isModule (currentModule)));
   if (decl_isDef (currentModule))
     {
@@ -22479,7 +22553,7 @@ extern "C" decl_node decl_getType (decl_node n)
     {
       case new_:
       case dispose:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case length:
@@ -22490,7 +22564,7 @@ extern "C" decl_node decl_getType (decl_node n)
       case dec:
       case incl:
       case excl:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case nil:
@@ -22686,11 +22760,11 @@ extern "C" decl_node decl_getType (decl_node n)
         break;
 
       case throw_:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case unreachable:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case def:
@@ -22969,7 +23043,7 @@ extern "C" decl_node decl_getScope (decl_node n)
       case nil:
       case true_:
       case false_:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case address:
@@ -23000,7 +23074,7 @@ extern "C" decl_node decl_getScope (decl_node n)
       case longcomplex:
       case shortcomplex:
         /* base types.  */
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case type:
@@ -23033,7 +23107,7 @@ extern "C" decl_node decl_getScope (decl_node n)
         break;
 
       case string:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case const_:
@@ -23041,7 +23115,7 @@ extern "C" decl_node decl_getScope (decl_node n)
         break;
 
       case literal:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case varparam:
@@ -23081,7 +23155,7 @@ extern "C" decl_node decl_getScope (decl_node n)
         break;
 
       case subscript:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case procedure:
@@ -23101,7 +23175,7 @@ extern "C" decl_node decl_getScope (decl_node n)
       case elsif:
       case assignment:
         /* statements.  */
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case componentref:
@@ -23123,11 +23197,11 @@ extern "C" decl_node decl_getScope (decl_node n)
       case divide:
       case in:
         /* expressions.  */
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case neg:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case lsl:
@@ -23147,7 +23221,7 @@ extern "C" decl_node decl_getScope (decl_node n)
       case greater:
       case greequal:
       case lessequal:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case adr:
@@ -23163,7 +23237,7 @@ extern "C" decl_node decl_getScope (decl_node n)
       case im:
       case min:
       case max:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case vardecl:
@@ -23171,23 +23245,23 @@ extern "C" decl_node decl_getScope (decl_node n)
         break;
 
       case funccall:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case explist:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case caselabellist:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case caselist:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case range:
-        return static_cast<decl_node> (NULL);
+        return NULL;
         break;
 
       case varargs:
@@ -23524,11 +23598,11 @@ extern "C" decl_node decl_makeConst (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (const_));
+  d = newNode (const_);
   d->constF.name = n;
-  d->constF.type = static_cast<decl_node> (NULL);
+  d->constF.type = NULL;
   d->constF.scope = decl_getDeclScope ();
-  d->constF.value = static_cast<decl_node> (NULL);
+  d->constF.value = NULL;
   return addToScope (d);
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -23554,9 +23628,9 @@ extern "C" decl_node decl_makeType (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (type));
+  d = newNode (type);
   d->typeF.name = n;
-  d->typeF.type = static_cast<decl_node> (NULL);
+  d->typeF.type = NULL;
   d->typeF.scope = decl_getDeclScope ();
   d->typeF.isHidden = FALSE;
   d->typeF.isInternal = FALSE;
@@ -23583,9 +23657,9 @@ extern "C" decl_node decl_makeTypeImp (nameKey_Name n)
     }
   else
     {
-      d = newNode (static_cast<nodeT> (type));
+      d = newNode (type);
       d->typeF.name = n;
-      d->typeF.type = static_cast<decl_node> (NULL);
+      d->typeF.type = NULL;
       d->typeF.scope = decl_getDeclScope ();
       d->typeF.isHidden = FALSE;
       return addToScope (d);
@@ -23603,10 +23677,10 @@ extern "C" decl_node decl_makeVar (nameKey_Name n)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (var));
+  d = newNode (var);
   d->varF.name = n;
-  d->varF.type = static_cast<decl_node> (NULL);
-  d->varF.decl = static_cast<decl_node> (NULL);
+  d->varF.type = NULL;
+  d->varF.decl = NULL;
   d->varF.scope = decl_getDeclScope ();
   d->varF.isInitialised = FALSE;
   d->varF.isParameter = FALSE;
@@ -23644,15 +23718,15 @@ extern "C" decl_node decl_makeVarDecl (decl_node i, decl_node type)
   unsigned int n;
 
   type = checkPtr (type);
-  d = newNode (static_cast<nodeT> (vardecl));
+  d = newNode (vardecl);
   d->vardeclF.names = i->identlistF.names;
   d->vardeclF.type = type;
   d->vardeclF.scope = decl_getDeclScope ();
   n = wlists_noOfItemsInList (d->vardeclF.names);
-  j = static_cast<unsigned int> (1);
+  j = 1;
   while (j <= n)
     {
-      v = decl_lookupSym (static_cast<nameKey_Name> (wlists_getItemFromList (d->vardeclF.names, j)));
+      v = decl_lookupSym (wlists_getItemFromList (d->vardeclF.names, j));
       mcDebug_assert (decl_isVar (v));
       decl_putVar (v, type, d);
       j += 1;
@@ -23709,10 +23783,10 @@ extern "C" decl_node decl_makeSubrange (decl_node low, decl_node high)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (subrange));
+  n = newNode (subrange);
   n->subrangeF.low = low;
   n->subrangeF.high = high;
-  n->subrangeF.type = static_cast<decl_node> (NULL);
+  n->subrangeF.type = NULL;
   n->subrangeF.scope = decl_getDeclScope ();
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -23739,7 +23813,7 @@ extern "C" decl_node decl_makePointer (decl_node type)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (pointer));
+  n = newNode (pointer);
   n->pointerF.type = type;
   n->pointerF.scope = decl_getDeclScope ();
   return n;
@@ -23756,7 +23830,7 @@ extern "C" decl_node decl_makeSet (decl_node type)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (set));
+  n = newNode (set);
   n->setF.type = type;
   n->setF.scope = decl_getDeclScope ();
   return n;
@@ -23776,7 +23850,7 @@ extern "C" decl_node decl_makeArray (decl_node subr, decl_node type)
 
   s = decl_skipType (subr);
   mcDebug_assert (((decl_isSubrange (s)) || (isOrdinal (s))) || (decl_isEnumeration (s)));
-  n = newNode (static_cast<nodeT> (array));
+  n = newNode (array);
   n->arrayF.subr = subr;
   n->arrayF.type = type;
   n->arrayF.scope = decl_getDeclScope ();
@@ -23806,7 +23880,7 @@ extern "C" decl_node decl_makeRecord (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (record));
+  n = newNode (record);
   n->recordF.localSymbols = symbolKey_initTree ();
   n->recordF.listOfSons = Indexing_InitIndex (1);
   n->recordF.scope = decl_getDeclScope ();
@@ -23825,18 +23899,18 @@ extern "C" decl_node decl_makeVarient (decl_node r)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (varient));
+  n = newNode (varient);
   n->varientF.listOfSons = Indexing_InitIndex (1);
   /* if so use this   n^.varientF.parent := r  */
   if (decl_isRecord (r))
     {
-      n->varientF.varient = static_cast<decl_node> (NULL);
+      n->varientF.varient = NULL;
     }
   else
     {
       n->varientF.varient = r;
     }
-  n->varientF.tag = static_cast<decl_node> (NULL);
+  n->varientF.tag = NULL;
   n->varientF.scope = decl_getDeclScope ();
   switch (r->kind)
     {
@@ -23876,7 +23950,7 @@ extern "C" decl_node decl_addFieldsToRecord (decl_node r, decl_node v, decl_node
   if (decl_isRecord (r))
     {
       p = r;
-      v = static_cast<decl_node> (NULL);
+      v = NULL;
     }
   else
     {
@@ -23886,11 +23960,11 @@ extern "C" decl_node decl_addFieldsToRecord (decl_node r, decl_node v, decl_node
       putFieldVarient (r, v);
     }
   n = wlists_noOfItemsInList (i->identlistF.names);
-  j = static_cast<unsigned int> (1);
+  j = 1;
   while (j <= n)
     {
       fn = static_cast<nameKey_Name> (wlists_getItemFromList (i->identlistF.names, j));
-      fj = static_cast<decl_node> (symbolKey_getSymKey (p->recordF.localSymbols, static_cast<nameKey_Name> (n)));
+      fj = static_cast<decl_node> (symbolKey_getSymKey (p->recordF.localSymbols, n));
       if (fj == NULL)
         {
           fj = putFieldRecord (r, fn, t, v);
@@ -24113,11 +24187,11 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
         break;
 
       case record:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case varient:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case var:
@@ -24125,19 +24199,19 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
         break;
 
       case enumeration:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case subrange:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case pointer:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case array:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case string:
@@ -24153,15 +24227,15 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
         break;
 
       case varparam:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case param:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case optarg_:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case recordfield:
@@ -24177,15 +24251,15 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
         break;
 
       case set:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case proctype:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case subscript:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case procedure:
@@ -24213,7 +24287,7 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
       case elsif:
       case assignment:
         /* statements.  */
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case constexp:
@@ -24237,7 +24311,7 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
       case greequal:
       case lessequal:
         /* expressions.  */
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case adr:
@@ -24305,11 +24379,11 @@ extern "C" nameKey_Name decl_getSymName (decl_node n)
         break;
 
       case funccall:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
       case identlist:
-        return static_cast<nameKey_Name> (nameKey_NulName);
+        return nameKey_NulName;
         break;
 
 
@@ -24384,7 +24458,7 @@ extern "C" decl_node decl_lookupExported (decl_node n, nameKey_Name i)
     {
       return r;
     }
-  return static_cast<decl_node> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -24621,7 +24695,7 @@ extern "C" decl_node decl_makeProcedure (nameKey_Name n)
   d = decl_lookupSym (n);
   if (d == NULL)
     {
-      d = newNode (static_cast<nodeT> (procedure));
+      d = newNode (procedure);
       d->procedureF.name = n;
       initDecls (&d->procedureF.decls);
       d->procedureF.scope = decl_getDeclScope ();
@@ -24629,17 +24703,17 @@ extern "C" decl_node decl_makeProcedure (nameKey_Name n)
       d->procedureF.isForC = isDefForCNode (decl_getDeclScope ());
       d->procedureF.built = FALSE;
       d->procedureF.returnopt = FALSE;
-      d->procedureF.optarg_ = static_cast<decl_node> (NULL);
+      d->procedureF.optarg_ = NULL;
       d->procedureF.noreturnused = FALSE;
       d->procedureF.noreturn = FALSE;
       d->procedureF.vararg = FALSE;
       d->procedureF.checking = FALSE;
-      d->procedureF.paramcount = static_cast<unsigned int> (0);
-      d->procedureF.returnType = static_cast<decl_node> (NULL);
-      d->procedureF.beginStatements = static_cast<decl_node> (NULL);
+      d->procedureF.paramcount = 0;
+      d->procedureF.returnType = NULL;
+      d->procedureF.beginStatements = NULL;
       initCname (&d->procedureF.cname);
-      d->procedureF.defComment = static_cast<mcComment_commentDesc> (NULL);
-      d->procedureF.modComment = static_cast<mcComment_commentDesc> (NULL);
+      d->procedureF.defComment = NULL;
+      d->procedureF.modComment = NULL;
     }
   return addProcedureToScope (d, n);
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -24687,13 +24761,13 @@ extern "C" decl_node decl_makeProcType (void)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (proctype));
+  d = newNode (proctype);
   d->proctypeF.scope = decl_getDeclScope ();
   d->proctypeF.parameters = Indexing_InitIndex (1);
   d->proctypeF.returnopt = FALSE;
-  d->proctypeF.optarg_ = static_cast<decl_node> (NULL);
+  d->proctypeF.optarg_ = NULL;
   d->proctypeF.vararg = FALSE;
-  d->proctypeF.returnType = static_cast<decl_node> (NULL);
+  d->proctypeF.returnType = NULL;
   return d;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -24745,7 +24819,7 @@ extern "C" decl_node decl_makeVarParameter (decl_node l, decl_node type, decl_no
   decl_node d;
 
   mcDebug_assert ((l == NULL) || (isIdentList (l)));
-  d = newNode (static_cast<nodeT> (varparam));
+  d = newNode (varparam);
   d->varparamF.namelist = l;
   d->varparamF.type = type;
   d->varparamF.scope = proc;
@@ -24766,7 +24840,7 @@ extern "C" decl_node decl_makeNonVarParameter (decl_node l, decl_node type, decl
   decl_node d;
 
   mcDebug_assert ((l == NULL) || (isIdentList (l)));
-  d = newNode (static_cast<nodeT> (param));
+  d = newNode (param);
   d->paramF.namelist = l;
   d->paramF.type = type;
   d->paramF.scope = proc;
@@ -24785,7 +24859,7 @@ extern "C" decl_node decl_makeNonVarParameter (decl_node l, decl_node type, decl
 extern "C" void decl_paramEnter (decl_node n)
 {
   mcDebug_assert (decl_isProcedure (n));
-  n->procedureF.paramcount = static_cast<unsigned int> (0);
+  n->procedureF.paramcount = 0;
 }
 
 
@@ -24812,7 +24886,7 @@ extern "C" decl_node decl_makeIdentList (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (identlist));
+  n = newNode (identlist);
   n->identlistF.names = wlists_initList ();
   n->identlistF.cnamed = FALSE;
   return n;
@@ -24829,13 +24903,13 @@ extern "C" decl_node decl_makeIdentList (void)
 extern "C" unsigned int decl_putIdent (decl_node n, nameKey_Name i)
 {
   mcDebug_assert (isIdentList (n));
-  if (wlists_isItemInList (n->identlistF.names, static_cast<unsigned int> (i)))
+  if (wlists_isItemInList (n->identlistF.names, i))
     {
       return FALSE;
     }
   else
     {
-      wlists_putItemIntoList (n->identlistF.names, static_cast<unsigned int> (i));
+      wlists_putItemIntoList (n->identlistF.names, i);
       return TRUE;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -24899,8 +24973,8 @@ extern "C" decl_node decl_makeVarargs (void)
 {
   decl_node d;
 
-  d = newNode (static_cast<nodeT> (varargs));
-  d->varargsF.scope = static_cast<decl_node> (NULL);
+  d = newNode (varargs);
+  d->varargsF.scope = NULL;
   return d;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -24969,77 +25043,77 @@ extern "C" decl_node decl_makeBinaryTok (mcReserved_toktype op, decl_node l, dec
 {
   if (op == mcReserved_equaltok)
     {
-      return makeBinary (static_cast<nodeT> (equal), l, r, booleanN);
+      return makeBinary (equal, l, r, booleanN);
     }
   else if ((op == mcReserved_hashtok) || (op == mcReserved_lessgreatertok))
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (notequal), l, r, booleanN);
+      return makeBinary (notequal, l, r, booleanN);
     }
   else if (op == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (less), l, r, booleanN);
+      return makeBinary (less, l, r, booleanN);
     }
   else if (op == mcReserved_greatertok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (greater), l, r, booleanN);
+      return makeBinary (greater, l, r, booleanN);
     }
   else if (op == mcReserved_greaterequaltok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (greequal), l, r, booleanN);
+      return makeBinary (greequal, l, r, booleanN);
     }
   else if (op == mcReserved_lessequaltok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (lessequal), l, r, booleanN);
+      return makeBinary (lessequal, l, r, booleanN);
     }
   else if (op == mcReserved_andtok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (and_), l, r, booleanN);
+      return makeBinary (and_, l, r, booleanN);
     }
   else if (op == mcReserved_ortok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (or_), l, r, booleanN);
+      return makeBinary (or_, l, r, booleanN);
     }
   else if (op == mcReserved_plustok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (plus), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (plus, l, r, NULL);
     }
   else if (op == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (sub), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (sub, l, r, NULL);
     }
   else if (op == mcReserved_divtok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (div_), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (div_, l, r, NULL);
     }
   else if (op == mcReserved_timestok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (mult), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (mult, l, r, NULL);
     }
   else if (op == mcReserved_modtok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (mod), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (mod, l, r, NULL);
     }
   else if (op == mcReserved_intok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (in), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (in, l, r, NULL);
     }
   else if (op == mcReserved_dividetok)
     {
       /* avoid dangling else.  */
-      return makeBinary (static_cast<nodeT> (divide), l, r, reinterpret_cast<decl_node> (NULL));
+      return makeBinary (divide, l, r, NULL);
     }
   else
     {
@@ -25061,17 +25135,17 @@ extern "C" decl_node decl_makeUnaryTok (mcReserved_toktype op, decl_node e)
 {
   if (op == mcReserved_nottok)
     {
-      return makeUnary (static_cast<nodeT> (not_), e, booleanN);
+      return makeUnary (not_, e, booleanN);
     }
   else if (op == mcReserved_plustok)
     {
       /* avoid dangling else.  */
-      return makeUnary (static_cast<nodeT> (plus), e, reinterpret_cast<decl_node> (NULL));
+      return makeUnary (plus, e, NULL);
     }
   else if (op == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      return makeUnary (static_cast<nodeT> (neg), e, reinterpret_cast<decl_node> (NULL));
+      return makeUnary (neg, e, NULL);
     }
   else
     {
@@ -25136,7 +25210,7 @@ extern "C" decl_node decl_makePointerRef (decl_node ptr, decl_node field)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (pointerref));
+  n = newNode (pointerref);
   n->pointerrefF.ptr = ptr;
   n->pointerrefF.field = field;
   n->pointerrefF.resultType = decl_getType (field);
@@ -25169,7 +25243,7 @@ extern "C" decl_node decl_makeDeRef (decl_node n)
 
   t = decl_skipType (decl_getType (n));
   mcDebug_assert (decl_isPointer (t));
-  return makeUnary (static_cast<nodeT> (deref), n, decl_getType (t));
+  return makeUnary (deref, n, decl_getType (t));
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -25188,12 +25262,12 @@ extern "C" decl_node decl_makeArrayRef (decl_node array, decl_node index)
   unsigned int i;
   unsigned int j;
 
-  n = newNode (static_cast<nodeT> (arrayref));
+  n = newNode (arrayref);
   n->arrayrefF.array = array;
   n->arrayrefF.index = index;
   t = array;
   j = expListLen (index);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   t = decl_skipType (decl_getType (t));
   do {
     if (decl_isArray (t))
@@ -25246,7 +25320,7 @@ extern "C" decl_node decl_makeLiteralInt (nameKey_Name n)
   decl_node m;
   DynamicStrings_String s;
 
-  m = newNode (static_cast<nodeT> (literal));
+  m = newNode (literal);
   s = DynamicStrings_InitStringCharStar (nameKey_keyToCharStar (n));
   m->literalF.name = n;
   if ((DynamicStrings_char (s, -1)) == 'C')
@@ -25272,7 +25346,7 @@ extern "C" decl_node decl_makeLiteralReal (nameKey_Name n)
 {
   decl_node m;
 
-  m = newNode (static_cast<nodeT> (literal));
+  m = newNode (literal);
   m->literalF.name = n;
   m->literalF.type = rtypeN;
   return m;
@@ -25289,7 +25363,7 @@ extern "C" decl_node decl_makeString (nameKey_Name n)
 {
   decl_node m;
 
-  m = newNode (static_cast<nodeT> (string));
+  m = newNode (string);
   m->stringF.name = n;
   m->stringF.length = nameKey_lengthKey (n);
   m->stringF.isCharCompatible = m->stringF.length <= 3;
@@ -25301,7 +25375,7 @@ extern "C" decl_node decl_makeString (nameKey_Name n)
     }
   else
     {
-      m->stringF.cchar = static_cast<DynamicStrings_String> (NULL);
+      m->stringF.cchar = NULL;
     }
   return m;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -25317,7 +25391,7 @@ extern "C" decl_node decl_makeSetValue (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (setvalue));
+  n = newNode (setvalue);
   n->setvalueF.type = bitsetN;
   n->setvalueF.values = Indexing_InitIndex (1);
   return n;
@@ -25399,7 +25473,7 @@ extern "C" decl_node decl_getBuiltinConst (nameKey_Name n)
   else
     {
       /* avoid dangling else.  */
-      return static_cast<decl_node> (NULL);
+      return NULL;
     }
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -25414,7 +25488,7 @@ extern "C" decl_node decl_makeExpList (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (explist));
+  n = newNode (explist);
   n->explistF.exp = Indexing_InitIndex (1);
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -25547,17 +25621,17 @@ extern "C" void decl_resetConstExpPos (decl_node n)
   mcDebug_assert (((decl_isDef (n)) || (decl_isImp (n))) || (decl_isModule (n)));
   if (decl_isDef (n))
     {
-      n->defF.constFixup.count = static_cast<unsigned int> (0);
+      n->defF.constFixup.count = 0;
     }
   else if (decl_isImp (n))
     {
       /* avoid dangling else.  */
-      n->impF.constFixup.count = static_cast<unsigned int> (0);
+      n->impF.constFixup.count = 0;
     }
   else if (decl_isModule (n))
     {
       /* avoid dangling else.  */
-      n->moduleF.constFixup.count = static_cast<unsigned int> (0);
+      n->moduleF.constFixup.count = 0;
     }
 }
 
@@ -25579,10 +25653,10 @@ extern "C" decl_node decl_makeFuncCall (decl_node c, decl_node n)
   checkCHeaders (c);
   if (f == NULL)
     {
-      f = newNode (static_cast<nodeT> (funccall));
+      f = newNode (funccall);
       f->funccallF.function = c;
       f->funccallF.args = n;
-      f->funccallF.type = static_cast<decl_node> (NULL);
+      f->funccallF.type = NULL;
       initPair (&f->funccallF.funccallComment);
     }
   return f;
@@ -25599,7 +25673,7 @@ extern "C" decl_node decl_makeStatementSequence (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (stmtseq));
+  n = newNode (stmtseq);
   n->stmtF.statements = Indexing_InitIndex (1);
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -25632,7 +25706,7 @@ extern "C" void decl_addStatement (decl_node s, decl_node n)
       if ((isIntrinsic (n)) && n->intrinsicF.postUnreachable)
         {
           n->intrinsicF.postUnreachable = FALSE;
-          decl_addStatement (s, makeIntrinsicProc (static_cast<nodeT> (unreachable), 0, reinterpret_cast<decl_node> (NULL)));
+          decl_addStatement (s, makeIntrinsicProc (unreachable, 0, NULL));
         }
     }
 }
@@ -25729,15 +25803,15 @@ extern "C" decl_node decl_makeReturn (void)
   decl_node type;
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (return_));
-  n->returnF.exp = static_cast<decl_node> (NULL);
+  n = newNode (return_);
+  n->returnF.exp = NULL;
   if (decl_isProcedure (decl_getDeclScope ()))
     {
       n->returnF.scope = decl_getDeclScope ();
     }
   else
     {
-      n->returnF.scope = static_cast<decl_node> (NULL);
+      n->returnF.scope = NULL;
     }
   initPair (&n->returnF.returnComment);
   return n;
@@ -25778,9 +25852,9 @@ extern "C" decl_node decl_makeWhile (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (while_));
-  n->whileF.expr = static_cast<decl_node> (NULL);
-  n->whileF.statements = static_cast<decl_node> (NULL);
+  n = newNode (while_);
+  n->whileF.expr = NULL;
+  n->whileF.statements = NULL;
   initPair (&n->whileF.doComment);
   initPair (&n->whileF.endComment);
   return n;
@@ -25847,7 +25921,7 @@ extern "C" decl_node decl_makeAssignment (decl_node d, decl_node e)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (assignment));
+  n = newNode (assignment);
   n->assignmentF.des = d;
   n->assignmentF.expr = e;
   initPair (&n->assignmentF.assignComment);
@@ -25924,7 +25998,7 @@ extern "C" decl_node decl_makeExit (decl_node l, unsigned int n)
   decl_node e;
 
   mcDebug_assert (decl_isLoop (l));
-  e = newNode (static_cast<nodeT> (exit_));
+  e = newNode (exit_);
   e->exitF.loop = l;
   l->loopF.labelno = n;
   return e;
@@ -25954,9 +26028,9 @@ extern "C" decl_node decl_makeLoop (void)
 {
   decl_node l;
 
-  l = newNode (static_cast<nodeT> (loop));
-  l->loopF.statements = static_cast<decl_node> (NULL);
-  l->loopF.labelno = static_cast<unsigned int> (0);
+  l = newNode (loop);
+  l->loopF.statements = NULL;
+  l->loopF.labelno = 0;
   return l;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -26020,11 +26094,11 @@ extern "C" decl_node decl_makeCommentS (mcComment_commentDesc c)
 
   if (c == NULL)
     {
-      return static_cast<decl_node> (NULL);
+      return NULL;
     }
   else
     {
-      n = newNode (static_cast<nodeT> (comment));
+      n = newNode (comment);
       n->commentF.content = c;
       return n;
     }
@@ -26043,11 +26117,11 @@ extern "C" decl_node decl_makeIf (decl_node e, decl_node s)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (if_));
+  n = newNode (if_);
   n->ifF.expr = e;
   n->ifF.then = s;
-  n->ifF.else_ = static_cast<decl_node> (NULL);
-  n->ifF.elsif = static_cast<decl_node> (NULL);
+  n->ifF.else_ = NULL;
+  n->ifF.elsif = NULL;
   initPair (&n->ifF.ifComment);
   initPair (&n->ifF.elseComment);
   initPair (&n->ifF.endComment);
@@ -26079,11 +26153,11 @@ extern "C" decl_node decl_makeElsif (decl_node i, decl_node e, decl_node s)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (elsif));
+  n = newNode (elsif);
   n->elsifF.expr = e;
   n->elsifF.then = s;
-  n->elsifF.elsif = static_cast<decl_node> (NULL);
-  n->elsifF.else_ = static_cast<decl_node> (NULL);
+  n->elsifF.elsif = NULL;
+  n->elsifF.else_ = NULL;
   initPair (&n->elsifF.elseComment);
   mcDebug_assert ((decl_isIf (i)) || (decl_isElsif (i)));
   if (decl_isIf (i))
@@ -26145,12 +26219,12 @@ extern "C" decl_node decl_makeFor (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (for_));
-  n->forF.des = static_cast<decl_node> (NULL);
-  n->forF.start = static_cast<decl_node> (NULL);
-  n->forF.end = static_cast<decl_node> (NULL);
-  n->forF.increment = static_cast<decl_node> (NULL);
-  n->forF.statements = static_cast<decl_node> (NULL);
+  n = newNode (for_);
+  n->forF.des = NULL;
+  n->forF.start = NULL;
+  n->forF.end = NULL;
+  n->forF.increment = NULL;
+  n->forF.statements = NULL;
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -26198,9 +26272,9 @@ extern "C" decl_node decl_makeRepeat (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (repeat));
-  n->repeatF.expr = static_cast<decl_node> (NULL);
-  n->repeatF.statements = static_cast<decl_node> (NULL);
+  n = newNode (repeat);
+  n->repeatF.expr = NULL;
+  n->repeatF.statements = NULL;
   initPair (&n->repeatF.repeatComment);
   initPair (&n->repeatF.untilComment);
   return n;
@@ -26266,10 +26340,10 @@ extern "C" decl_node decl_makeCase (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (case_));
-  n->caseF.expression = static_cast<decl_node> (NULL);
+  n = newNode (case_);
+  n->caseF.expression = NULL;
   n->caseF.caseLabelList = Indexing_InitIndex (1);
-  n->caseF.else_ = static_cast<decl_node> (NULL);
+  n->caseF.else_ = NULL;
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -26344,7 +26418,7 @@ extern "C" decl_node decl_makeCaseLabelList (decl_node l, decl_node s)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (caselabellist));
+  n = newNode (caselabellist);
   n->caselabellistF.caseList = l;
   n->caselabellistF.statements = s;
   return n;
@@ -26374,7 +26448,7 @@ extern "C" decl_node decl_makeCaseList (void)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (caselist));
+  n = newNode (caselist);
   n->caselistF.rangePairs = Indexing_InitIndex (1);
   return n;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -26417,7 +26491,7 @@ extern "C" decl_node decl_makeRange (decl_node lo, decl_node hi)
 {
   decl_node n;
 
-  n = newNode (static_cast<nodeT> (range));
+  n = newNode (range);
   n->rangeF.lo = lo;
   n->rangeF.hi = hi;
   return n;
@@ -26466,7 +26540,7 @@ extern "C" decl_node decl_dupExpr (decl_node n)
 {
   if (n == NULL)
     {
-      return static_cast<decl_node> (NULL);
+      return NULL;
     }
   else
     {
diff --git a/gcc/m2/mc-boot/Gkeyc.c b/gcc/m2/mc-boot/Gkeyc.c
index 72d038d5126..eaeba550732 100644
--- a/gcc/m2/mc-boot/Gkeyc.c
+++ b/gcc/m2/mc-boot/Gkeyc.c
@@ -1086,8 +1086,8 @@ static void init (void)
   seenSysTypes = FALSE;
   initializedCP = FALSE;
   initializedGCC = FALSE;
-  stack = static_cast<scope> (NULL);
-  freeList = static_cast<scope> (NULL);
+  stack = NULL;
+  freeList = NULL;
   initKeywords ();
   initMacros ();
 }
@@ -1492,7 +1492,7 @@ extern "C" void keyc_leaveScope (decl_node n)
       stack = stack->next;
       s->scoped = static_cast<decl_node> (NULL);
       symbolKey_killTree (&s->symbols);
-      s->next = static_cast<scope> (NULL);
+      s->next = NULL;
     }
   else
     {
diff --git a/gcc/m2/mc-boot/Glists.c b/gcc/m2/mc-boot/Glists.c
index fa7d1c97897..9001ae5fd8c 100644
--- a/gcc/m2/mc-boot/Glists.c
+++ b/gcc/m2/mc-boot/Glists.c
@@ -171,8 +171,8 @@ extern "C" lists_list lists_initList (void)
   lists_list l;
 
   Storage_ALLOCATE ((void **) &l, sizeof (_T1));
-  l->noOfelements = static_cast<unsigned int> (0);
-  l->next = static_cast<lists_list> (NULL);
+  l->noOfelements = 0;
+  l->next = NULL;
   return l;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -257,11 +257,11 @@ extern "C" unsigned int lists_getIndexOfList (lists_list l, void * c)
 
   if (l == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
-      i = static_cast<unsigned int> (1);
+      i = 1;
       while (i <= l->noOfelements)
         {
           if (l->elements.array[i-1] == c)
@@ -290,11 +290,11 @@ extern "C" unsigned int lists_noOfItemsInList (lists_list l)
 
   if (l == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
-      t = static_cast<unsigned int> (0);
+      t = 0;
       do {
         t += l->noOfelements;
         l = l->next;
@@ -334,9 +334,9 @@ extern "C" void lists_removeItemFromList (lists_list l, void * c)
   if (l != NULL)
     {
       found = FALSE;
-      p = static_cast<lists_list> (NULL);
+      p = NULL;
       do {
-        i = static_cast<unsigned int> (1);
+        i = 1;
         while ((i <= l->noOfelements) && (l->elements.array[i-1] != c))
           {
             i += 1;
@@ -368,7 +368,7 @@ extern "C" unsigned int lists_isItemInList (lists_list l, void * c)
   unsigned int i;
 
   do {
-    i = static_cast<unsigned int> (1);
+    i = 1;
     while (i <= l->noOfelements)
       {
         if (l->elements.array[i-1] == c)
@@ -398,7 +398,7 @@ extern "C" void lists_foreachItemInListDo (lists_list l, symbolKey_performOperat
   unsigned int n;
 
   n = lists_noOfItemsInList (l);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= n)
     {
       (*p.proc) (lists_getItemFromList (l, i));
@@ -419,7 +419,7 @@ extern "C" lists_list lists_duplicateList (lists_list l)
 
   m = lists_initList ();
   n = lists_noOfItemsInList (l);
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (i <= n)
     {
       lists_putItemIntoList (m, lists_getItemFromList (l, i));
diff --git a/gcc/m2/mc-boot/GmcComment.c b/gcc/m2/mc-boot/GmcComment.c
index db0d439d3b9..af08a6e595b 100644
--- a/gcc/m2/mc-boot/GmcComment.c
+++ b/gcc/m2/mc-boot/GmcComment.c
@@ -294,7 +294,7 @@ extern "C" mcComment_commentDesc mcComment_initComment (unsigned int onlySpaces)
       cd->type = afterStatement;
     }
   cd->content = DynamicStrings_InitString ((const char *) "", 0);
-  cd->procName = static_cast<nameKey_Name> (nameKey_NulName);
+  cd->procName = nameKey_NulName;
   cd->used = FALSE;
   return cd;
   /* static analysis guarentees a RETURN statement will be used before here.  */
diff --git a/gcc/m2/mc-boot/GmcError.c b/gcc/m2/mc-boot/GmcError.c
index 236ae5811cd..b83e1a4a97a 100644
--- a/gcc/m2/mc-boot/GmcError.c
+++ b/gcc/m2/mc-boot/GmcError.c
@@ -316,8 +316,8 @@ static unsigned int translateNameToCharStar (char *a, unsigned int _a_high, unsi
                            if they consist of of %a then this is translated
                            into a String and %a is replaced by %s.
   */
-  argno = static_cast<unsigned int> (1);
-  i = static_cast<unsigned int> (0);
+  argno = 1;
+  i = 0;
   h = StrLib_StrLen ((const char *) a, _a_high);
   while (i < h)
     {
@@ -599,7 +599,7 @@ static DynamicStrings_String doFormat3 (const char *a_, unsigned int _a_high, co
 
 static void init (void)
 {
-  head = static_cast<mcError_error> (NULL);
+  head = NULL;
   inInternal = FALSE;
 }
 
@@ -825,9 +825,9 @@ extern "C" mcError_error mcError_newError (unsigned int atTokenNo)
   Storage_ALLOCATE ((void **) &e, sizeof (_T2));
   e->s = static_cast<DynamicStrings_String> (NULL);
   e->token = atTokenNo;
-  e->next = static_cast<mcError_error> (NULL);
-  e->parent = static_cast<mcError_error> (NULL);
-  e->child = static_cast<mcError_error> (NULL);
+  e->next = NULL;
+  e->parent = NULL;
+  e->child = NULL;
   e->fatal = TRUE;
   if ((head == NULL) || (head->token > atTokenNo))
     {
@@ -888,7 +888,7 @@ extern "C" mcError_error mcError_chainError (unsigned int atTokenNo, mcError_err
       f->token = atTokenNo;
       f->next = e->child;
       f->parent = e;
-      f->child = static_cast<mcError_error> (NULL);
+      f->child = NULL;
       f->fatal = e->fatal;
       e->child = f;
     }
diff --git a/gcc/m2/mc-boot/GmcLexBuf.c b/gcc/m2/mc-boot/GmcLexBuf.c
index 3bc7d236880..9db12f38337 100644
--- a/gcc/m2/mc-boot/GmcLexBuf.c
+++ b/gcc/m2/mc-boot/GmcLexBuf.c
@@ -432,9 +432,9 @@ static void debugLex (unsigned int n)
     }
   else
     {
-      o = static_cast<unsigned int> (0);
+      o = 0;
     }
-  i = static_cast<unsigned int> (0);
+  i = 0;
   do {
     t = o+i;
     if (nextTokNo == t)
@@ -512,7 +512,7 @@ static tokenBucket peeptokenBucket (unsigned int *t)
             nextTokNo = old+1;
             b = findtokenBucket (&old);
             updateFromBucket (b, old);
-            return static_cast<tokenBucket> (NULL);
+            return NULL;
           }
       }
   } while (! ((b != NULL) || (mcLexBuf_currenttoken == mcReserved_eoftok)));
@@ -562,7 +562,7 @@ static void peepAfterComment (void)
   cno = mcLexBuf_getTokenNo ();
   curline = mcLexBuf_tokenToLineNo (cno, 0);
   nextline = curline;
-  peep = static_cast<unsigned int> (0);
+  peep = 0;
   finished = FALSE;
   do {
     t = cno+peep;
@@ -613,10 +613,10 @@ static void peepAfterComment (void)
 static void init (void)
 {
   mcLexBuf_currenttoken = mcReserved_eoftok;
-  nextTokNo = static_cast<unsigned int> (0);
-  currentSource = static_cast<sourceList> (NULL);
-  listOfTokens.head = static_cast<tokenBucket> (NULL);
-  listOfTokens.tail = static_cast<tokenBucket> (NULL);
+  nextTokNo = 0;
+  currentSource = NULL;
+  listOfTokens.head = NULL;
+  listOfTokens.tail = NULL;
   useBufferedTokens = FALSE;
   procedureComment = static_cast<mcComment_commentDesc> (NULL);
   bodyComment = static_cast<mcComment_commentDesc> (NULL);
@@ -668,8 +668,8 @@ static sourceList newElement (void * s)
   else
     {
       l->name = DynamicStrings_InitStringCharStar (s);
-      l->left = static_cast<sourceList> (NULL);
-      l->right = static_cast<sourceList> (NULL);
+      l->left = NULL;
+      l->right = NULL;
     }
   return l;
   /* static analysis guarentees a RETURN statement will be used before here.  */
@@ -1208,7 +1208,7 @@ static tokenBucket findtokenBucket (unsigned int *tokenNo)
         }
       b = b->next;
     }
-  return static_cast<tokenBucket> (NULL);
+  return NULL;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
 }
@@ -1238,7 +1238,7 @@ static void addTokToList (mcReserved_toktype t, nameKey_Name n, int i, mcComment
         {}  /* empty.  */
       /* list error  */
       listOfTokens.tail = listOfTokens.head;
-      listOfTokens.tail->len = static_cast<unsigned int> (0);
+      listOfTokens.tail->len = 0;
     }
   else if (listOfTokens.tail->len == MaxBucketSize)
     {
@@ -1251,11 +1251,11 @@ static void addTokToList (mcReserved_toktype t, nameKey_Name n, int i, mcComment
         {
           /* list error  */
           listOfTokens.tail = listOfTokens.tail->next;
-          listOfTokens.tail->len = static_cast<unsigned int> (0);
+          listOfTokens.tail->len = 0;
         }
       listOfTokens.lastBucketOffset += MaxBucketSize;
     }
-  listOfTokens.tail->next = static_cast<tokenBucket> (NULL);
+  listOfTokens.tail->next = NULL;
   mcDebug_assert (listOfTokens.tail->len != MaxBucketSize);
   listOfTokens.tail->buf.array[listOfTokens.tail->len].token = t;
   listOfTokens.tail->buf.array[listOfTokens.tail->len].str = n;
@@ -1433,7 +1433,7 @@ extern "C" void mcLexBuf_reInitialize (void)
 
 extern "C" void mcLexBuf_resetForNewPass (void)
 {
-  nextTokNo = static_cast<unsigned int> (0);
+  nextTokNo = 0;
   useBufferedTokens = TRUE;
 }
 
@@ -1486,7 +1486,7 @@ extern "C" void mcLexBuf_insertToken (mcReserved_toktype token)
         {
           listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
         }
-      addTokToList (mcLexBuf_currenttoken, static_cast<nameKey_Name> (nameKey_NulName), 0, static_cast<mcComment_commentDesc> (NULL), mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
+      addTokToList (mcLexBuf_currenttoken, nameKey_NulName, 0, static_cast<mcComment_commentDesc> (NULL), mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
       mcLexBuf_getToken ();
     }
 }
@@ -1505,7 +1505,7 @@ extern "C" void mcLexBuf_insertTokenAndRewind (mcReserved_toktype token)
         {
           listOfTokens.tail->buf.array[listOfTokens.tail->len-1].token = token;
         }
-      addTokToList (mcLexBuf_currenttoken, static_cast<nameKey_Name> (nameKey_NulName), 0, static_cast<mcComment_commentDesc> (NULL), mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
+      addTokToList (mcLexBuf_currenttoken, nameKey_NulName, 0, static_cast<mcComment_commentDesc> (NULL), mcLexBuf_getLineNo (), mcLexBuf_getColumnNo (), currentSource);
       mcLexBuf_currenttoken = token;
     }
 }
@@ -1532,7 +1532,7 @@ extern "C" unsigned int mcLexBuf_getLineNo (void)
 {
   if (nextTokNo == 0)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1551,7 +1551,7 @@ extern "C" unsigned int mcLexBuf_getTokenNo (void)
 {
   if (nextTokNo == 0)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1578,7 +1578,7 @@ extern "C" unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned i
   b = findtokenBucket (&tokenNo);
   if (b == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1594,7 +1594,7 @@ extern "C" unsigned int mcLexBuf_tokenToLineNo (unsigned int tokenNo, unsigned i
               l = l->left;
               if (l == b->buf.array[tokenNo].file->left)
                 {
-                  return static_cast<unsigned int> (0);
+                  return 0;
                 }
               depth -= 1;
             }
@@ -1615,7 +1615,7 @@ extern "C" unsigned int mcLexBuf_getColumnNo (void)
 {
   if (nextTokNo == 0)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1642,7 +1642,7 @@ extern "C" unsigned int mcLexBuf_tokenToColumnNo (unsigned int tokenNo, unsigned
   b = findtokenBucket (&tokenNo);
   if (b == NULL)
     {
-      return static_cast<unsigned int> (0);
+      return 0;
     }
   else
     {
@@ -1658,7 +1658,7 @@ extern "C" unsigned int mcLexBuf_tokenToColumnNo (unsigned int tokenNo, unsigned
               l = l->left;
               if (l == b->buf.array[tokenNo].file->left)
                 {
-                  return static_cast<unsigned int> (0);
+                  return 0;
                 }
               depth -= 1;
             }
@@ -1727,7 +1727,7 @@ extern "C" void mcLexBuf_addTok (mcReserved_toktype t)
 {
   if (! ((t == mcReserved_eoftok) && (isLastTokenEof ())))
     {
-      addTokToList (t, static_cast<nameKey_Name> (nameKey_NulName), 0, static_cast<mcComment_commentDesc> (NULL), mcflex_getLineNo (), mcflex_getColumnNo (), currentSource);
+      addTokToList (t, nameKey_NulName, 0, static_cast<mcComment_commentDesc> (NULL), mcflex_getLineNo (), mcflex_getColumnNo (), currentSource);
       currentUsed = TRUE;
     }
 }
@@ -1774,7 +1774,7 @@ extern "C" void mcLexBuf_addTokInteger (mcReserved_toktype t, int i)
 
 extern "C" void mcLexBuf_addTokComment (mcReserved_toktype t, mcComment_commentDesc com)
 {
-  addTokToList (t, static_cast<nameKey_Name> (nameKey_NulName), 0, com, mcflex_getLineNo (), mcflex_getColumnNo (), currentSource);
+  addTokToList (t, nameKey_NulName, 0, com, mcflex_getLineNo (), mcflex_getColumnNo (), currentSource);
   currentUsed = TRUE;
 }
 
diff --git a/gcc/m2/mc-boot/GmcMetaError.c b/gcc/m2/mc-boot/GmcMetaError.c
index f0034879a81..4c0f0ffd5a6 100644
--- a/gcc/m2/mc-boot/GmcMetaError.c
+++ b/gcc/m2/mc-boot/GmcMetaError.c
@@ -1296,8 +1296,8 @@ static DynamicStrings_String doFormat (mcError_error *e, errorType *t, DynamicSt
   int l;
 
   r = DynamicStrings_InitString ((const char *) "", 0);
-  i = static_cast<int> (0);
-  l = static_cast<int> (DynamicStrings_Length (s));
+  i = 0;
+  l = DynamicStrings_Length (s);
   ebnf (e, t, &r, s, sym, &i, l);
   s = DynamicStrings_KillString (s);
   return r;
diff --git a/gcc/m2/mc-boot/GmcOptions.c b/gcc/m2/mc-boot/GmcOptions.c
index 6d6c92fede1..9f00acf1bbe 100644
--- a/gcc/m2/mc-boot/GmcOptions.c
+++ b/gcc/m2/mc-boot/GmcOptions.c
@@ -778,7 +778,7 @@ extern "C" DynamicStrings_String mcOptions_handleOptions (void)
   unsigned int i;
   DynamicStrings_String arg;
 
-  i = static_cast<unsigned int> (1);
+  i = 1;
   while (SArgs_GetArg (&arg, i))
     {
       if ((DynamicStrings_Length (arg)) > 0)
diff --git a/gcc/m2/mc-boot/GmcPretty.c b/gcc/m2/mc-boot/GmcPretty.c
index 53ea500bdbb..618579d095e 100644
--- a/gcc/m2/mc-boot/GmcPretty.c
+++ b/gcc/m2/mc-boot/GmcPretty.c
@@ -221,11 +221,11 @@ extern "C" mcPretty_pretty mcPretty_initPretty (mcPretty_writeProc w, mcPretty_w
   p->writeln = l;
   p->needsSpace = FALSE;
   p->needsIndent = FALSE;
-  p->curPos = static_cast<unsigned int> (0);
-  p->curLine = static_cast<unsigned int> (0);
-  p->seekPos = static_cast<unsigned int> (0);
-  p->indent = static_cast<unsigned int> (0);
-  p->stacked = static_cast<mcPretty_pretty> (NULL);
+  p->curPos = 0;
+  p->curLine = 0;
+  p->seekPos = 0;
+  p->indent = 0;
+  p->stacked = NULL;
   return p;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -255,10 +255,10 @@ extern "C" mcPretty_pretty mcPretty_dupPretty (mcPretty_pretty p)
 
 extern "C" void mcPretty_killPretty (mcPretty_pretty *p)
 {
-  (*p) = static_cast<mcPretty_pretty> (NULL);
+  (*p) = NULL;
   return ;
   Storage_DEALLOCATE ((void **) &(*p), sizeof (_T1));
-  (*p) = static_cast<mcPretty_pretty> (NULL);
+  (*p) = NULL;
 }
 
 
@@ -410,7 +410,7 @@ extern "C" void mcPretty_prints (mcPretty_pretty p, DynamicStrings_String s)
   unsigned int i;
 
   l = DynamicStrings_Length (s);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   flushSpace (p);
   while (i < l)
     {
@@ -418,7 +418,7 @@ extern "C" void mcPretty_prints (mcPretty_pretty p, DynamicStrings_String s)
         {
           p->needsIndent = TRUE;
           p->needsSpace = FALSE;
-          p->curPos = static_cast<unsigned int> (0);
+          p->curPos = 0;
           (*p->writeln.proc) ();
           p->seekPos += 1;
           p->curLine += 1;
@@ -447,7 +447,7 @@ extern "C" void mcPretty_raw (mcPretty_pretty p, DynamicStrings_String s)
   unsigned int i;
 
   l = DynamicStrings_Length (s);
-  i = static_cast<unsigned int> (0);
+  i = 0;
   flushSpace (p);
   flushIndent (p);
   while (i < l)
diff --git a/gcc/m2/mc-boot/GmcPrintf.c b/gcc/m2/mc-boot/GmcPrintf.c
index b997146148a..4b5b06c5586 100644
--- a/gcc/m2/mc-boot/GmcPrintf.c
+++ b/gcc/m2/mc-boot/GmcPrintf.c
@@ -189,8 +189,8 @@ static unsigned int TranslateNameToCharStar (char *a, unsigned int _a_high, unsi
   unsigned int i;
   unsigned int h;
 
-  argno = static_cast<unsigned int> (1);
-  i = static_cast<unsigned int> (0);
+  argno = 1;
+  i = 0;
   h = StrLib_StrLen ((const char *) a, _a_high);
   while (i < h)
     {
diff --git a/gcc/m2/mc-boot/GmcSearch.c b/gcc/m2/mc-boot/GmcSearch.c
index 1e03c16553a..44d4aa5a7d0 100644
--- a/gcc/m2/mc-boot/GmcSearch.c
+++ b/gcc/m2/mc-boot/GmcSearch.c
@@ -278,12 +278,12 @@ extern "C" unsigned int mcSearch_findSourceFile (DynamicStrings_String FileName,
     {
       completeSearchPath = DynamicStrings_ConCat (DynamicStrings_ConCatChar (DynamicStrings_Dup (UserPath), ':'), InitialPath);
     }
-  start = static_cast<int> (0);
+  start = 0;
   end = DynamicStrings_Index (completeSearchPath, ':', (unsigned int ) (start));
   do {
     if (end == -1)
       {
-        end = static_cast<int> (0);
+        end = 0;
       }
     newpath = DynamicStrings_Slice (completeSearchPath, start, end);
     if (DynamicStrings_EqualArray (newpath, (const char *) ".", 1))
diff --git a/gcc/m2/mc-boot/GmcStack.c b/gcc/m2/mc-boot/GmcStack.c
index a034cd177e6..ce1820d98f4 100644
--- a/gcc/m2/mc-boot/GmcStack.c
+++ b/gcc/m2/mc-boot/GmcStack.c
@@ -104,7 +104,7 @@ extern "C" mcStack_stack mcStack_init (void)
 
   Storage_ALLOCATE ((void **) &s, sizeof (_T1));
   s->list = Indexing_InitIndex (1);
-  s->count = static_cast<unsigned int> (0);
+  s->count = 0;
   return s;
   /* static analysis guarentees a RETURN statement will be used before here.  */
   __builtin_unreachable ();
@@ -119,7 +119,7 @@ extern "C" void mcStack_kill (mcStack_stack *s)
 {
   (*s)->list = Indexing_KillIndex ((*s)->list);
   Storage_DEALLOCATE ((void **) &(*s), sizeof (_T1));
-  (*s) = static_cast<mcStack_stack> (NULL);
+  (*s) = NULL;
 }
 
 
diff --git a/gcc/m2/mc-boot/Gmcp1.c b/gcc/m2/mc-boot/Gmcp1.c
index 0f141ed6e08..131cd8bbac9 100644
--- a/gcc/m2/mc-boot/Gmcp1.c
+++ b/gcc/m2/mc-boot/Gmcp1.c
@@ -1943,7 +1943,7 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
   DynamicStrings_String str;
   DynamicStrings_String message;
 
-  n = static_cast<unsigned int> (0);
+  n = 0;
   message = DynamicStrings_InitString ((const char *) "", 0);
   if ((((1 << (mcReserved_stringtok-mcReserved_recordtok)) & (stopset2)) != 0))
     {
@@ -2942,11 +2942,11 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 {
   /* and again (see above re: ORD)
   */
-  if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet (static_cast<mcReserved_toktype> (mcReserved_identtok), stopset0, stopset1, stopset2))))
+  if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet (mcReserved_identtok, stopset0, stopset1, stopset2))))
     {
       /* SyntaxCheck would fail since currentoken is not part of the stopset
          we check to see whether any of currenttoken might be a commonly omitted token  */
-      if ((((((((CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2)) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rcbratok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2)))
+      if ((((((((CheckAndInsert (mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert (mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_commatok, stopset0, stopset1, stopset2)))
         {}  /* empty.  */
     }
 }
@@ -2985,7 +2985,7 @@ static void Ident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2
   /* 
    PushTF(makekey(currentstring), identtok)
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_identtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_identtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -2999,7 +2999,7 @@ static void string (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
    PushTF(makekey(currentstring), stringtok) ;
    BuildString
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_stringtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_stringtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3013,7 +3013,7 @@ static void Integer (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
    PushTF(makekey(currentstring), integertok) ;
    BuildNumber
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_integertok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_integertok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3027,7 +3027,7 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
    PushTF(makekey(currentstring), realtok) ;
    BuildNumber
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_realtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_realtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3091,7 +3091,7 @@ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
 
 static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
   curmodule = decl_lookupModule (curident);
   decl_enterScope (curmodule);
@@ -3099,7 +3099,7 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
     {
       Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
     {
       Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
@@ -3109,7 +3109,7 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
   checkEndName (curmodule, curident, (const char *) "program module", 14);
   decl_leaveScope ();
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_periodtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3134,8 +3134,8 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_implementationtok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_implementationtok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
+  Expect (mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
   curmodule = decl_lookupImp (curident);
   decl_enterScope (decl_lookupDef (curident));
@@ -3144,7 +3144,7 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
     {
       Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
     {
       Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
@@ -3155,7 +3155,7 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   checkEndName (curmodule, curident, (const char *) "implementation module", 21);
   decl_leaveScope ();
   decl_leaveScope ();
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_periodtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3227,7 +3227,7 @@ static void Qualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_periodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -3266,42 +3266,42 @@ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
 {
   if (mcLexBuf_currenttoken == mcReserved_equaltok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_equaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_hashtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_hashtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_hashtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessgreatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greaterequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_intok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_intok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_intok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3344,13 +3344,13 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_plustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       ConstTerm (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       ConstTerm (stopset0, stopset1, stopset2);
     }
   else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
@@ -3378,17 +3378,17 @@ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_plustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_minustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ortok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ortok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ortok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3431,37 +3431,37 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_timestok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_timestok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_timestok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_dividetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_dividetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_dividetok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_divtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_divtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_divtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_modtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_modtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_modtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_remtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_remtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_remtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_andtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_andtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_andtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ambersandtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ambersandtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3500,14 +3500,14 @@ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_nottok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_nottok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstFactor (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_attributetok)
@@ -3550,7 +3550,7 @@ static void ComponentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -3569,7 +3569,7 @@ static void ComponentValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   ComponentElement (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_bytok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_bytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bytok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_bytok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -3588,7 +3588,7 @@ static void ArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
   ComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -3605,12 +3605,12 @@ static void ArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
 
 static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lcbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
     {
       ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rcbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rcbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3689,13 +3689,13 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 
 static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_attributetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_attributetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
+  Expect (mcReserved_builtintok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   ConstAttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3717,11 +3717,11 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3741,9 +3741,9 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
 
 static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   AttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3774,9 +3774,9 @@ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
 
 static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3815,7 +3815,7 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
 
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
   n = decl_makeTypeImp (curident);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
   Alignment (stopset0, stopset1, stopset2);
 }
@@ -3917,9 +3917,9 @@ static void SimpleType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3936,7 +3936,7 @@ static void IdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -3953,11 +3953,11 @@ static void IdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void SubrangeType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3971,15 +3971,15 @@ static void SubrangeType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 
 static void ArrayType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_arraytok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_arraytok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   SimpleType (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       SimpleType (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
     }
    /* while  */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0, stopset1, stopset2);
 }
 
@@ -3995,13 +3995,13 @@ static void ArrayType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_recordtok), stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
     {
       DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
     }
   FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4015,9 +4015,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void DefaultRecordAttributes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   AttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4033,15 +4033,15 @@ static void RecordFieldPragma (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldPragmaExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
       while (mcLexBuf_currenttoken == mcReserved_commatok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           FieldPragmaExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
         }
        /* while  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -4073,9 +4073,9 @@ static void PragmaConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 {
   if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -4091,9 +4091,9 @@ static void PragmaConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 static void AttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4110,7 +4110,7 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   FieldListStatement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_semicolontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_semicolontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldListStatement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4149,29 +4149,29 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   if (mcLexBuf_currenttoken == mcReserved_identtok)
     {
       IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
       RecordFieldPragma (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_casetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_casetok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       Varient (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
       while (mcLexBuf_currenttoken == mcReserved_bartok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_bartok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+          Expect (mcReserved_bartok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
           Varient (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok))), stopset2);
         }
        /* while  */
       if (mcLexBuf_currenttoken == mcReserved_elsetok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_elsetok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
         }
-      Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4211,7 +4211,7 @@ static void CaseTag (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
   TagIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_colontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Qualident (stopset0, stopset1, stopset2);
     }
 }
@@ -4230,7 +4230,7 @@ static void Varient (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))))) != 0))))
     {
       VarientCaseLabelList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldListSequence (stopset0, stopset1, stopset2);
     }
 }
@@ -4249,7 +4249,7 @@ static void VarientCaseLabelList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   VarientCaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       VarientCaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4269,7 +4269,7 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4308,42 +4308,42 @@ static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 {
   if (mcLexBuf_currenttoken == mcReserved_equaltok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_equaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_hashtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_hashtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_hashtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessgreatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greaterequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_intok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_intok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_intok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4388,13 +4388,13 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_plustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       SilentConstTerm (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       SilentConstTerm (stopset0, stopset1, stopset2);
     }
   else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
@@ -4422,17 +4422,17 @@ static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_plustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_minustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ortok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ortok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ortok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4475,37 +4475,37 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_timestok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_timestok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_timestok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_dividetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_dividetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_dividetok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_divtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_divtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_divtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_modtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_modtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_modtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_remtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_remtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_remtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_andtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_andtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_andtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ambersandtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ambersandtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4546,14 +4546,14 @@ static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_nottok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_nottok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstFactor (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_attributetok)
@@ -4595,13 +4595,13 @@ static void SilentConstString (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 
 static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_attributetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_attributetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
+  Expect (mcReserved_builtintok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   SilentConstAttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4623,11 +4623,11 @@ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stop
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstString (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4650,7 +4650,7 @@ static void SilentComponentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
   SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4669,7 +4669,7 @@ static void SilentComponentValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   SilentComponentElement (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_bytok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_bytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bytok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_bytok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4688,7 +4688,7 @@ static void SilentArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1,
   SilentComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4705,12 +4705,12 @@ static void SilentArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1,
 
 static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lcbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
     {
       SilentArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rcbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rcbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4776,7 +4776,7 @@ static void SilentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4792,12 +4792,12 @@ static void SilentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void SilentActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
     {
       SilentExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4814,7 +4814,7 @@ static void SilentExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4833,19 +4833,19 @@ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
 {
   if (mcLexBuf_currenttoken == mcReserved_settok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_settok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+      Expect (mcReserved_settok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_packedsettok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_packedsettok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+      Expect (mcReserved_packedsettok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
     }
   else
     {
       /* avoid dangling else.  */
       ErrorArray ((const char *) "expecting one of: PACKEDSET SET", 31);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   SimpleType (stopset0, stopset1, stopset2);
 }
 
@@ -4860,8 +4860,8 @@ static void SetType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
 
 static void PointerType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_pointertok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_totok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_totok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_pointertok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_totok-mcReserved_recordtok))));
+  Expect (mcReserved_totok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0, stopset1, stopset2);
 }
 
@@ -4876,7 +4876,7 @@ static void PointerType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 
 static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_proceduretok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_proceduretok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       FormalTypeList (stopset0, stopset1, stopset2);
@@ -4895,17 +4895,17 @@ static void ProcedureType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void FormalTypeList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_rparatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
       FormalReturn (stopset0, stopset1, stopset2);
     }
   else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
     {
       /* avoid dangling else.  */
       ProcedureParameters (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
       FormalReturn (stopset0, stopset1, stopset2);
     }
   else
@@ -4928,7 +4928,7 @@ static void FormalReturn (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 {
   if (mcLexBuf_currenttoken == mcReserved_colontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       OptReturnType (stopset0, stopset1, stopset2);
     }
 }
@@ -4946,9 +4946,9 @@ static void OptReturnType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 {
   if (mcLexBuf_currenttoken == mcReserved_lsbratok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lsbratok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_identtok)
     {
@@ -4976,7 +4976,7 @@ static void ProcedureParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
   ProcedureParameter (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       ProcedureParameter (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4996,12 +4996,12 @@ static void ProcedureParameter (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
 {
   if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodperiodtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_vartok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_vartok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_vartok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FormalType (stopset0, stopset1, stopset2);
     }
   else if ((mcLexBuf_currenttoken == mcReserved_arraytok) || (mcLexBuf_currenttoken == mcReserved_identtok))
@@ -5037,9 +5037,9 @@ static void VarIdent (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
   n = decl_makeVar (curident);
   if (mcLexBuf_currenttoken == mcReserved_lsbratok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -5057,7 +5057,7 @@ static void VarIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
   VarIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       VarIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -5075,7 +5075,7 @@ static void VarIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 static void VariableDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   VarIdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
   Alignment (stopset0, stopset1, stopset2);
 }
@@ -5113,20 +5113,20 @@ static void SubDesignator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 {
   if (mcLexBuf_currenttoken == mcReserved_periodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lsbratok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       ArrayExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_uparrowtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_uparrowtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_uparrowtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -5149,7 +5149,7 @@ static void ArrayExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
   Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -5169,7 +5169,7 @@ static void ExpList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
   Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -5227,13 +5227,13 @@ static void UnaryOrTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_plustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Term (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Term (stopset0, stopset1, stopset2);
     }
   else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
@@ -5297,14 +5297,14 @@ static void Factor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_nottok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_nottok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
         {
           Factor (stopset0, stopset1, stopset2);
@@ -5410,12 +5410,12 @@ static void SimpleDes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
     {
       ExpList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5429,7 +5429,7 @@ static void ActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
 
 static void ExitStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_exittok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_exittok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5443,7 +5443,7 @@ static void ExitStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void ReturnStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_returntok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_returntok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
     {
       Expression (stopset0, stopset1, stopset2);
@@ -5550,7 +5550,7 @@ static void Statement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void RetryStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_retrytok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_retrytok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5571,7 +5571,7 @@ static void AssignmentOrProcedureCall (SetOfStop0 stopset0, SetOfStop1 stopset1,
   Designator (stopset0|(SetOfStop0) ((1 << (mcReserved_becomestok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_becomestok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_becomestok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_becomestok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Expression (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
@@ -5596,7 +5596,7 @@ static void StatementSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   Statement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_semicolontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_semicolontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Statement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -5615,24 +5615,24 @@ static void StatementSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 
 static void IfStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_iftok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_iftok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_thentok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_thentok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_elsiftok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_thentok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_elsiftok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_elsiftok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
   while (mcLexBuf_currenttoken == mcReserved_elsiftok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_elsiftok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_elsiftok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Expression (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_thentok-mcReserved_recordtok))));
-      Expect (static_cast<mcReserved_toktype> (mcReserved_thentok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_elsiftok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_thentok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_elsiftok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_elsiftok-mcReserved_arraytok))), stopset2);
     }
    /* while  */
   if (mcLexBuf_currenttoken == mcReserved_elsetok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_elsetok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5647,13 +5647,13 @@ static void IfStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 
 static void CaseStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_casetok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   Case (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
   while (mcLexBuf_currenttoken == mcReserved_bartok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bartok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_bartok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       Case (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok))), stopset2);
     }
    /* while  */
@@ -5673,14 +5673,14 @@ static void CaseEndStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
 {
   if (mcLexBuf_currenttoken == mcReserved_endtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_elsetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_elsetok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -5703,7 +5703,7 @@ static void Case (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))))) != 0))))
     {
       CaseLabelList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       StatementSequence (stopset0, stopset1, stopset2);
     }
 }
@@ -5722,7 +5722,7 @@ static void CaseLabelList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   CaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       CaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -5742,7 +5742,7 @@ static void CaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -5759,11 +5759,11 @@ static void CaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void WhileStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_whiletok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_whiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_dotok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_dotok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_dotok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5777,9 +5777,9 @@ static void WhileStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void RepeatStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_repeattok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_untiltok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_repeattok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_untiltok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_untiltok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_untiltok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_untiltok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1, stopset2);
 }
 
@@ -5796,20 +5796,20 @@ static void RepeatStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
 
 static void ForStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_fortok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_fortok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_becomestok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_becomestok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_becomestok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_totok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_totok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_totok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_bytok-mcReserved_arraytok)) | (1 << (mcReserved_dotok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_bytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bytok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_bytok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_dotok-mcReserved_arraytok))), stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_dotok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_dotok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5823,9 +5823,9 @@ static void ForStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 
 static void LoopStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_looptok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_looptok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5840,11 +5840,11 @@ static void LoopStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void WithStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_withtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_withtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Designator (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_dotok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_dotok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+  Expect (mcReserved_dotok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
   StatementSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -5860,7 +5860,7 @@ static void WithStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 static void ProcedureDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   ProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   ProcedureBlock (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0, stopset1, stopset2);
 }
@@ -5936,18 +5936,18 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
       /* seen optional [ | ] expression  */
       if (mcLexBuf_currenttoken == mcReserved_attributetok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_attributetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
-          Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_attributetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
+          Expect (mcReserved_builtintok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+          Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+          Expect (mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+          Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+          Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
         }
       else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
         {
           /* avoid dangling else.  */
-          Expect (static_cast<mcReserved_toktype> (mcReserved_inlinetok), stopset0, stopset1, stopset2);
+          Expect (mcReserved_inlinetok, stopset0, stopset1, stopset2);
         }
       else
         {
@@ -5973,7 +5973,7 @@ static void DefineBuiltinProcedure (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
 
 static void ProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_proceduretok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_inlinetok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_proceduretok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_inlinetok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   DefineBuiltinProcedure (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   ProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
   decl_enterScope (curproc);
@@ -6001,12 +6001,12 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
       /* seen optional [ | ] expression  */
       if (mcLexBuf_currenttoken == mcReserved_builtintok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0, stopset1, stopset2);
+          Expect (mcReserved_builtintok, stopset0, stopset1, stopset2);
         }
       else if (mcLexBuf_currenttoken == mcReserved_inlinetok)
         {
           /* avoid dangling else.  */
-          Expect (static_cast<mcReserved_toktype> (mcReserved_inlinetok), stopset0, stopset1, stopset2);
+          Expect (mcReserved_inlinetok, stopset0, stopset1, stopset2);
         }
       else
         {
@@ -6030,7 +6030,7 @@ static void Builtin (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
 
 static void DefProcedureHeading (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_proceduretok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_inlinetok-mcReserved_recordtok)) | (1 << (mcReserved_builtintok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_proceduretok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_inlinetok-mcReserved_recordtok)) | (1 << (mcReserved_builtintok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Builtin (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   DefProcedureIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_lparatok)
@@ -6061,10 +6061,10 @@ static void ProcedureBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
    /* while  */
   if (mcLexBuf_currenttoken == mcReserved_begintok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_begintok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_begintok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       ProcedureBlockBody (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
   decl_leaveScope ();
 }
 
@@ -6086,7 +6086,7 @@ static void Block (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2
    /* while  */
   InitialBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok))), stopset2);
   FinalBlock (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6102,7 +6102,7 @@ static void InitialBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 {
   if (mcLexBuf_currenttoken == mcReserved_begintok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_begintok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_begintok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       InitialBlockBody (stopset0, stopset1, stopset2);
     }
 }
@@ -6120,7 +6120,7 @@ static void FinalBlock (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 {
   if (mcLexBuf_currenttoken == mcReserved_finallytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_finallytok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
+      Expect (mcReserved_finallytok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok)) | (1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok))));
       FinalBlockBody (stopset0, stopset1, stopset2);
     }
 }
@@ -6139,7 +6139,7 @@ static void InitialBlockBody (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
   NormalPart (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_excepttok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_excepttok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_excepttok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       ExceptionalPart (stopset0, stopset1, stopset2);
     }
 }
@@ -6158,7 +6158,7 @@ static void FinalBlockBody (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   NormalPart (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_excepttok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_excepttok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_excepttok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       ExceptionalPart (stopset0, stopset1, stopset2);
     }
 }
@@ -6177,7 +6177,7 @@ static void ProcedureBlockBody (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
   NormalPart (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_excepttok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_excepttok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_excepttok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_excepttok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_exittok-mcReserved_arraytok)) | (1 << (mcReserved_fortok-mcReserved_arraytok)) | (1 << (mcReserved_looptok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok)) | (1 << (mcReserved_iftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_returntok-mcReserved_recordtok)) | (1 << (mcReserved_retrytok-mcReserved_recordtok)) | (1 << (mcReserved_asmtok-mcReserved_recordtok)) | (1 << (mcReserved_withtok-mcReserved_recordtok)) | (1 << (mcReserved_repeattok-mcReserved_recordtok)) | (1 << (mcReserved_whiletok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       ExceptionalPart (stopset0, stopset1, stopset2);
     }
 }
@@ -6227,33 +6227,33 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_consttok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_consttok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_consttok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           ConstantDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
        /* while  */
     }
   else if (mcLexBuf_currenttoken == mcReserved_typetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_typetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           TypeDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
        /* while  */
     }
   else if (mcLexBuf_currenttoken == mcReserved_vartok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_vartok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           VariableDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
        /* while  */
     }
@@ -6261,13 +6261,13 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
     {
       /* avoid dangling else.  */
       ProcedureDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_moduletok)
     {
       /* avoid dangling else.  */
       ModuleDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -6287,12 +6287,12 @@ static void Declaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 
 static void DefFormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
     {
       DefMultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
   FormalReturn (stopset0, stopset1, stopset2);
 }
 
@@ -6317,7 +6317,7 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
       FPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
       if (mcLexBuf_currenttoken == mcReserved_semicolontok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
           DefMultiFPSection (stopset0, stopset1, stopset2);
         }
     }
@@ -6339,12 +6339,12 @@ static void DefMultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 
 static void FormalParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   if ((mcLexBuf_currenttoken == mcReserved_lsbratok) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))))) != 0))))
     {
       MultiFPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
   FormalReturn (stopset0, stopset1, stopset2);
 }
 
@@ -6361,9 +6361,9 @@ static void AttributeNoReturn (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -6388,7 +6388,7 @@ static void MultiFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
       FPSection (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
       if (mcLexBuf_currenttoken == mcReserved_semicolontok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_periodperiodperiodtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
           MultiFPSection (stopset0, stopset1, stopset2);
         }
     }
@@ -6444,7 +6444,7 @@ static void DefExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodperiodtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -6471,7 +6471,7 @@ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
   else if (mcLexBuf_currenttoken == mcReserved_periodperiodperiodtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodperiodtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_periodperiodperiodtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -6491,9 +6491,9 @@ static void ExtendedFP (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void VarFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_vartok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_colontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   FormalType (stopset0, stopset1, stopset2);
 }
 
@@ -6509,7 +6509,7 @@ static void VarFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 static void NonVarFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_colontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   FormalType (stopset0, stopset1, stopset2);
 }
 
@@ -6525,16 +6525,16 @@ static void NonVarFPSection (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
 
 static void OptArg (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_colontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   FormalType (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok)) | (1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_equaltok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6549,13 +6549,13 @@ static void OptArg (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
 
 static void DefOptArg (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_colontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   FormalType (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6571,8 +6571,8 @@ static void FormalType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 {
   while (mcLexBuf_currenttoken == mcReserved_arraytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_arraytok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_arraytok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
+      Expect (mcReserved_oftok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
     }
    /* while  */
   Qualident (stopset0, stopset1, stopset2);
@@ -6590,13 +6590,13 @@ static void FormalType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_lsbratok)
     {
       Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
     {
       Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
@@ -6621,9 +6621,9 @@ static void ModuleDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 
 static void Priority (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6639,16 +6639,16 @@ static void Priority (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
 
 static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_exporttok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_qualifiedtok-mcReserved_arraytok)) | (1 << (mcReserved_unqualifiedtok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_exporttok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_qualifiedtok-mcReserved_arraytok)) | (1 << (mcReserved_unqualifiedtok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_qualifiedtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_qualifiedtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_qualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_unqualifiedtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_unqualifiedtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_unqualifiedtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_identtok)
@@ -6661,7 +6661,7 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
       /* avoid dangling else.  */
       ErrorArray ((const char *) "expecting one of: identifier UNQUALIFIED QUALIFIED", 50);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6677,12 +6677,12 @@ static void Export (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
 
 static void FromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_fromtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_fromtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok))), stopset2);
   registerImport (curident, FALSE);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_importtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_importtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6704,7 +6704,7 @@ static void ImportModuleList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
   registerImport (curident, TRUE);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
       registerImport (curident, TRUE);
     }
@@ -6722,9 +6722,9 @@ static void ImportModuleList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
 
 static void WithoutFromImport (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_importtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_importtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   ImportModuleList (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
 }
 
 
@@ -6785,16 +6785,16 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
   unsigned int c;
 
   c = FALSE;
-  Expect (static_cast<mcReserved_toktype> (mcReserved_definitiontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_definitiontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
+  Expect (mcReserved_moduletok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_fortok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_fortok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_fortok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_fortok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       string (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       c = TRUE;
     }
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_exporttok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
   curmodule = decl_lookupDef (curident);
   if (c)
     {
@@ -6815,9 +6815,9 @@ static void DefinitionModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
       Definition (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
     }
    /* while  */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_periodtok, stopset0, stopset1, stopset2);
   checkEndName (curmodule, curident, (const char *) "definition module", 17);
   decl_leaveScope ();
 }
@@ -6847,16 +6847,16 @@ static void DefTypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfS
       n = decl_makeType (curident);
       if (mcLexBuf_currenttoken == mcReserved_semicolontok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           decl_putTypeHidden (n);
         }
       else if (mcLexBuf_currenttoken == mcReserved_equaltok)
         {
           /* avoid dangling else.  */
-          Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
           Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
           Alignment (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
       else
         {
@@ -6886,7 +6886,7 @@ static void ConstantDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
 
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
   n = decl_makeConst (curident);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0, stopset1, stopset2);
 }
 
@@ -6906,18 +6906,18 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 {
   if (mcLexBuf_currenttoken == mcReserved_consttok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_consttok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_consttok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           ConstantDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
        /* while  */
     }
   else if (mcLexBuf_currenttoken == mcReserved_typetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_typetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_typetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           DefTypeDeclaration (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
@@ -6927,11 +6927,11 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
   else if (mcLexBuf_currenttoken == mcReserved_vartok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_vartok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_vartok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       while (mcLexBuf_currenttoken == mcReserved_identtok)
         {
           VariableDeclaration (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-          Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
         }
        /* while  */
     }
@@ -6939,7 +6939,7 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
     {
       /* avoid dangling else.  */
       DefProcedureHeading (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_semicolontok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -6959,14 +6959,14 @@ static void Definition (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void AsmStatement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_asmtok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
+  Expect (mcReserved_asmtok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_volatiletok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_volatiletok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_volatiletok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+      Expect (mcReserved_volatiletok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
   AsmOperands (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -7000,15 +7000,15 @@ static void AsmOperandSpec (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 {
   if (mcLexBuf_currenttoken == mcReserved_colontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       AsmList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
       if (mcLexBuf_currenttoken == mcReserved_colontok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+          Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
           AsmList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
           if (mcLexBuf_currenttoken == mcReserved_colontok)
             {
-              Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+              Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
               TrashList (stopset0, stopset1, stopset2);
             }
         }
@@ -7032,7 +7032,7 @@ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
     }
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       AsmElement (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -7049,9 +7049,9 @@ static void AsmList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
 
 static void NamedOperand (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -7084,9 +7084,9 @@ static void AsmElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 {
   AsmOperandName (stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
   string (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Expression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -7106,7 +7106,7 @@ static void TrashList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
     }
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       string (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
diff --git a/gcc/m2/mc-boot/Gmcp2.c b/gcc/m2/mc-boot/Gmcp2.c
index 3729004d220..8831c0e62d3 100644
--- a/gcc/m2/mc-boot/Gmcp2.c
+++ b/gcc/m2/mc-boot/Gmcp2.c
@@ -2058,7 +2058,7 @@ static DynamicStrings_String DescribeStop (SetOfStop0 stopset0, SetOfStop1 stops
   DynamicStrings_String str;
   DynamicStrings_String message;
 
-  n = static_cast<unsigned int> (0);
+  n = 0;
   message = DynamicStrings_InitString ((const char *) "", 0);
   if ((((1 << (mcReserved_stringtok-mcReserved_recordtok)) & (stopset2)) != 0))
     {
@@ -3057,11 +3057,11 @@ static void PeepToken (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 {
   /* and again (see above re: ORD)
   */
-  if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet (static_cast<mcReserved_toktype> (mcReserved_identtok), stopset0, stopset1, stopset2))))
+  if ((! (((( ((unsigned int) (mcLexBuf_currenttoken)) < 32) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & (stopset0)) != 0))) || ((( ((unsigned int) (mcLexBuf_currenttoken)) >= 32) && ( ((unsigned int) (mcLexBuf_currenttoken)) < 64)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & (stopset1)) != 0)))) || (( ((unsigned int) (mcLexBuf_currenttoken)) >= 64) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & (stopset2)) != 0))))) && (! (InStopSet (mcReserved_identtok, stopset0, stopset1, stopset2))))
     {
       /* SyntaxCheck would fail since currentoken is not part of the stopset
          we check to see whether any of currenttoken might be a commonly omitted token  */
-      if ((((((((CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1, stopset2)) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_rcbratok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2))) || (CheckAndInsert (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2)))
+      if ((((((((CheckAndInsert (mcReserved_semicolontok, stopset0, stopset1, stopset2)) || (CheckAndInsert (mcReserved_rsbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_rparatok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_rcbratok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_periodtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_oftok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_endtok, stopset0, stopset1, stopset2))) || (CheckAndInsert (mcReserved_commatok, stopset0, stopset1, stopset2)))
         {}  /* empty.  */
     }
 }
@@ -3097,7 +3097,7 @@ static void Expect (mcReserved_toktype t, SetOfStop0 stopset0, SetOfStop1 stopse
 static void Ident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   curident = nameKey_makekey (mcLexBuf_currentstring);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_identtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_identtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3111,7 +3111,7 @@ static void string (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset
    PushTF(makekey(currentstring), stringtok) ;
    BuildString
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_stringtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_stringtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3125,7 +3125,7 @@ static void Integer (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
    PushTF(makekey(currentstring), integertok) ;
    BuildNumber
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_integertok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_integertok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3139,7 +3139,7 @@ static void Real (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
    PushTF(makekey(currentstring), realtok) ;
    BuildNumber
   */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_realtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_realtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3205,7 +3205,7 @@ static void FileUnit (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
 
 static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
   curmodule = decl_lookupModule (curident);
   decl_enterScope (curmodule);
@@ -3213,7 +3213,7 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
     {
       Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
     {
       Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
@@ -3224,7 +3224,7 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   checkEndName (curmodule, curident, (const char *) "program module", 14);
   decl_leaveScope ();
   decl_setEnumsComplete (curmodule);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_periodtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3251,8 +3251,8 @@ static void ProgramModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_implementationtok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_moduletok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_implementationtok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2);
+  Expect (mcReserved_moduletok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1, stopset2);
   curmodule = decl_lookupImp (curident);
   decl_enterScope (decl_lookupDef (curident));
@@ -3261,7 +3261,7 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
     {
       Priority (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
+  Expect (mcReserved_semicolontok, stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_typetok-mcReserved_recordtok)) | (1 << (mcReserved_vartok-mcReserved_recordtok))));
   while (((mcLexBuf_currenttoken >= mcReserved_arraytok) && (mcLexBuf_currenttoken < mcReserved_recordtok)) && ((((1 << (mcLexBuf_currenttoken-mcReserved_arraytok)) & ((SetOfStop1) ((1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok))))) != 0)))
     {
       Import (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_fromtok-mcReserved_arraytok)) | (1 << (mcReserved_importtok-mcReserved_arraytok)) | (1 << (mcReserved_consttok-mcReserved_arraytok)) | (1 << (mcReserved_begintok-mcReserved_arraytok)) | (1 << (mcReserved_finallytok-mcReserved_arraytok)) | (1 << (mcReserved_moduletok-mcReserved_arraytok)) | (1 << (mcReserved_proceduretok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_vartok-mcReserved_recordtok)) | (1 << (mcReserved_typetok-mcReserved_recordtok))));
@@ -3273,7 +3273,7 @@ static void ImplementationModule (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   decl_leaveScope ();
   decl_leaveScope ();
   decl_setEnumsComplete (curmodule);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_periodtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3345,7 +3345,7 @@ static void Qualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_periodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodtok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodtok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_periodtok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -3363,7 +3363,7 @@ static void Qualident (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 static void ConstantDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0, stopset1, stopset2);
 }
 
@@ -3400,42 +3400,42 @@ static void Relation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stops
 {
   if (mcLexBuf_currenttoken == mcReserved_equaltok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_equaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_hashtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_hashtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_hashtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessgreatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greaterequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_intok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_intok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_intok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3478,13 +3478,13 @@ static void UnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_plustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       ConstTerm (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       ConstTerm (stopset0, stopset1, stopset2);
     }
   else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
@@ -3512,17 +3512,17 @@ static void AddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_plustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_minustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ortok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ortok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ortok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3565,37 +3565,37 @@ static void MulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
 {
   if (mcLexBuf_currenttoken == mcReserved_timestok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_timestok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_timestok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_dividetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_dividetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_dividetok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_divtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_divtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_divtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_modtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_modtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_modtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_remtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_remtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_remtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_andtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_andtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_andtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ambersandtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ambersandtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3634,14 +3634,14 @@ static void ConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 st
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_nottok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_nottok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstFactor (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_attributetok)
@@ -3684,7 +3684,7 @@ static void ComponentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSto
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -3703,7 +3703,7 @@ static void ComponentValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   ComponentElement (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_bytok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_bytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bytok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_bytok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -3722,7 +3722,7 @@ static void ArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
   ComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -3739,12 +3739,12 @@ static void ArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOf
 
 static void Constructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lcbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
     {
       ArraySetRecordValue (stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok))), stopset1, stopset2);
     }
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rcbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rcbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3823,13 +3823,13 @@ static void ConstActualParameters (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 
 static void ConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_attributetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_attributetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
+  Expect (mcReserved_builtintok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   ConstAttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3851,11 +3851,11 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Qualident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -3875,9 +3875,9 @@ static void ConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1,
 
 static void ByteAlignment (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   AttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3908,9 +3908,9 @@ static void OptAlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
 
 static void AlignmentExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -3945,7 +3945,7 @@ static void TypeDeclaration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop
 {
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_equaltok-mcReserved_eoftok))), stopset1, stopset2);
   typeDes = decl_lookupSym (curident);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_equaltok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
   Alignment (stopset0, stopset1, stopset2);
 }
@@ -4063,7 +4063,7 @@ static void EnumIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
   f = decl_makeEnumField (n, curident);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
       f = decl_makeEnumField (n, curident);
     }
@@ -4081,9 +4081,9 @@ static void EnumIdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 
 static void Enumeration (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   EnumIdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4100,7 +4100,7 @@ static void IdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4117,11 +4117,11 @@ static void IdentList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void SubrangeType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lsbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lsbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rsbratok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rsbratok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rsbratok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4135,15 +4135,15 @@ static void SubrangeType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 s
 
 static void ArrayType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_arraytok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_arraytok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   SimpleType (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lsbratok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       SimpleType (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
     }
    /* while  */
-  Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
   Type (stopset0, stopset1, stopset2);
 }
 
@@ -4159,13 +4159,13 @@ static void ArrayType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
 
 static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_recordtok), stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_recordtok, stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
     {
       DefaultRecordAttributes (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
     }
   FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4179,9 +4179,9 @@ static void RecordType (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 sto
 
 static void DefaultRecordAttributes (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   AttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4197,15 +4197,15 @@ static void RecordFieldPragma (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_ldirectivetok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ldirectivetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_ldirectivetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldPragmaExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok)) | (1 << (mcReserved_rdirectivetok-mcReserved_eoftok))), stopset1, stopset2);
       while (mcLexBuf_currenttoken == mcReserved_commatok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           FieldPragmaExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rdirectivetok-mcReserved_eoftok)) | (1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
         }
        /* while  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rdirectivetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rdirectivetok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -4237,9 +4237,9 @@ static void PragmaConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 {
   if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
 }
 
@@ -4255,9 +4255,9 @@ static void PragmaConstExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, Set
 static void AttributeExpression (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
   Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4274,7 +4274,7 @@ static void FieldListSequence (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   FieldListStatement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_semicolontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_semicolontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_semicolontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldListStatement (stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4313,29 +4313,29 @@ static void FieldList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stop
   if (mcLexBuf_currenttoken == mcReserved_identtok)
     {
       IdentList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lsbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_proceduretok-mcReserved_arraytok)) | (1 << (mcReserved_pointertok-mcReserved_arraytok)) | (1 << (mcReserved_packedsettok-mcReserved_arraytok)) | (1 << (mcReserved_oftok-mcReserved_arraytok)) | (1 << (mcReserved_arraytok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_settok-mcReserved_recordtok)) | (1 << (mcReserved_recordtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok))));
       Type (stopset0|(SetOfStop0) ((1 << (mcReserved_ldirectivetok-mcReserved_eoftok))), stopset1, stopset2);
       RecordFieldPragma (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_casetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_casetok), stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_casetok, stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       CaseTag (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_oftok-mcReserved_arraytok))), stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_oftok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_oftok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       Varient (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
       while (mcLexBuf_currenttoken == mcReserved_bartok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_bartok), stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+          Expect (mcReserved_bartok, stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok)) | (1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
           Varient (stopset0|(SetOfStop0) ((1 << (mcReserved_bartok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_elsetok-mcReserved_arraytok))), stopset2);
         }
        /* while  */
       if (mcLexBuf_currenttoken == mcReserved_elsetok)
         {
-          Expect (static_cast<mcReserved_toktype> (mcReserved_elsetok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+          Expect (mcReserved_elsetok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok)) | (1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
           FieldListSequence (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_endtok-mcReserved_arraytok))), stopset2);
         }
-      Expect (static_cast<mcReserved_toktype> (mcReserved_endtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_endtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4375,7 +4375,7 @@ static void CaseTag (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
   TagIdent (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_colontok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Qualident (stopset0, stopset1, stopset2);
     }
 }
@@ -4394,7 +4394,7 @@ static void Varient (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopse
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))))) != 0))))
     {
       VarientCaseLabelList (stopset0|(SetOfStop0) ((1 << (mcReserved_colontok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_colontok), stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_colontok, stopset0|(SetOfStop0) ((1 << (mcReserved_semicolontok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_casetok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       FieldListSequence (stopset0, stopset1, stopset2);
     }
 }
@@ -4413,7 +4413,7 @@ static void VarientCaseLabelList (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   VarientCaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       VarientCaseLabels (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4433,7 +4433,7 @@ static void VarientCaseLabels (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   ConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       ConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4472,42 +4472,42 @@ static void SilentRelation (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2
 {
   if (mcLexBuf_currenttoken == mcReserved_equaltok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_equaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_equaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_hashtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_hashtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_hashtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessgreatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessgreatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessgreatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_lessequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lessequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_lessequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greatertok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_greaterequaltok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greaterequaltok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greaterequaltok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_intok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_intok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_intok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4552,13 +4552,13 @@ static void SilentUnaryOrConstTerm (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_plustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       SilentConstTerm (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+      Expect (mcReserved_minustok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
       SilentConstTerm (stopset0, stopset1, stopset2);
     }
   else if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_eoftok)) & ((SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))))) != 0))) || (mcLexBuf_currenttoken == mcReserved_nottok)) || ((mcLexBuf_currenttoken >= mcReserved_recordtok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_recordtok)) & ((SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))))) != 0))))
@@ -4586,17 +4586,17 @@ static void SilentAddOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_plustok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_plustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_plustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_minustok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_minustok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_minustok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ortok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ortok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ortok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4639,37 +4639,37 @@ static void SilentMulOperator (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 {
   if (mcLexBuf_currenttoken == mcReserved_timestok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_timestok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_timestok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_dividetok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_dividetok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_dividetok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_divtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_divtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_divtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_modtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_modtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_modtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_remtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_remtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_remtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_andtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_andtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_andtok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_ambersandtok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_ambersandtok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_ambersandtok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4710,14 +4710,14 @@ static void SilentConstFactor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
   else if (mcLexBuf_currenttoken == mcReserved_lparatok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_nottok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_nottok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_nottok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstFactor (stopset0, stopset1, stopset2);
     }
   else if (mcLexBuf_currenttoken == mcReserved_attributetok)
@@ -4759,13 +4759,13 @@ static void SilentConstString (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfSt
 
 static void SilentConstAttribute (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_attributetok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
-  Expect (static_cast<mcReserved_toktype> (mcReserved_builtintok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+  Expect (mcReserved_attributetok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_builtintok-mcReserved_recordtok))));
+  Expect (mcReserved_builtintok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_lparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_lesstok-mcReserved_eoftok))), stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
   SilentConstAttributeExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
-  Expect (static_cast<mcReserved_toktype> (mcReserved_rparatok), stopset0, stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0|(SetOfStop0) ((1 << (mcReserved_rparatok-mcReserved_eoftok))), stopset1, stopset2);
+  Expect (mcReserved_rparatok, stopset0, stopset1, stopset2);
 }
 
 
@@ -4787,11 +4787,11 @@ static void SilentConstAttributeExpression (SetOfStop0 stopset0, SetOfStop1 stop
   else if (mcLexBuf_currenttoken == mcReserved_lesstok)
     {
       /* avoid dangling else.  */
-      Expect (static_cast<mcReserved_toktype> (mcReserved_lesstok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
+      Expect (mcReserved_lesstok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_identtok-mcReserved_recordtok))));
       Ident (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0, stopset1, stopset2|(SetOfStop2) ((1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstString (stopset0|(SetOfStop0) ((1 << (mcReserved_greatertok-mcReserved_eoftok))), stopset1, stopset2);
-      Expect (static_cast<mcReserved_toktype> (mcReserved_greatertok), stopset0, stopset1, stopset2);
+      Expect (mcReserved_greatertok, stopset0, stopset1, stopset2);
     }
   else
     {
@@ -4814,7 +4814,7 @@ static void SilentComponentElement (SetOfStop0 stopset0, SetOfStop1 stopset1, Se
   SilentConstExpression (stopset0|(SetOfStop0) ((1 << (mcReserved_periodperiodtok-mcReserved_eoftok))), stopset1, stopset2);
   if (mcLexBuf_currenttoken == mcReserved_periodperiodtok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_periodperiodtok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_periodperiodtok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4833,7 +4833,7 @@ static void SilentComponentValue (SetOfStop0 stopset0, SetOfStop1 stopset1, SetO
   SilentComponentElement (stopset0, stopset1|(SetOfStop1) ((1 << (mcReserved_bytok-mcReserved_arraytok))), stopset2);
   if (mcLexBuf_currenttoken == mcReserved_bytok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_bytok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_bytok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentConstExpression (stopset0, stopset1, stopset2);
     }
 }
@@ -4852,7 +4852,7 @@ static void SilentArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1,
   SilentComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
   while (mcLexBuf_currenttoken == mcReserved_commatok)
     {
-      Expect (static_cast<mcReserved_toktype> (mcReserved_commatok), stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
+      Expect (mcReserved_commatok, stopset0|(SetOfStop0) ((1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok))));
       SilentComponentValue (stopset0|(SetOfStop0) ((1 << (mcReserved_commatok-mcReserved_eoftok))), stopset1, stopset2);
     }
    /* while  */
@@ -4869,12 +4869,12 @@ static void SilentArraySetRecordValue (SetOfStop0 stopset0, SetOfStop1 stopset1,
 
 static void SilentConstructor (SetOfStop0 stopset0, SetOfStop1 stopset1, SetOfStop2 stopset2)
 {
-  Expect (static_cast<mcReserved_toktype> (mcReserved_lcbratok), stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
+  Expect (mcReserved_lcbratok, stopset0|(SetOfStop0) ((1 << (mcReserved_rcbratok-mcReserved_eoftok)) | (1 << (mcReserved_plustok-mcReserved_eoftok)) | (1 << (mcReserved_minustok-mcReserved_eoftok)) | (1 << (mcReserved_lparatok-mcReserved_eoftok)) | (1 << (mcReserved_lcbratok-mcReserved_eoftok))), stopset1|(SetOfStop1) ((1 << (mcReserved_nottok-mcReserved_arraytok))), stopset2|(SetOfStop2) ((1 << (mcReserved_realtok-mcReserved_recordtok)) | (1 << (mcReserved_integertok-mcReserved_recordtok)) | (1 << (mcReserved_stringtok-mcReserved_recordtok)) | (1 << (mcReserved_identtok-mcReserved_recordtok)) | (1 << (mcReserved_attributetok-mcReserved_recordtok))));
   if ((((mcLexBuf_currenttoken < mcReserved_arraytok) && ((((1 << (mcLexBuf_currenttoken-mcReserved_[...]

[diff truncated at 524288 bytes]


More information about the Gcc-cvs mailing list